0
0
Fork 0

Adding e-mail confirmations

This commit is contained in:
Eugen Rochko 2016-10-03 16:38:22 +02:00
parent b3c7c8700d
commit fc198a8b4c
15 changed files with 72 additions and 36 deletions

View file

@ -104,6 +104,7 @@ body {
.logo-container {
max-width: 400px;
margin: 100px auto;
margin-bottom: 0;
cursor: default;
@media screen and (max-width: 360px) {
@ -276,6 +277,13 @@ body {
}
}
.flash-message {
text-align: center;
font-size: 14px;
margin-bottom: 30px;
font-weight: 500;
}
.form-footer {
margin-top: 30px;
text-align: center;

View file

@ -10,7 +10,7 @@ class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, with: :not_found
rescue_from ActiveRecord::RecordNotFound, with: :not_found
before_filter :store_current_location, :unless => :devise_controller?
before_action :store_current_location, :unless => :devise_controller?
def raise_not_found
raise ActionController::RoutingError, "No route matches #{params[:unmatched_route]}"

View file

@ -0,0 +1,3 @@
class Auth::ConfirmationsController < Devise::ConfirmationsController
layout 'auth'
end

View file

@ -12,6 +12,12 @@ class Auth::SessionsController < Devise::SessionsController
protected
def after_sign_in_path_for(_resource)
stored_location_for(:user) || root_path
last_url = stored_location_for(:user)
if [about_path].include?(last_url)
root_path
else
last_url || root_path
end
end
end

View file

@ -1,5 +1,5 @@
class User < ApplicationRecord
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable
belongs_to :account, inverse_of: :user
accepts_nested_attributes_for :account

View file

@ -0,0 +1,9 @@
= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
= devise_error_messages!
.field
= f.email_field :email, autofocus: true, required: true, placeholder: 'E-mail address'
.actions
= f.button "Resend confirmation instructions", type: 'submit'
.form-footer= render "auth/shared/links"

View file

@ -0,0 +1,5 @@
<p>Welcome <%= @resource.email %>!</p>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>

View file

@ -1,25 +0,0 @@
<h2>Change your password</h2>
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
<%= devise_error_messages! %>
<%= f.hidden_field :reset_password_token %>
<div class="field">
<%= f.label :password, "New password" %><br />
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em><br />
<% end %>
<%= f.password_field :password, autofocus: true, autocomplete: "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation, "Confirm new password" %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>
<div class="actions">
<%= f.submit "Change my password" %>
</div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -0,0 +1,12 @@
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
= devise_error_messages!
= f.hidden_field :reset_password_token
.field
= f.password_field :password, autofocus: true, autocomplete: "off", placeholder: 'New password'
.field
= f.password_field :password_confirmation, autocomplete: "off", placeholder: 'Confirm new password'
.actions
= f.button "Change my password", type: :submit
= render "devise/shared/links"

View file

@ -13,7 +13,3 @@
- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
%li= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name)
- if devise_mapping.omniauthable?
- resource_class.omniauth_providers.each do |provider|
%li= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider)

View file

@ -7,6 +7,12 @@
%small= Rails.configuration.x.local_domain
.form-container
- if flash[:notice]
.flash-message.notice= flash[:notice]
- if flash[:alert]
.flash-message.alert= flash[:alert]
= yield
= render template: "layouts/application"