Implandação da customização das permissões dos usuarios e das notificaçoes
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user