50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
# app/policies/application_policy.rb
|
|
class ApplicationPolicy
|
|
attr_reader :user, :record
|
|
|
|
def initialize(user, record)
|
|
@user = user
|
|
@record = record
|
|
end
|
|
|
|
def index? = user.pode_consolidar? || user.admin?
|
|
def show? = user.pode_consolidar? || user.admin?
|
|
def create? = user.pode_consolidar? || user.admin?
|
|
def new? = create?
|
|
def update? = user.pode_consolidar? || user.admin?
|
|
def edit? = update?
|
|
def destroy? = user.admin?
|
|
|
|
# Régua padrão de TODAS as policies: pergunta ao perfil de acesso do usuário
|
|
# (User#pode?), não ao papel dele. As chaves estão em Permissao::TODAS.
|
|
def pode?(chave)
|
|
user.pode?(chave)
|
|
end
|
|
|
|
# Helpers de papel — LEGADO. Continuam aqui porque `admin?` ainda distingue
|
|
# tipo de conta em pontos que não são permissão (ex.: escopo de listagem).
|
|
# Regra nova não deve usá-los: use `pode?`.
|
|
def admin?
|
|
user.admin?
|
|
end
|
|
|
|
def admin_ou_gerente?
|
|
user.admin? || user.gerente?
|
|
end
|
|
|
|
class Scope
|
|
def initialize(user, scope)
|
|
@user = user
|
|
@scope = scope
|
|
end
|
|
|
|
def resolve
|
|
@scope.all
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :user, :scope
|
|
end
|
|
end
|