Adição do Usuario Externo e Correção da data no dashboard

This commit is contained in:
2026-06-22 19:34:19 -03:00
parent 74391d5a0c
commit 5d5531b695
5 changed files with 22 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -57,6 +57,7 @@ module ApplicationHelper
when 'gerente' then { cor: 'bg-orange-800 text-white' }
when 'operador' then { cor: 'bg-gray-700 text-white' }
when 'motorista' then { cor: 'bg-gray-900 text-orange-400 border border-orange-500' }
when 'externo' then { cor: 'bg-blue-900 text-blue-200 border border-blue-500' }
else { cor: 'bg-gray-800 text-gray-400' }
end
label = User::ROLES_LABEL[role.to_s] || role.to_s.humanize

View File

@@ -7,13 +7,16 @@ class User < ApplicationRecord
:validatable
# ── Roles ──────────────────────────────────────────────────
enum role: { admin: 0, gerente: 1, operador: 2, motorista: 3 }
# externo: acesso somente-leitura ao dashboard (ex.: gerências de outras áreas
# que só precisam visualizar os indicadores). Login normal por e-mail/senha.
enum role: { admin: 0, gerente: 1, operador: 2, motorista: 3, externo: 4 }
ROLES_LABEL = {
'admin' => 'Administrador',
'gerente' => 'Gerente',
'operador' => 'Operador',
'motorista' => 'Motorista'
'motorista' => 'Motorista',
'externo' => 'Externo (só dashboard)'
}.freeze
# ── Validações ──────────────────────────────────────────────

View File

@@ -441,11 +441,19 @@
String(d.getMonth() + 1).padStart(2, '0') + '-' +
String(d.getDate()).padStart(2, '0');
// Os valores vêm em ISO (YYYY-MM-DD), mas o dateFormat exibido é d/m/Y.
// Convertendo para Date local antes evita o flatpickr interpretar errado
// (era a causa da caixa mostrar uma data solta em vez do período).
const parseISO = (s) => {
const [y, m, d] = s.split('-').map(Number);
return new Date(y, m - 1, d);
};
flatpickr(input, {
mode: 'range',
locale: 'pt',
locale: Object.assign({}, flatpickr.l10ns.pt, { rangeSeparator: ' até ' }),
dateFormat: 'd/m/Y',
defaultDate: [inicio, fim],
defaultDate: [parseISO(inicio), parseISO(fim)],
maxDate: 'today',
onClose: function (selectedDates) {
if (selectedDates.length === 0) return;

View File

@@ -25,6 +25,7 @@
<%= current_user.admin? ? 'bg-orange-500 text-black' :
current_user.gerente? ? 'bg-orange-800 text-white' :
current_user.operador? ? 'bg-gray-700 text-white' :
current_user.externo? ? 'bg-blue-900 text-blue-200 border border-blue-500' :
'bg-gray-900 text-orange-400 border border-orange-500' %>">
<%= current_user.role_label %>
</span>
@@ -33,9 +34,13 @@
<%# Navegação %>
<nav class="px-3 py-4 space-y-1 flex-1 overflow-y-auto">
<%# Dashboard — admin/gerente/operador %>
<%# Dashboard — admin/gerente/operador/externo (todos menos motorista) %>
<% unless current_user.motorista? %>
<%= nav_link_to '📊 Dashboard', dashboard_path %>
<% end %>
<%# Consolidações — só quem pode consolidar (exclui o externo) %>
<% if current_user.pode_consolidar? %>
<%= nav_link_to '📦 Consolidações', consolidacoes_path %>
<%= nav_link_to '📁 Arquivadas', arquivadas_consolidacoes_path %>
<% end %>