Implandação da customização das permissões dos usuarios e das notificaçoes
This commit is contained in:
@@ -34,14 +34,17 @@
|
||||
<%# Navegação %>
|
||||
<nav class="px-3 py-4 space-y-1 flex-1 overflow-y-auto">
|
||||
|
||||
<%# Dashboard — admin/gerente/operador/externo (todos menos motorista) %>
|
||||
<% unless current_user.motorista? %>
|
||||
<%# Cada item pergunta por PERMISSÃO, não por papel: o menu é o espelho do
|
||||
perfil que o ADM montou (Permissao::TODAS). Item sem permissão SOME — não
|
||||
fica desabilitado, para não anunciar o que a pessoa não pode fazer. %>
|
||||
<% if current_user.pode?('dashboard.ver') %>
|
||||
<%= nav_link_to 'Dashboard', dashboard_path, icon: :dashboard %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('dashboard.operacoes') %>
|
||||
<%= nav_link_to 'Operações', operacoes_dashboard_path, icon: :operacoes %>
|
||||
<% end %>
|
||||
|
||||
<%# Consolidações — só quem pode consolidar (exclui o externo) %>
|
||||
<% if current_user.pode_consolidar? %>
|
||||
<% if current_user.pode?('consolidacao.ver') %>
|
||||
<%= nav_link_to 'Consolidações', consolidacoes_path, icon: :consolidacoes %>
|
||||
<%= nav_link_to 'Arquivadas', arquivadas_consolidacoes_path, icon: :arquivadas %>
|
||||
<% end %>
|
||||
@@ -51,29 +54,55 @@
|
||||
<%= nav_link_to 'Meu Painel', motorista_dashboard_path, icon: :painel %>
|
||||
<% end %>
|
||||
|
||||
<%# Admin/Gerente — Configurações %>
|
||||
<% if current_user.pode_ver_config? %>
|
||||
<%# Administração — a seção inteira some quando nenhum item dela está liberado. %>
|
||||
<% itens_admin = %w[admin.usuarios admin.perfis admin.configuracoes admin.auditoria
|
||||
admin.planilha_simpli_route admin.edicao_lancamento] %>
|
||||
<% if itens_admin.any? { |chave| current_user.pode?(chave) } %>
|
||||
<div class="pt-4 mt-4 border-t border-[#2a2a2a]">
|
||||
<p class="px-3 text-xs text-gray-600 uppercase tracking-wider mb-2">Administração</p>
|
||||
<%= nav_link_to 'Usuários', admin_usuarios_path, icon: :usuarios %>
|
||||
<%= nav_link_to 'Configurações', admin_configuracoes_path, icon: :configuracoes %>
|
||||
<%= nav_link_to 'Auditoria', admin_auditoria_logs_path, icon: :auditoria %>
|
||||
<%= nav_link_to 'Planilha SimpliRoute', admin_planilha_simpli_route_path, icon: :planilha %>
|
||||
<% if current_user.admin? %>
|
||||
<% if current_user.pode?('admin.usuarios') %>
|
||||
<%= nav_link_to 'Usuários', admin_usuarios_path, icon: :usuarios %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('admin.perfis') %>
|
||||
<%= nav_link_to 'Perfis de acesso', admin_perfis_path, icon: :chave %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('admin.configuracoes') %>
|
||||
<%= nav_link_to 'Configurações', admin_configuracoes_path, icon: :configuracoes %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('admin.auditoria') %>
|
||||
<%= nav_link_to 'Auditoria', admin_auditoria_logs_path, icon: :auditoria %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('admin.planilha_simpli_route') %>
|
||||
<%= nav_link_to 'Planilha SimpliRoute', admin_planilha_simpli_route_path, icon: :planilha %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('admin.edicao_lancamento') %>
|
||||
<%= nav_link_to 'Editar Lançamento', admin_edicao_lancamento_path, icon: :editar_lancamento %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%# Notificações: quem recebe (grupos/contatos) é admin+gerente; ligar o
|
||||
WhatsApp e criar eventos manda mensagem em nome da empresa — só ADM.
|
||||
Mesmo recorte das policies. %>
|
||||
<% end %>
|
||||
|
||||
<%# Notificações — cada item com sua chave: ver contatos é uma coisa; ligar o
|
||||
WhatsApp e disparar mensagem em nome da empresa é outra. %>
|
||||
<% itens_notif = %w[notificacao.contatos notificacao.envios notificacao.eventos
|
||||
notificacao.variaveis notificacao.whatsapp_sessao] %>
|
||||
<% if itens_notif.any? { |chave| current_user.pode?(chave) } %>
|
||||
<div class="pt-4 mt-4 border-t border-[#2a2a2a]">
|
||||
<p class="px-3 text-xs text-gray-600 uppercase tracking-wider mb-2">Notificações</p>
|
||||
<%= nav_link_to 'Contatos', admin_contatos_path, icon: :usuarios %>
|
||||
<%= nav_link_to 'Grupos', admin_grupos_path, icon: :tag %>
|
||||
<%= nav_link_to 'Envios', admin_envios_path, icon: :historico %>
|
||||
<% if current_user.admin? %>
|
||||
<% if current_user.pode?('notificacao.contatos') %>
|
||||
<%= nav_link_to 'Contatos', admin_contatos_path, icon: :usuarios %>
|
||||
<%= nav_link_to 'Grupos', admin_grupos_path, icon: :tag %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('notificacao.envios') %>
|
||||
<%= nav_link_to 'Envios', admin_envios_path, icon: :historico %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('notificacao.eventos') %>
|
||||
<%= nav_link_to 'Eventos', admin_eventos_path, icon: :diario %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('notificacao.variaveis') %>
|
||||
<%= nav_link_to 'Variáveis', admin_variaveis_path, icon: :tag %>
|
||||
<% end %>
|
||||
<% if current_user.pode?('notificacao.whatsapp_sessao') %>
|
||||
<%= nav_link_to 'WhatsApp', admin_whatsapp_sessao_path, icon: :telefone %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user