36 lines
1.0 KiB
Ruby
36 lines
1.0 KiB
Ruby
# app/controllers/application_controller.rb
|
|
class ApplicationController < ActionController::Base
|
|
include Pundit::Authorization
|
|
include Pagy::Backend
|
|
|
|
before_action :authenticate_user!
|
|
before_action :set_tema
|
|
before_action :preparar_splash
|
|
|
|
# Pundit: redireciona se não autorizado
|
|
rescue_from Pundit::NotAuthorizedError do |e|
|
|
flash[:alert] = "Você não tem permissão para realizar esta ação."
|
|
redirect_to root_path
|
|
end
|
|
|
|
private
|
|
|
|
def set_tema
|
|
@tema = current_user&.tema_preferido || 'dark'
|
|
end
|
|
|
|
# Mostra a animação de abertura uma única vez, na primeira página HTML após o
|
|
# login. O flag é gravado em #after_sign_in_path_for (Devise) e nos logins do
|
|
# motorista (PIN/QR); aqui ele é lido e apagado (one-shot).
|
|
def preparar_splash
|
|
return unless request.get? && request.format.html?
|
|
|
|
@mostrar_splash = session.delete(:mostrar_splash)
|
|
end
|
|
|
|
def after_sign_in_path_for(resource)
|
|
session[:mostrar_splash] = true
|
|
resource.motorista? ? motorista_dashboard_path : dashboard_path
|
|
end
|
|
end
|