2020-11-20 11:59:15 +01:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-07-14 18:48:18 +02:00
|
|
|
Canaid::Permissions.register_for(MyModule) do
|
|
|
|
# Module, its experiment and its project must be active for all the specified
|
|
|
|
# permissions
|
2021-09-14 11:08:35 +02:00
|
|
|
%i(manage_my_module
|
2023-06-01 11:31:54 +02:00
|
|
|
archive_my_module
|
2021-12-06 15:36:49 +01:00
|
|
|
manage_my_module_protocol
|
2021-09-14 11:08:35 +02:00
|
|
|
manage_my_module_users
|
2021-12-06 15:36:49 +01:00
|
|
|
manage_my_module_designated_users
|
2021-09-14 11:08:35 +02:00
|
|
|
assign_my_module_repository_rows
|
2021-12-06 15:36:49 +01:00
|
|
|
manage_my_module_repository_rows
|
|
|
|
create_results
|
2021-09-14 11:08:35 +02:00
|
|
|
create_my_module_comments
|
2021-12-06 15:36:49 +01:00
|
|
|
create_comments_in_my_module_steps
|
|
|
|
create_my_module_result_comments
|
2021-09-14 11:08:35 +02:00
|
|
|
create_my_module_repository_snapshots
|
2020-11-20 11:59:15 +01:00
|
|
|
manage_my_module_repository_snapshots
|
2021-12-06 15:36:49 +01:00
|
|
|
update_my_module_start_date
|
|
|
|
update_my_module_due_date
|
|
|
|
complete_my_module
|
|
|
|
update_my_module_description
|
|
|
|
manage_my_module_tags
|
|
|
|
update_my_module_status
|
|
|
|
manage_my_module_steps
|
|
|
|
complete_my_module_steps
|
|
|
|
uncomplete_my_module_steps
|
|
|
|
check_my_module_steps
|
|
|
|
uncheck_my_module_steps)
|
2020-07-14 18:48:18 +02:00
|
|
|
.each do |perm|
|
|
|
|
can perm do |_, my_module|
|
|
|
|
my_module.active? &&
|
2020-09-11 16:08:03 +02:00
|
|
|
!my_module.status_changing? &&
|
2020-07-14 18:48:18 +02:00
|
|
|
my_module.experiment.active? &&
|
|
|
|
my_module.experiment.project.active?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :read_my_module do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::READ)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_my_module do |user, my_module|
|
2021-02-18 09:54:53 +01:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
2023-07-05 16:21:26 +02:00
|
|
|
can :share_my_module do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::SHARE)
|
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :restore_my_module do |user, my_module|
|
|
|
|
my_module.archived? && my_module.permission_granted?(user, MyModulePermissions::MANAGE)
|
2020-08-25 15:30:22 +02:00
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :archive_my_module do |user, my_module|
|
2023-06-01 11:31:54 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
|
2021-06-19 17:17:57 +02:00
|
|
|
end
|
|
|
|
|
2021-11-23 11:08:46 +01:00
|
|
|
can :move_my_module do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
|
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :update_my_module_start_date do |user, my_module|
|
2021-11-19 13:24:57 +01:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_START_DATE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
2021-09-22 11:28:32 +02:00
|
|
|
can :update_my_module_due_date do |user, my_module|
|
2021-11-19 13:24:57 +01:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_DUE_DATE)
|
2020-08-25 15:30:22 +02:00
|
|
|
end
|
|
|
|
|
2021-11-19 13:24:57 +01:00
|
|
|
can :update_my_module_description do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_DESCRIPTION)
|
2021-09-14 11:08:35 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_my_module_tags do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::TAGS_MANAGE)
|
2021-05-09 18:23:50 +02:00
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :manage_my_module_steps do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :create_my_module_comments do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::COMMENTS_CREATE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :assign_my_module_repository_rows do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_ASSIGN)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_my_module_repository_rows do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_MANAGE)
|
|
|
|
end
|
|
|
|
|
2021-09-24 13:11:41 +02:00
|
|
|
can :create_results do |user, my_module|
|
2021-09-14 11:08:35 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::RESULTS_MANAGE)
|
|
|
|
end
|
|
|
|
|
2021-09-24 13:11:41 +02:00
|
|
|
can :create_my_module_result_comments do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::RESULTS_COMMENTS_CREATE)
|
2021-09-14 11:08:35 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_my_module_protocol do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::PROTOCOL_MANAGE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :complete_my_module do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::COMPLETE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :update_my_module_status do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_STATUS)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :complete_my_module_steps do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_COMPLETE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :uncomplete_my_module_steps do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_UNCOMPLETE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :check_my_module_steps do |user, my_module|
|
2021-09-22 15:28:32 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_CHECKLIST_CHECK)
|
2021-09-14 11:08:35 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :uncheck_my_module_steps do |user, my_module|
|
2021-09-22 15:28:32 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_CHECKLIST_UNCHECK)
|
2021-09-14 11:08:35 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :create_comments_in_my_module_steps do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_CREATE)
|
|
|
|
end
|
|
|
|
|
2021-10-28 14:48:28 +02:00
|
|
|
can :read_my_module_users do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::USERS_READ)
|
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :manage_my_module_users do |user, my_module|
|
2021-10-28 14:48:28 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::USERS_MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
2021-11-19 13:24:57 +01:00
|
|
|
can :manage_my_module_designated_users do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::DESIGNATED_USERS_MANAGE)
|
|
|
|
end
|
|
|
|
|
|
|
|
can :read_my_module_activities do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::ACTIVITIES_READ)
|
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :restore_my_module do |user, my_module|
|
|
|
|
my_module.archived? && my_module.permission_granted?(user, MyModulePermissions::MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
2021-09-14 11:08:35 +02:00
|
|
|
can :create_my_module_repository_snapshots do |user, my_module|
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_my_module_repository_snapshots do |user, my_module|
|
2021-09-14 11:08:35 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_MANAGE)
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
2022-01-25 12:41:16 +01:00
|
|
|
|
|
|
|
can :update_my_module_stock_consumption do |user, my_module|
|
2022-03-29 12:33:28 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STOCK_CONSUMPTION_UPDATE) &&
|
2022-04-01 13:54:08 +02:00
|
|
|
RepositoryBase.stock_management_enabled?
|
2022-01-25 12:41:16 +01:00
|
|
|
end
|
2020-07-14 18:48:18 +02:00
|
|
|
end
|
2021-09-16 14:12:51 +02:00
|
|
|
|
2021-09-22 11:28:32 +02:00
|
|
|
Canaid::Permissions.register_for(TaskComment) do
|
2021-09-16 14:12:51 +02:00
|
|
|
# Module, its experiment and its project must be active for all the specified
|
|
|
|
# permissions
|
2021-09-22 11:28:32 +02:00
|
|
|
%i(manage_my_module_comment)
|
2021-09-16 14:12:51 +02:00
|
|
|
.each do |perm|
|
|
|
|
can perm do |_, comment|
|
2021-09-30 11:32:11 +02:00
|
|
|
my_module = comment.my_module
|
2021-09-22 11:28:32 +02:00
|
|
|
my_module.active? &&
|
|
|
|
my_module.experiment.active? &&
|
|
|
|
my_module.experiment.project.active?
|
2021-09-16 14:12:51 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-09-22 11:28:32 +02:00
|
|
|
can :manage_my_module_comment do |user, comment|
|
2021-09-30 11:32:11 +02:00
|
|
|
my_module = comment.my_module
|
2021-09-22 11:28:32 +02:00
|
|
|
my_module.permission_granted?(user, MyModulePermissions::COMMENTS_MANAGE) ||
|
|
|
|
((comment.user == user) && my_module.permission_granted?(user, MyModulePermissions::COMMENTS_MANAGE_OWN))
|
2021-09-16 14:12:51 +02:00
|
|
|
end
|
|
|
|
end
|
2021-09-30 11:32:11 +02:00
|
|
|
|
|
|
|
Canaid::Permissions.register_for(StepComment) do
|
|
|
|
# Module, its experiment and its project must be active for all the specified
|
|
|
|
# permissions
|
|
|
|
%i(delete_comment_in_my_module_steps
|
|
|
|
update_comment_in_my_module_steps)
|
|
|
|
.each do |perm|
|
|
|
|
can perm do |_, comment|
|
|
|
|
my_module = comment.step.my_module
|
|
|
|
my_module.active? &&
|
|
|
|
!my_module.archived_branch? &&
|
|
|
|
my_module.experiment.active? &&
|
|
|
|
my_module.experiment.project.active?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
can :delete_comment_in_my_module_steps do |user, comment|
|
|
|
|
my_module = comment.step.my_module
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_DELETE) ||
|
|
|
|
((comment.user == user) && my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_DELETE_OWN))
|
|
|
|
end
|
|
|
|
|
|
|
|
can :update_comment_in_my_module_steps do |user, comment|
|
|
|
|
my_module = comment.step.my_module
|
|
|
|
my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_UPDATE) ||
|
|
|
|
((comment.user == user) && my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_UPDATE_OWN))
|
|
|
|
end
|
|
|
|
end
|