Files
puzzle-scoreboard/app/policies/contest_policy.rb
sto cce090587a
All checks were successful
CI / scan_ruby (push) Successful in 21s
CI / scan_js (push) Successful in 14s
CI / lint (push) Successful in 14s
CI / test (push) Successful in 36s
Public scoreboard stopwatch feature
#10
2025-12-09 10:10:54 +01:00

154 lines
1.7 KiB
Ruby

class ContestPolicy < ApplicationPolicy
def owner_or_admin
if record == :contest
true
else
record.user.id == user.id || user.admin?
end
end
def index?
owner_or_admin
end
def show?
owner_or_admin
end
def new?
owner_or_admin
end
def create?
owner_or_admin
end
def convert?
owner_or_admin
end
def convert_csv?
owner_or_admin
end
def edit?
owner_or_admin
end
def generate_qrcodes?
owner_or_admin
end
def settings_general_edit?
edit?
end
def settings_general_update?
edit?
end
def settings_public_edit?
edit?
end
def settings_public_update?
edit?
end
def settings_onsite_edit?
edit?
end
def settings_onsite_update?
edit?
end
def settings_online_edit?
edit?
end
def settings_online_update?
edit?
end
def settings_categories_edit?
edit?
end
def stopwatch?
edit?
end
def stopwatch_continue?
edit?
end
def stopwatch_pause?
edit?
end
def stopwatch_reset?
edit?
end
def stopwatch_start?
edit?
end
def finalize_import?
owner_or_admin
end
def update?
owner_or_admin
end
def destroy?
owner_or_admin
end
def import?
owner_or_admin
end
def export?
owner_or_admin
end
def generate_qrcodes_pdf?
owner_or_admin
end
def upload_csv?
owner_or_admin
end
def offline?
record.offline_form && record.puzzles.length < 2
end
def offline_new?
offline?
end
def offline_create?
offline?
end
def offline_edit?
offline?
end
def offline_update?
offline?
end
def offline_completed?
offline?
end
def scoreboard?
record.public
end
end