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,24 @@
# app/policies/contato_policy.rb
#
# Contatos e grupos são a lista de quem recebe mensagem em nome da empresa —
# admin e gerente administram, operador não.
#
# ⚠️ Cada action nova do controller precisa de um `<action>?` aqui, senão o
# `authorize` estoura.
# Contatos e grupos (GrupoContatoPolicy herda esta) — quem RECEBE as mensagens.
class ContatoPolicy < ApplicationPolicy
def index? = admin_ou_gerente?
def show? = admin_ou_gerente?
def create? = admin_ou_gerente?
def new? = create?
def update? = admin_ou_gerente?
def edit? = update?
def destroy? = admin?
def index? = pode?('notificacao.contatos')
def show? = index?
def create? = pode?('notificacao.contatos_gerenciar')
def new? = create?
def update? = create?
def edit? = update?
# Excluir destinatário é separado de editar: some do histórico de quem recebe.
def destroy? = pode?('notificacao.contatos_excluir')
# Grupos do WhatsApp carregados sob demanda pelo form.
def grupos_whatsapp? = create?
class Scope < Scope
def resolve = scope.all
def resolve
user.pode?('notificacao.contatos') ? scope.all : scope.none
end
end
end