Add permission for protocol draft management [SCI-7718]

This commit is contained in:
Oleksii Kriuchykhin 2023-01-26 15:41:41 +01:00
parent 7f3999fa4f
commit 6ac64aaf34
5 changed files with 46 additions and 3 deletions

View file

@ -1038,13 +1038,13 @@ class ProtocolsController < ApplicationController
end end
def permissions def permissions
#if stale?(@protocol) if stale?(@protocol)
render json: { render json: {
copyable: can_clone_protocol_in_repository?(@protocol), copyable: can_clone_protocol_in_repository?(@protocol),
archivable: can_manage_protocol_in_repository?(@protocol), archivable: can_manage_protocol_in_repository?(@protocol),
restorable: can_restore_protocol_in_repository?(@protocol) restorable: can_restore_protocol_in_repository?(@protocol)
} }
#end end
end end
private private

View file

@ -90,6 +90,10 @@ Canaid::Permissions.register_for(Protocol) do
protocol.permission_granted?(user, ProtocolPermissions::MANAGE) protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
end end
can :manage_protocol_draft_in_repository do |user, protocol|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE_DRAFT)
end
can :manage_protocol_users do |user, protocol| can :manage_protocol_users do |user, protocol|
protocol.permission_granted?(user, ProtocolPermissions::USERS_MANAGE) || protocol.permission_granted?(user, ProtocolPermissions::USERS_MANAGE) ||
protocol.team.permission_granted?(user, TeamPermissions::MANAGE) protocol.team.permission_granted?(user, TeamPermissions::MANAGE)
@ -104,6 +108,10 @@ Canaid::Permissions.register_for(Protocol) do
can :clone_protocol_in_repository do |user, protocol| can :clone_protocol_in_repository do |user, protocol|
can_read_protocol_in_repository?(user, protocol) && can_create_protocols_in_repository?(user, protocol.team) can_read_protocol_in_repository?(user, protocol) && can_create_protocols_in_repository?(user, protocol.team)
end end
can :publish_protocol_in_repository do |user, protocol|
protocol.permission_granted?(user, ProtocolPermissions::MANAGE)
end
end end
Canaid::Permissions.register_for(Report) do Canaid::Permissions.register_for(Report) do

View file

@ -20,6 +20,7 @@ module PermissionExtends
READ READ
MANAGE MANAGE
USERS_MANAGE USERS_MANAGE
MANAGE_DRAFT
).each { |permission| const_set(permission, "protocol_#{permission.underscore}") } ).each { |permission| const_set(permission, "protocol_#{permission.underscore}") }
end end

View file

@ -0,0 +1,33 @@
# frozen_string_literal: true
class AddProtocolVersioningPermissions < ActiveRecord::Migration[6.1]
OWNER_PERMISSIONS = [
ProtocolPermissions::MANAGE_DRAFT
].freeze
NORMAL_USER_PERMISSIONS = [
ProtocolPermissions::MANAGE_DRAFT
].freeze
def change
reversible do |dir|
dir.up do
@owner_role = UserRole.find_predefined_owner_role
@normal_user_role = UserRole.find_predefined_normal_user_role
@owner_role.permissions = @owner_role.permissions | OWNER_PERMISSIONS
@normal_user_role.permissions = @normal_user_role.permissions | NORMAL_USER_PERMISSIONS
@owner_role.save(validate: false)
@normal_user_role.save(validate: false)
end
dir.down do
@owner_role = UserRole.find_predefined_owner_role
@normal_user_role = UserRole.find_predefined_normal_user_role
@owner_role.permissions = @owner_role.permissions - OWNER_PERMISSIONS
@normal_user_role.permissions = @normal_user_role.permissions - NORMAL_USER_PERMISSIONS
@owner_role.save(validate: false)
@normal_user_role.save(validate: false)
end
end
end
end

View file

@ -8624,6 +8624,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20220818094636'), ('20220818094636'),
('20220914124900'), ('20220914124900'),
('20221007113010'), ('20221007113010'),
('20221125133611'); ('20221125133611'),
('20230120141017');