mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-04 19:53:19 +08:00
45 lines
1.2 KiB
Ruby
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
|