36 lines
704 B
Ruby
36 lines
704 B
Ruby
# frozen_string_literal: true
|
|
class QuizPolicy < ApplicationPolicy
|
|
# Quiz Access Policy
|
|
#
|
|
# Only Admins and Managers can create or update a quiz (and its questions)
|
|
# Reviewers can view any quiz they are linked to
|
|
# Recruiters can only list quiz names (for candidate assignments)
|
|
|
|
def index?
|
|
true
|
|
end
|
|
|
|
def view?
|
|
return true if user.acts_as_manager?
|
|
user.quizzes.include? record
|
|
end
|
|
|
|
def create?
|
|
user.acts_as_manager?
|
|
end
|
|
|
|
def update?
|
|
user.acts_as_manager?
|
|
end
|
|
|
|
class Scope < Scope
|
|
def resolve
|
|
if user.reviewer?
|
|
scope.joins(:reviewers).where('reviewer_to_quizzes.user_id = ?', user.id)
|
|
else
|
|
scope
|
|
end
|
|
end
|
|
end
|
|
end
|