mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-03 19:50:34 +08:00
Merge pull request #8703 from andrej-scinote/aj_SCI_12162
Fix global team shared objects on permission changes [SCI-12162]
This commit is contained in:
commit
f114c356af
3 changed files with 15 additions and 2 deletions
|
|
@ -22,6 +22,18 @@ class TeamSharedObjectsController < ApplicationController
|
|||
if @model.permission_level_changed?
|
||||
@model.save!
|
||||
@model.team_shared_objects.each(&:destroy!) unless global_permission_level == :not_shared
|
||||
|
||||
case global_permission_level
|
||||
when :shared_read
|
||||
UserAssignment.where(assignable: @model).where.not(team: @model.team).update!(user_role: UserRole.find_predefined_viewer_role)
|
||||
TeamAssignment.where(assignable: @model).where.not(team: @model.team).update!(user_role: UserRole.find_predefined_viewer_role)
|
||||
UserGroupAssignment.where(assignable: @model).where.not(team: @model.team).update!(user_role: UserRole.find_predefined_viewer_role)
|
||||
when :not_shared
|
||||
UserAssignment.where(assignable: @model).where.not(team: @model.team).destroy_all
|
||||
TeamAssignment.where(assignable: @model).where.not(team: @model.team).destroy_all
|
||||
UserGroupAssignment.where(assignable: @model).where.not(team: @model.team).destroy_all
|
||||
end
|
||||
|
||||
case @model
|
||||
when Repository
|
||||
setup_repository_global_share_activity
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
module UserRolesHelper
|
||||
def user_roles_collection(object, with_inherit: false)
|
||||
if object.respond_to?(:private_shared_with_read?) && object.private_shared_with_read?(current_team)
|
||||
if (object.respond_to?(:private_shared_with_read?) && object.private_shared_with_read?(current_team)) ||
|
||||
(object.respond_to?(:shared_with_read?) && object.shared_with_read?(current_team))
|
||||
viewer_role = UserRole.find_predefined_viewer_role
|
||||
roles = [[viewer_role.name, viewer_role.id]]
|
||||
else
|
||||
|
|
|
|||
|
|
@ -108,6 +108,6 @@ module Shareable
|
|||
def shared_with_read?(team)
|
||||
return false if self.team == team
|
||||
|
||||
shared_read? || team_shared_objects.where(team: team, permission_level: :shared_read).any?
|
||||
shared_read? || team_shared_objects.exists?(team: team, permission_level: :shared_read)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue