2017-11-27 11:24:41 +01:00
|
|
|
Canaid::Permissions.register_for(Team) do
|
2020-08-31 16:29:23 +02:00
|
|
|
# team: leave, read users, read projects
|
2019-07-17 16:00:49 +02:00
|
|
|
# read protocols
|
2018-02-15 18:46:29 +01:00
|
|
|
#
|
2017-11-27 11:24:41 +01:00
|
|
|
can :read_team do |user, team|
|
2022-05-19 13:46:03 +02:00
|
|
|
user.member_of_team?(team)
|
2017-11-27 11:24:41 +01:00
|
|
|
end
|
2017-11-28 15:41:52 +01:00
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# team: update
|
2022-05-19 13:46:03 +02:00
|
|
|
can :manage_team do |user, team|
|
|
|
|
team.permission_granted?(user, TeamPermissions::MANAGE)
|
2017-12-04 11:12:35 +01:00
|
|
|
end
|
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# team: assign/unassing user, change user role
|
2018-01-05 15:15:50 +01:00
|
|
|
can :manage_team_users do |user, team|
|
2022-05-19 13:46:03 +02:00
|
|
|
team.permission_granted?(user, TeamPermissions::USERS_MANAGE)
|
2017-11-28 15:41:52 +01:00
|
|
|
end
|
2017-12-04 13:07:23 +01:00
|
|
|
|
2020-02-26 17:25:38 +01:00
|
|
|
# team: invite new users to the team
|
2022-05-19 13:46:03 +02:00
|
|
|
can :invite_team_users do |user, team|
|
|
|
|
can_manage_team_users?(user, team)
|
2020-02-26 17:25:38 +01:00
|
|
|
end
|
|
|
|
|
2020-12-01 09:59:08 +01:00
|
|
|
# project_folder: create
|
|
|
|
can :create_project_folders do |user, team|
|
2022-05-19 13:46:03 +02:00
|
|
|
can_manage_team?(user, team)
|
2020-12-01 09:59:08 +01:00
|
|
|
end
|
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# project: create
|
2018-01-05 15:15:50 +01:00
|
|
|
can :create_projects do |user, team|
|
2022-05-19 13:46:03 +02:00
|
|
|
team.permission_granted?(user, TeamPermissions::PROJECTS_CREATE)
|
2017-12-07 17:08:41 +01:00
|
|
|
end
|
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# protocol in repository: create, import
|
2018-01-05 15:15:50 +01:00
|
|
|
can :create_protocols_in_repository do |user, team|
|
2022-05-19 13:46:03 +02:00
|
|
|
team.permission_granted?(user, TeamPermissions::PROTOCOLS_CREATE)
|
2017-12-04 13:07:23 +01:00
|
|
|
end
|
2017-12-04 16:45:23 +01:00
|
|
|
|
2018-02-16 12:03:44 +01:00
|
|
|
# repository: create, copy
|
2018-01-05 15:15:50 +01:00
|
|
|
can :create_repositories do |user, team|
|
2020-03-05 15:26:25 +01:00
|
|
|
within_limits = Repository.within_global_limits?
|
|
|
|
within_limits = Repository.within_team_limits?(team) if within_limits
|
2022-05-19 13:46:03 +02:00
|
|
|
within_limits && team.permission_granted?(user, TeamPermissions::INVENTORIES_CREATE)
|
2017-12-12 15:35:43 +01:00
|
|
|
end
|
2018-04-18 16:47:52 +02:00
|
|
|
|
2022-05-23 13:32:15 +02:00
|
|
|
can :create_reports do |user, team|
|
|
|
|
team.permission_granted?(user, TeamPermissions::REPORTS_CREATE)
|
2018-04-18 16:47:52 +02:00
|
|
|
end
|
2022-07-26 13:52:40 +02:00
|
|
|
|
|
|
|
can :view_label_templates do |user, team|
|
2022-09-14 15:13:13 +02:00
|
|
|
team.permission_granted?(user, TeamPermissions::LABEL_TEMPLATES_READ)
|
2022-07-26 13:52:40 +02:00
|
|
|
end
|
2022-07-27 10:10:32 +02:00
|
|
|
|
|
|
|
can :manage_label_templates do |user, team|
|
2022-09-14 15:13:13 +02:00
|
|
|
team.permission_granted?(user, TeamPermissions::LABEL_TEMPLATES_MANAGE)
|
2022-07-27 10:10:32 +02:00
|
|
|
end
|
2017-11-28 15:41:52 +01:00
|
|
|
end
|
|
|
|
|
2021-10-01 10:47:32 +02:00
|
|
|
Canaid::Permissions.register_for(ProjectFolder) do
|
|
|
|
# ProjectFolder: delete
|
|
|
|
can :delete_project_folder do |user, project_folder|
|
2022-10-05 19:35:56 +02:00
|
|
|
can_manage_team?(user, project_folder.team) &&
|
2021-10-01 10:47:32 +02:00
|
|
|
project_folder.projects.none? &&
|
|
|
|
project_folder.project_folders.none?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-12-05 19:51:44 +01:00
|
|
|
Canaid::Permissions.register_for(Protocol) do
|
2023-01-24 21:17:50 +01:00
|
|
|
%i(manage_protocol_in_repository
|
2023-03-15 14:14:20 +04:00
|
|
|
manage_protocol_draft_in_repository
|
2023-02-28 13:48:29 +01:00
|
|
|
clone_protocol_in_repository
|
|
|
|
publish_protocol_in_repository
|
|
|
|
delete_protocol_draft_in_repository
|
2023-03-21 10:59:31 +01:00
|
|
|
save_protocol_version_as_draft)
|
2022-12-09 12:44:41 +01:00
|
|
|
.each do |perm|
|
|
|
|
can perm do |_, protocol|
|
|
|
|
protocol.active?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# protocol in repository: read, export, read step, read/download step asset
|
2017-12-05 19:51:44 +01:00
|
|
|
can :read_protocol_in_repository do |user, protocol|
|
2022-12-09 12:44:41 +01:00
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::READ)
|
2017-12-05 19:51:44 +01:00
|
|
|
end
|
2017-12-06 17:23:08 +01:00
|
|
|
|
2018-02-15 18:46:29 +01:00
|
|
|
# protocol in repository: update, create/update/delete/reorder step,
|
2018-02-16 12:03:44 +01:00
|
|
|
# toggle private/public visibility, archive
|
2018-02-15 18:46:29 +01:00
|
|
|
can :manage_protocol_in_repository do |user, protocol|
|
2023-02-13 09:50:39 +01:00
|
|
|
protocol.in_repository_draft? &&
|
2023-01-17 15:44:16 +01:00
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
|
2022-12-09 12:44:41 +01:00
|
|
|
end
|
|
|
|
|
2023-01-26 15:41:41 +01:00
|
|
|
can :manage_protocol_draft_in_repository do |user, protocol|
|
2023-03-15 14:14:20 +04:00
|
|
|
protocol.in_repository_draft? &&
|
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE_DRAFT)
|
2023-01-26 15:41:41 +01:00
|
|
|
end
|
|
|
|
|
2022-12-09 12:44:41 +01:00
|
|
|
can :manage_protocol_users do |user, protocol|
|
2023-05-09 16:23:29 +02:00
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::USERS_MANAGE) ||
|
|
|
|
protocol.team.permission_granted?(user, TeamPermissions::MANAGE)
|
2017-12-06 17:23:08 +01:00
|
|
|
end
|
2017-12-07 11:11:27 +01:00
|
|
|
|
2018-02-16 12:03:44 +01:00
|
|
|
# protocol in repository: restore
|
|
|
|
can :restore_protocol_in_repository do |user, protocol|
|
2023-03-10 11:45:32 +01:00
|
|
|
protocol.archived? && protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
|
2018-02-16 12:03:44 +01:00
|
|
|
end
|
|
|
|
|
2023-02-16 18:03:11 +01:00
|
|
|
can :archive_protocol_in_repository do |user, protocol|
|
2023-03-10 11:45:32 +01:00
|
|
|
protocol.active? && protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
|
2023-02-16 18:03:11 +01:00
|
|
|
end
|
|
|
|
|
2018-02-16 12:03:44 +01:00
|
|
|
# protocol in repository: copy
|
2018-01-05 15:15:50 +01:00
|
|
|
can :clone_protocol_in_repository do |user, protocol|
|
2022-05-19 13:46:03 +02:00
|
|
|
can_read_protocol_in_repository?(user, protocol) && can_create_protocols_in_repository?(user, protocol.team)
|
2017-12-07 11:11:27 +01:00
|
|
|
end
|
2023-01-26 15:41:41 +01:00
|
|
|
|
|
|
|
can :publish_protocol_in_repository do |user, protocol|
|
2023-02-13 09:50:39 +01:00
|
|
|
protocol.in_repository_draft? &&
|
2023-03-10 11:45:32 +01:00
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
|
2023-01-26 15:41:41 +01:00
|
|
|
end
|
2023-02-22 14:59:48 +01:00
|
|
|
|
|
|
|
can :delete_protocol_draft_in_repository do |user, protocol|
|
|
|
|
protocol.parent_id.present? &&
|
|
|
|
can_manage_protocol_draft_in_repository?(user, protocol)
|
|
|
|
end
|
|
|
|
|
2023-03-21 10:59:31 +01:00
|
|
|
can :save_protocol_version_as_draft do |user, protocol|
|
|
|
|
next false unless protocol.in_repository_published?
|
2023-03-01 14:41:41 +01:00
|
|
|
|
2023-03-21 10:59:31 +01:00
|
|
|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE_DRAFT)
|
2023-02-22 14:59:48 +01:00
|
|
|
end
|
2017-12-05 19:51:44 +01:00
|
|
|
end
|
2022-05-23 13:32:15 +02:00
|
|
|
|
|
|
|
Canaid::Permissions.register_for(Report) do
|
|
|
|
can :read_report do |user, report|
|
2022-10-20 15:35:43 +02:00
|
|
|
can_read_project?(report.project) && report.permission_granted?(user, ReportPermissions::READ)
|
2022-05-23 13:32:15 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_report do |user, report|
|
2022-10-20 15:35:43 +02:00
|
|
|
can_read_project?(report.project) && report.permission_granted?(user, ReportPermissions::MANAGE)
|
2022-05-23 13:32:15 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
can :manage_report_users do |user, report|
|
|
|
|
report.permission_granted?(user, ReportPermissions::USERS_MANAGE)
|
2017-12-07 11:11:27 +01:00
|
|
|
end
|
2017-12-05 19:51:44 +01:00
|
|
|
end
|