Fases 4, 5 e 6 — Job 1h + Auditoria + Consolidação + Wizard de validação

This commit is contained in:
2026-06-11 12:02:50 -03:00
parent b77fc0122c
commit 90ed705ed8
29 changed files with 1617 additions and 616 deletions

View File

@@ -3,44 +3,15 @@ class ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
raise Pundit::NotAuthorizedError, 'Você precisa estar logado.' unless user
@user = user
@record = record
end
def index? = false
def show? = false
def create? = false
def new? = create?
def update? = false
def edit? = update?
def destroy? = false
protected
def admin?
user.admin?
end
def gerente?
user.gerente?
end
def operador?
user.operador?
end
def motorista?
user.motorista?
end
def admin_ou_gerente?
admin? || gerente?
end
def admin_gerente_ou_operador?
admin? || gerente? || operador?
end
def index? = user.pode_consolidar? || user.admin?
def show? = user.pode_consolidar? || user.admin?
def create? = user.pode_consolidar? || user.admin?
def update? = user.pode_consolidar? || user.admin?
def destroy? = user.admin?
class Scope
def initialize(user, scope)
@@ -49,7 +20,7 @@ class ApplicationPolicy
end
def resolve
raise NotImplementedError, "#{self.class}#resolve não implementado"
@scope.all
end
private

View File

@@ -0,0 +1,15 @@
# app/policies/consolidacao_policy.rb
class ConsolidacaoPolicy < ApplicationPolicy
def index? = user.pode_consolidar?
def show? = user.pode_consolidar?
def create? = user.pode_consolidar?
def update? = user.pode_consolidar? && !record_finalizada_para_operador?
def destroy? = user.admin? || user.gerente?
private
# Operador não mexe em consolidação finalizada
def record_finalizada_para_operador?
record.respond_to?(:finalizada?) && record.finalizada? && user.operador?
end
end

View File

@@ -0,0 +1,10 @@
# app/policies/dashboard_policy.rb
class DashboardPolicy < Struct.new(:user, :dashboard)
def metricas?
user.admin? || user.gerente? || user.operador?
end
def index?
user.admin? || user.gerente?
end
end