Fases 7 e 8 — PDFs Prawn + QR + Painel Motorista + Notificações
This commit is contained in:
44
app/controllers/motorista/sessoes_controller.rb
Normal file
44
app/controllers/motorista/sessoes_controller.rb
Normal file
@@ -0,0 +1,44 @@
|
||||
# app/controllers/motorista/sessoes_controller.rb
|
||||
#
|
||||
# Login do motorista por PIN de 4 dígitos ou por QR Code (token do holerite).
|
||||
# Não usa Devise password — fluxo simplificado para público de baixo nível técnico.
|
||||
#
|
||||
module Motorista
|
||||
class SessoesController < ApplicationController
|
||||
skip_before_action :authenticate_user!
|
||||
layout 'application'
|
||||
|
||||
# GET /motorista/login — tela com teclado de PIN
|
||||
def new; end
|
||||
|
||||
# POST /motorista/login — valida PIN
|
||||
def create
|
||||
pin = params[:pin].to_s.strip
|
||||
user = User.motorista.ativos.find_by(pin_code: pin)
|
||||
|
||||
if pin.length == 4 && user
|
||||
sign_in(user)
|
||||
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}!"
|
||||
else
|
||||
flash.now[:alert] = 'PIN não encontrado. Confira os 4 números e tente de novo.'
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
# GET /motorista/acesso/:token — login via QR Code do holerite
|
||||
def acesso_qr
|
||||
user = User.motorista.ativos.find_by(login_token: params[:token])
|
||||
|
||||
if user
|
||||
sign_in(user)
|
||||
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}!"
|
||||
else
|
||||
redirect_to motorista_login_path, alert: 'QR Code inválido ou expirado. Entre com seu PIN.'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user