# frozen_string_literal: true class QuestionPolicy < ApplicationPolicy # Question 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 NOT list or view questions def view? return false if user.recruiter? return true if user.acts_as_manager? user.quizzes.include? record.quiz end def options? view? end def create? user.acts_as_manager? end def update? user.acts_as_manager? end class Scope < Scope def resolve raise(Pundit::NotAuthorizedError, 'No Access to resource.') if user.recruiter? if user.acts_as_manager? scope else scope.where(quiz_id: user.quizzes.map(&:id)) end end end end