implantação da fase 2 e 3
This commit is contained in:
@@ -3,15 +3,44 @@ 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? = user.pode_consolidar? || user.admin?
|
||||
def show? = user.pode_consolidar? || user.admin?
|
||||
def create? = user.pode_consolidar? || user.admin?
|
||||
def update? = user.pode_consolidar? || user.admin?
|
||||
def destroy? = user.admin?
|
||||
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)
|
||||
@@ -20,7 +49,7 @@ class ApplicationPolicy
|
||||
end
|
||||
|
||||
def resolve
|
||||
@scope.all
|
||||
raise NotImplementedError, "#{self.class}#resolve não implementado"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
20
app/policies/configuracao_policy.rb
Normal file
20
app/policies/configuracao_policy.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
# app/policies/configuracao_policy.rb
|
||||
class ConfiguracaoPolicy < ApplicationPolicy
|
||||
def index?
|
||||
admin_ou_gerente?
|
||||
end
|
||||
|
||||
def edit?
|
||||
admin?
|
||||
end
|
||||
|
||||
def update?
|
||||
admin?
|
||||
end
|
||||
|
||||
class Scope < Scope
|
||||
def resolve
|
||||
scope.all
|
||||
end
|
||||
end
|
||||
end
|
||||
46
app/policies/user_policy.rb
Normal file
46
app/policies/user_policy.rb
Normal file
@@ -0,0 +1,46 @@
|
||||
# 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
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user