60 lines
969 B
Ruby
60 lines
969 B
Ruby
# app/policies/application_policy.rb
|
|
class ApplicationPolicy
|
|
attr_reader :user, :record
|
|
|
|
def initialize(user, record)
|
|
raise Pundit::NotAuthorizedError, 'Você precisa estar logado.' unless user
|
|
@user = user
|
|
@record = record
|
|
end
|
|
|
|
def index? = false
|
|
def show? = false
|
|
def create? = false
|
|
def new? = create?
|
|
def update? = false
|
|
def edit? = update?
|
|
def destroy? = false
|
|
|
|
protected
|
|
|
|
def admin?
|
|
user.admin?
|
|
end
|
|
|
|
def gerente?
|
|
user.gerente?
|
|
end
|
|
|
|
def operador?
|
|
user.operador?
|
|
end
|
|
|
|
def motorista?
|
|
user.motorista?
|
|
end
|
|
|
|
def admin_ou_gerente?
|
|
admin? || gerente?
|
|
end
|
|
|
|
def admin_gerente_ou_operador?
|
|
admin? || gerente? || operador?
|
|
end
|
|
|
|
class Scope
|
|
def initialize(user, scope)
|
|
@user = user
|
|
@scope = scope
|
|
end
|
|
|
|
def resolve
|
|
raise NotImplementedError, "#{self.class}#resolve não implementado"
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :user, :scope
|
|
end
|
|
end
|