scinote-web/app/permissions/my_module.rb

211 lines
7.1 KiB
Ruby

# frozen_string_literal: true
Canaid::Permissions.register_for(MyModule) do
# Module, its experiment and its project must be active for all the specified
# permissions
%i(manage_my_module
archive_my_module
manage_my_module_protocol
manage_my_module_users
manage_my_module_designated_users
assign_my_module_repository_rows
manage_my_module_repository_rows
create_results
create_my_module_comments
create_comments_in_my_module_steps
create_my_module_result_comments
create_my_module_repository_snapshots
manage_my_module_repository_snapshots
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)
.each do |perm|
can perm do |_, my_module|
my_module.active? &&
!my_module.status_changing? &&
my_module.experiment.active? &&
my_module.experiment.project.active?
end
end
can :read_my_module do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::READ)
end
can :manage_my_module do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
end
can :restore_my_module do |user, my_module|
my_module.archived? && my_module.permission_granted?(user, MyModulePermissions::MANAGE)
end
can :archive_my_module do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
end
can :move_my_module do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::MANAGE)
end
can :update_my_module_start_date do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_START_DATE)
end
can :update_my_module_due_date do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_DUE_DATE)
end
can :update_my_module_description do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::UPDATE_DESCRIPTION)
end
can :manage_my_module_tags do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::TAGS_MANAGE)
end
can :manage_my_module_steps do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::STEPS_MANAGE)
end
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
can :create_results do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::RESULTS_MANAGE)
end
can :create_my_module_result_comments do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::RESULTS_COMMENTS_CREATE)
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|
my_module.permission_granted?(user, MyModulePermissions::STEPS_CHECKLIST_CHECK)
end
can :uncheck_my_module_steps do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::STEPS_CHECKLIST_UNCHECK)
end
can :create_comments_in_my_module_steps do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::STEPS_COMMENTS_CREATE)
end
can :read_my_module_users do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::USERS_READ)
end
can :manage_my_module_users do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::USERS_MANAGE)
end
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
can :restore_my_module do |user, my_module|
my_module.archived? && my_module.permission_granted?(user, MyModulePermissions::MANAGE)
end
can :create_my_module_repository_snapshots do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_MANAGE)
end
can :manage_my_module_repository_snapshots do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::REPOSITORY_ROWS_MANAGE)
end
can :update_my_module_stock_consumption do |user, my_module|
my_module.permission_granted?(user, MyModulePermissions::STOCK_CONSUMPTION_UPDATE) &&
RepositoryBase.stock_management_enabled?
end
end
Canaid::Permissions.register_for(TaskComment) do
# Module, its experiment and its project must be active for all the specified
# permissions
%i(manage_my_module_comment)
.each do |perm|
can perm do |_, comment|
my_module = comment.my_module
my_module.active? &&
my_module.experiment.active? &&
my_module.experiment.project.active?
end
end
can :manage_my_module_comment do |user, comment|
my_module = comment.my_module
my_module.permission_granted?(user, MyModulePermissions::COMMENTS_MANAGE) ||
((comment.user == user) && my_module.permission_granted?(user, MyModulePermissions::COMMENTS_MANAGE_OWN))
end
end
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