70 lines
846 B
Ruby
70 lines
846 B
Ruby
# frozen_string_literal: true
|
|
|
|
class ApplicationPolicy
|
|
attr_reader :user, :record
|
|
|
|
def initialize(user, record)
|
|
@user = user
|
|
@record = record
|
|
end
|
|
|
|
def index?
|
|
false
|
|
end
|
|
|
|
def show?
|
|
false
|
|
end
|
|
|
|
def create?
|
|
false
|
|
end
|
|
|
|
def new?
|
|
create?
|
|
end
|
|
|
|
def update?
|
|
false
|
|
end
|
|
|
|
def edit?
|
|
update?
|
|
end
|
|
|
|
def destroy?
|
|
false
|
|
end
|
|
|
|
def admin_required?
|
|
user&.admin?
|
|
end
|
|
|
|
def teacher_required?
|
|
user&.teacher?
|
|
end
|
|
|
|
def student_required?
|
|
user&.student?
|
|
end
|
|
|
|
def teacher_or_admin_required?
|
|
admin_required? || teacher_required?
|
|
end
|
|
|
|
class Scope
|
|
def initialize(user, scope)
|
|
@user = user
|
|
@scope = scope
|
|
end
|
|
|
|
def resolve
|
|
raise NoMethodError, "You must define #resolve in #{self.class}"
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :user, :scope
|
|
end
|
|
end
|