You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

56 lines
1.3 KiB

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