diff --git a/Imagens para implantação /Videos/copmo ficou.mp4 b/Imagens para implantação /Videos/copmo ficou.mp4 new file mode 100644 index 0000000..9f917bc Binary files /dev/null and b/Imagens para implantação /Videos/copmo ficou.mp4 differ diff --git a/Imagens para implantação /Videos/copmo ficou.webm b/Imagens para implantação /Videos/copmo ficou.webm new file mode 100644 index 0000000..53ab65c Binary files /dev/null and b/Imagens para implantação /Videos/copmo ficou.webm differ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 15570d5..76e68e7 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -5,6 +5,7 @@ class ApplicationController < ActionController::Base before_action :authenticate_user! before_action :set_tema + before_action :preparar_splash # Pundit: redireciona se não autorizado rescue_from Pundit::NotAuthorizedError do |e| @@ -18,11 +19,17 @@ class ApplicationController < ActionController::Base @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) - if resource.motorista? - motorista_dashboard_path - else - dashboard_path - end + session[:mostrar_splash] = true + resource.motorista? ? motorista_dashboard_path : dashboard_path end end diff --git a/app/controllers/motorista/sessoes_controller.rb b/app/controllers/motorista/sessoes_controller.rb index 3b516c8..912b9d8 100644 --- a/app/controllers/motorista/sessoes_controller.rb +++ b/app/controllers/motorista/sessoes_controller.rb @@ -18,6 +18,7 @@ module Motorista if pin.length == 4 && user sign_in(user) + session[:mostrar_splash] = true AuditoriaLog.registrar(user: user, acao: :login, entidade: 'User', entidade_id: user.id, request: request) redirect_to motorista_dashboard_path, notice: "Bem-vindo, #{user.nome.split.first}!" @@ -33,6 +34,7 @@ module Motorista if user sign_in(user) + session[:mostrar_splash] = true AuditoriaLog.registrar(user: user, acao: :login, entidade: 'User', entidade_id: user.id, dados_novos: { via: 'qr_code' }, request: request) redirect_to motorista_dashboard_path, notice: "Bem-vindo, #{user.nome.split.first}!" diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 614f3ac..fa078ee 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -63,6 +63,38 @@ + <%# ── Animação de abertura (uma vez, logo após o login) ── %> + <% if @mostrar_splash %> +
+ + +
+ + <% end %> + <%# ── Navbar ─────────────────────────────────────────── %> <% if user_signed_in? %> <%= render 'layouts/navbar' %> diff --git a/public/login-animacao.mp4 b/public/login-animacao.mp4 new file mode 100644 index 0000000..9f917bc Binary files /dev/null and b/public/login-animacao.mp4 differ diff --git a/public/login-animacao.webm b/public/login-animacao.webm new file mode 100644 index 0000000..53ab65c Binary files /dev/null and b/public/login-animacao.webm differ