Tutte le view marketing, legali, viewer, dashboard e admin usano t(); mailer utente-facing e flash localizzati; admin con LocaleResolver e selettore lingua. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.3 KiB
Ruby
53 lines
1.3 KiB
Ruby
module Admin
|
|
class BaseController < ActionController::Base
|
|
layout "admin"
|
|
protect_from_forgery with: :exception
|
|
|
|
before_action :set_admin_locale
|
|
before_action :require_admin_login
|
|
|
|
include ::AdminHelper
|
|
helper ApplicationHelper
|
|
helper RecordingsArchiveHelper
|
|
helper_method :current_admin_account, :admin_logged_in?, :current_locale, :language_options, :current_language_option
|
|
|
|
private
|
|
|
|
def set_admin_locale
|
|
I18n.locale = LocaleResolver.resolve(
|
|
cookie_jar: request.cookie_jar,
|
|
accept_language: request.get_header("HTTP_ACCEPT_LANGUAGE")
|
|
)
|
|
end
|
|
|
|
def current_locale
|
|
I18n.locale
|
|
end
|
|
|
|
def language_options
|
|
LocaleResolver.language_options
|
|
end
|
|
|
|
def current_language_option
|
|
LocaleResolver.current_language_option
|
|
end
|
|
|
|
def require_admin_login
|
|
return if admin_logged_in?
|
|
|
|
session[:admin_return_to] = request.fullpath unless request.path == admin_login_path
|
|
redirect_to admin_login_path, alert: t("admin.flash.login_required")
|
|
end
|
|
|
|
def current_admin_account
|
|
return unless session[:admin_account_id]
|
|
|
|
@current_admin_account ||= AdminAccount.find_by(id: session[:admin_account_id])
|
|
end
|
|
|
|
def admin_logged_in?
|
|
current_admin_account.present?
|
|
end
|
|
end
|
|
end
|