mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-08 22:24:23 +08:00
Add project comment manage own permission [SCI-6115] (#3574)
This commit is contained in:
parent
116c09cd8a
commit
d594778fa8
3 changed files with 16 additions and 3 deletions
|
@ -76,7 +76,17 @@ Canaid::Permissions.register_for(Project) do
|
|||
end
|
||||
|
||||
Canaid::Permissions.register_for(ProjectComment) do
|
||||
%i(manage_project_comment)
|
||||
.each do |perm|
|
||||
can perm do |_, comment|
|
||||
project = comment.project
|
||||
project.active?
|
||||
end
|
||||
end
|
||||
|
||||
can :manage_project_comment do |user, comment|
|
||||
comment.project.permission_granted?(user, ProjectPermissions::COMMENTS_MANAGE)
|
||||
project = comment.project
|
||||
project.permission_granted?(user, ProjectPermissions::COMMENTS_MANAGE) ||
|
||||
((comment.user == user) && project.permission_granted?(user, ProjectPermissions::COMMENTS_MANAGE_OWN))
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,6 +12,7 @@ module PermissionExtends
|
|||
COMMENTS_READ
|
||||
COMMENTS_CREATE
|
||||
COMMENTS_MANAGE
|
||||
COMMENTS_MANAGE_OWN
|
||||
TAGS_MANAGE
|
||||
EXPERIMENTS_CREATE
|
||||
).each { |permission| const_set(permission, "project_#{permission.underscore}") }
|
||||
|
@ -96,6 +97,7 @@ module PermissionExtends
|
|||
ProjectPermissions::USERS_READ,
|
||||
ProjectPermissions::COMMENTS_READ,
|
||||
ProjectPermissions::COMMENTS_CREATE,
|
||||
ProjectPermissions::COMMENTS_MANAGE_OWN,
|
||||
ProjectPermissions::EXPERIMENTS_CREATE,
|
||||
ExperimentPermissions::READ,
|
||||
ExperimentPermissions::READ_CANVAS,
|
||||
|
@ -131,6 +133,7 @@ module PermissionExtends
|
|||
ProjectPermissions::USERS_READ,
|
||||
ProjectPermissions::COMMENTS_READ,
|
||||
ProjectPermissions::COMMENTS_CREATE,
|
||||
ProjectPermissions::COMMENTS_MANAGE_OWN,
|
||||
ExperimentPermissions::READ,
|
||||
ExperimentPermissions::READ_CANVAS,
|
||||
ExperimentPermissions::READ_ARCHIVED,
|
||||
|
|
|
@ -35,13 +35,13 @@ describe ProjectCommentsController, type: :controller do
|
|||
|
||||
it_behaves_like "a controller action with permissions checking", :put, :update do
|
||||
let(:testable) { project }
|
||||
let(:permissions) { [ProjectPermissions::COMMENTS_MANAGE] }
|
||||
let(:permissions) { [ProjectPermissions::COMMENTS_MANAGE, ProjectPermissions::COMMENTS_MANAGE_OWN] }
|
||||
let(:action_params) { { project_id: project.id, id: project_comment.id, comment: { message: 'Test1' } } }
|
||||
end
|
||||
|
||||
it_behaves_like "a controller action with permissions checking", :post, :destroy do
|
||||
let(:testable) { project }
|
||||
let(:permissions) { [ProjectPermissions::COMMENTS_MANAGE] }
|
||||
let(:permissions) { [ProjectPermissions::COMMENTS_MANAGE, ProjectPermissions::COMMENTS_MANAGE_OWN] }
|
||||
let(:action_params) { { project_id: project.id, id: project_comment.id } }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue