Implandação da customização das permissões dos usuarios e das notificaçoes

This commit is contained in:
2026-08-26 17:24:25 -03:00
parent 808c2c7545
commit 5bb5d74e22
71 changed files with 2487 additions and 269 deletions

View File

@@ -1,20 +1,42 @@
# app/policies/consolidacao_policy.rb
class ConsolidacaoPolicy < ApplicationPolicy
def index? = user.pode_consolidar?
def arquivadas? = 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?
def index? = pode?('consolidacao.ver')
def arquivadas? = index?
def show? = index?
def create? = pode?('consolidacao.criar')
def new? = create?
# Registrar/estornar pagamento: mesma régua de arquivar/excluir.
def registrar_pagamento? = user.admin? || user.gerente?
def cancelar_pagamento? = registrar_pagamento?
# Editar uma consolidação JÁ FINALIZADA é outra permissão: mexer depois do
# fechamento muda o valor que o motorista vai receber. Antes isso era "operador
# não pode, gerente pode" cravado no código.
def update?
pode?('consolidacao.editar') && (!record_finalizada? || pode?('consolidacao.editar_finalizada'))
end
def edit? = update?
def finalizar? = pode?('consolidacao.finalizar')
def finalizar_parcial? = finalizar?
def arquivar? = pode?('consolidacao.arquivar')
def reativar? = arquivar?
def destroy? = pode?('consolidacao.excluir')
def excluir_motorista? = destroy?
# Pagamento: registrar e estornar são chaves distintas — estornar desfaz algo
# que já foi comunicado ao motorista.
def registrar_pagamento? = pode?('consolidacao.registrar_pagamento')
def cancelar_pagamento? = pode?('consolidacao.cancelar_pagamento')
# Quem entra e quem sai do fechamento (sem excluir de vez).
def gerir_motoristas? = pode?('consolidacao.gerir_motoristas') && update?
def exportar_pdf? = pode?('consolidacao.exportar_pdf')
private
# Operador não mexe em consolidação finalizada
def record_finalizada_para_operador?
record.respond_to?(:finalizada?) && record.finalizada? && user.operador?
def record_finalizada?
record.respond_to?(:finalizada?) && record.finalizada?
end
end