Files
Reem-Notas/app/policies/user_policy.rb
victor bb1dead9fd Corrige 3 erros de runtime + filtro de faixa de datas no dashboard
Erros corrigidos (reportados em prints):
- Logout dava "No route matches [GET] /auth/logout": link usava method:
  :delete (rails-ujs), que o Turbo ignora -> agora data-turbo-method
- /admin/usuarios estourava NoMethodError 'admin_ou_gerente?'/'admin?' na
  UserPolicy -> adicionados helpers que delegam para o User
- Nova consolidação estourava NoMethodError 'new?' na ConsolidacaoPolicy ->
  ApplicationPolicy passa a definir new? (= create?) e edit? (= update?)

Dashboard:
- Substitui a navegação por mês por um filtro de calendário com faixa de
  datas (Flatpickr, range mode) que auto-submete inicio/fim
- Controller passa a consultar por período (Entrega.no_periodo) em vez de
  do_mes; gráfico diário limitado a ~1 trimestre

Specs: UserPolicy + new? na ConsolidacaoPolicy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 22:27:57 -03:00

60 lines
797 B
Ruby

# app/policies/user_policy.rb
class UserPolicy < ApplicationPolicy
def index?
admin_ou_gerente?
end
def show?
admin? || record == user
end
def create?
admin?
end
def new?
create?
end
def update?
admin? || record == user
end
def edit?
update?
end
def destroy?
admin? && record != user
end
def toggle_ativo?
admin?
end
private
# Helpers de papel usados pelas permissões acima (delegam para o User)
def admin?
user.admin?
end
def admin_ou_gerente?
user.admin? || user.gerente?
end
public
class Scope < Scope
def resolve
if user.admin?
scope.all
elsif user.gerente?
scope.where.not(role: :admin)
else
scope.where(id: user.id)
end
end
end
end