scinote-web/app/permissions/result.rb

47 lines
1.5 KiB
Ruby
Raw Normal View History

2020-12-14 19:50:54 +08:00
# frozen_string_literal: true
Canaid::Permissions.register_for(Result) do
can :read_result do |user, result|
can_read_my_module?(user, result.my_module)
2020-12-14 19:50:54 +08:00
end
can :manage_result do |user, result|
!result.archived? &&
!result.my_module.archived_branch? &&
2023-09-06 20:58:59 +08:00
result.my_module.permission_granted?(user, MyModulePermissions::RESULTS_MANAGE)
end
can :restore_result do |user, result|
result.archived? &&
!result.my_module.archived_branch? &&
result.my_module.permission_granted?(user, MyModulePermissions::RESULTS_MANAGE)
2020-12-14 19:50:54 +08:00
end
2021-01-20 16:00:45 +08:00
can :delete_result do |user, result|
result.archived? &&
!result.my_module.archived_branch? &&
result.unlocked?(result) &&
result.my_module.permission_granted?(user, MyModulePermissions::RESULTS_DELETE_ARCHIVED)
end
end
Canaid::Permissions.register_for(ResultComment) do
# Module, its experiment and its project must be active for all the specified
# permissions
%i(manage_result_comment)
.each do |perm|
can perm do |_, comment|
!comment.result.my_module.archived_branch? && comment.result.active?
end
end
# module: update/delete comment
# result: update/delete comment
# step: update/delete comment
can :manage_result_comment do |user, comment|
my_module = comment.result.my_module
(comment.user == user && my_module.permission_granted?(user, MyModulePermissions::RESULTS_COMMENTS_MANAGE_OWN)) ||
my_module.permission_granted?(user, MyModulePermissions::RESULTS_COMMENTS_MANAGE)
2021-01-20 16:00:45 +08:00
end
2020-12-14 19:50:54 +08:00
end