scinote-web/app/permissions/form.rb

45 lines
1.2 KiB
Ruby

# frozen_string_literal: true
Canaid::Permissions.register_for(Form) do
%i(manage_form
clone_form
publish_form)
.each do |perm|
can perm do |_, form|
form.active?
end
end
can :read_form do |user, form|
form.permission_granted?(user, FormPermissions::READ)
end
can :manage_form do |user, form|
form.permission_granted?(user, FormPermissions::MANAGE)
end
can :manage_form_users do |user, form|
form.permission_granted?(user, FormPermissions::USERS_MANAGE) ||
form.team.permission_granted?(user, TeamPermissions::MANAGE)
end
can :restore_form do |user, form|
form.archived? && form.permission_granted?(user, FormPermissions::MANAGE)
end
can :archive_form do |user, form|
form.active? && form.permission_granted?(user, FormPermissions::MANAGE)
end
can :clone_form do |user, form|
can_read_form?(user, form) && can_create_forms?(user, form.team)
end
can :publish_form do |user, form|
!form.published? && form.permission_granted?(user, FormPermissions::MANAGE)
end
can :unpublish_form do |user, form|
form.published? && form.permission_granted?(user, FormPermissions::MANAGE)
end
end