Include autenticazione, progetti isolati, mail marketing HTML con SMTP, test A/B e editor WYSIWYG. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
module Authentication
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_action :require_login
|
|
helper_method :current_user, :logged_in?
|
|
end
|
|
|
|
private
|
|
|
|
def current_user
|
|
@current_user ||= session[:user_id] ? User.find_by(id: session[:user_id]) : nil
|
|
end
|
|
|
|
def logged_in?
|
|
current_user.present? && current_user.active?
|
|
end
|
|
|
|
def require_login
|
|
if current_user.present? && !current_user.active?
|
|
logout
|
|
redirect_to login_path, alert: "Il tuo account è stato disabilitato."
|
|
return
|
|
end
|
|
return if logged_in?
|
|
|
|
redirect_to login_path, alert: "Effettua l'accesso per continuare."
|
|
end
|
|
|
|
def require_admin
|
|
return if current_user&.admin? && current_user.active?
|
|
|
|
redirect_to root_path, alert: "Accesso riservato agli amministratori."
|
|
end
|
|
|
|
def login_as(user)
|
|
reset_session
|
|
session[:user_id] = user.id
|
|
@current_user = user
|
|
Current.user = user
|
|
end
|
|
|
|
def logout
|
|
reset_session
|
|
@current_user = nil
|
|
Current.user = nil
|
|
end
|
|
|
|
def set_current_user
|
|
Current.user = current_user
|
|
end
|
|
end
|