class Admin::SessionsController < Admin::AdminController
|
|
|
|
layout 'sessions'
|
|
|
|
skip_before_action :authenticate_user!, except: %i[destroy]
|
|
skip_before_action :only_admin!
|
|
|
|
def index
|
|
render action: 'new'
|
|
end
|
|
|
|
|
|
def create
|
|
if user = User.enabled.authenticate_by(params.permit(:email, :password))
|
|
# login user
|
|
# redirect_back_or_default(admin_root_path(locale: I18n.default_locale))
|
|
|
|
session[:verify_user_id] = user.id
|
|
UserMailer.with(user: user, verification_code: user.verification_codes.create).verify_email.deliver_later
|
|
|
|
redirect_to action: 'verification', locale: nil
|
|
|
|
else
|
|
flash.now.alert = t :'sessions.login_failed'
|
|
render action: 'new', status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
|
|
def destroy
|
|
logout current_user
|
|
redirect_to root_path
|
|
end
|
|
|
|
|
|
# GET
|
|
def verification
|
|
|
|
end
|
|
|
|
|
|
# POST
|
|
def verify
|
|
if params[:verification_code] =~ /\A\d{6}\z/ and
|
|
user = User.enabled.find(session[:verify_user_id]) and
|
|
user.verification_codes.valid.find_by(token: params[:verification_code])
|
|
|
|
login user
|
|
redirect_back_or_default(admin_root_path(locale: I18n.default_locale))
|
|
else
|
|
flash.now.alert = t :'sessions.verification_failed'
|
|
render "verification"
|
|
end
|
|
end
|
|
|
|
end
|