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

@@ -6,4 +6,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
# Sem esta linha, ConfiguracaoNotificacao procuraria a tabela
# "configuracao_notificacaos" (o irregular acima só casa no FIM da palavra).
inflect.irregular 'notificacao', 'notificacoes'
# Sem isto, "perfis".singularize vira "perfi" e as rotas de perfil de acesso
# gerariam helpers como `new_admin_perfi_path`.
inflect.irregular 'perfil', 'perfis'
end

View File

@@ -7,3 +7,9 @@ pt-BR:
formats:
default: "%d/%m/%Y %H:%M"
short: "%d/%m %H:%M"
# Mensagem de login recusado para conta desativada (User#inactive_message).
# Sem esta chave, o Devise mostraria o símbolo cru "conta_desativada".
devise:
failure:
conta_desativada: "Sua conta está desativada. Fale com um administrador."

View File

@@ -12,6 +12,10 @@ Rails.application.routes.draw do
# Root — redireciona por role
root 'dashboard#index'
# Fim de linha para quem está autenticado mas o perfil não libera nenhuma tela.
# Existe para o "acesso negado" ter para onde ir sem cair em loop com a raiz.
get '/sem-acesso', to: 'paginas#sem_acesso', as: :sem_acesso
# Dashboard principal (admin/gerente/operador)
get '/dashboard', to: 'dashboard#index', as: :dashboard
get '/dashboard/relatorio_financeiro', to: 'dashboard#relatorio_financeiro', as: :dashboard_relatorio_financeiro
@@ -99,6 +103,12 @@ Rails.application.routes.draw do
end
resources :auditoria_logs, only: [:index]
# Perfis de acesso: o ADM monta o conjunto de permissões e atribui ao
# usuário. Rota `perfis` (e não `perfis_acesso`) pelo mesmo motivo de
# `grupos`/`eventos` mais abaixo — nome de rota curto evita o sufixo `_index`
# que o Inflector cria quando singular == plural.
resources :perfis, except: [:show], controller: 'perfis_acesso'
# SMTP e WhatsApp (Twilio) gravados no banco — só admin.
# Sem rotas `testar_*`: os botões de teste são submits do próprio form
# (params[:acao]), para o teste usar exatamente o que está na tela.
@@ -135,6 +145,9 @@ Rails.application.routes.draw do
# faria o cadastro de contato inteiro esperar o timeout.
collection { get :grupos_whatsapp }
end
# Variáveis {{assim}} criadas pelo ADM, usáveis em qualquer mensagem.
resources :variaveis, except: [:show], controller: 'variaveis_personalizadas'
resources :eventos, except: [:show], controller: 'eventos_notificacao' do
member do
post :disparar # gatilho `manual` — manda mensagem de verdade