mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Add permission for protocol draft management [SCI-7718]
This commit is contained in:
parent
7f3999fa4f
commit
6ac64aaf34
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -8624,6 +8624,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||||
('20220818094636'),
|
('20220818094636'),
|
||||||
('20220914124900'),
|
('20220914124900'),
|
||||||
('20221007113010'),
|
('20221007113010'),
|
||||||
('20221125133611');
|
('20221125133611'),
|
||||||
|
('20230120141017');
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue