mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-13 08:34:49 +08:00
Repository access permission fixes [SCI-12145]
This commit is contained in:
parent
0dc5c60b47
commit
69c6fef2eb
6 changed files with 12 additions and 6 deletions
|
@ -139,7 +139,7 @@ module AccessPermissions
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_available_users
|
def load_available_users
|
||||||
@available_users = current_team.users.where.not(id: @model.user_assignments.select(:user_id)).order(users: { full_name: :asc })
|
@available_users = current_team.users.where.not(id: @model.user_assignments.where(team: current_team).select(:user_id)).order(users: { full_name: :asc })
|
||||||
end
|
end
|
||||||
|
|
||||||
def propagate_job(destroy: false)
|
def propagate_job(destroy: false)
|
||||||
|
|
|
@ -29,6 +29,8 @@ module Shareable
|
||||||
scope :viewable_by_user, lambda { |user, teams = user.current_team|
|
scope :viewable_by_user, lambda { |user, teams = user.current_team|
|
||||||
readable_ids = if permission_class == StorageLocation
|
readable_ids = if permission_class == StorageLocation
|
||||||
readable_by_user(user).where(team: teams).pluck(:id)
|
readable_by_user(user).where(team: teams).pluck(:id)
|
||||||
|
elsif teams.permission_granted?(user, TeamPermissions::MANAGE)
|
||||||
|
where(team: teams).pluck(:id)
|
||||||
else
|
else
|
||||||
with_granted_permissions(user, "#{permission_class.name}Permissions::READ".constantize, teams).pluck(:id)
|
with_granted_permissions(user, "#{permission_class.name}Permissions::READ".constantize, teams).pluck(:id)
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,8 @@ Canaid::Permissions.register_for(RepositoryBase) do
|
||||||
# If original repository is deleted, snapshot ownership should be transferred to task
|
# If original repository is deleted, snapshot ownership should be transferred to task
|
||||||
(!original_repository || original_repository.permission_granted?(user, RepositoryPermissions::READ)) && can_read_my_module?(user, repository.my_module)
|
(!original_repository || original_repository.permission_granted?(user, RepositoryPermissions::READ)) && can_read_my_module?(user, repository.my_module)
|
||||||
else
|
else
|
||||||
repository.can_manage_shared?(user) ||
|
repository.team.permission_granted?(user, TeamPermissions::MANAGE) ||
|
||||||
|
repository.can_manage_shared?(user) ||
|
||||||
repository.permission_granted?(user, RepositoryPermissions::READ)
|
repository.permission_granted?(user, RepositoryPermissions::READ)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -132,7 +133,8 @@ Canaid::Permissions.register_for(Repository) do
|
||||||
end
|
end
|
||||||
|
|
||||||
can :manage_repository_users do |user, repository|
|
can :manage_repository_users do |user, repository|
|
||||||
repository.can_manage_shared?(user) ||
|
repository.team.permission_granted?(user, TeamPermissions::MANAGE) ||
|
||||||
|
repository.can_manage_shared?(user) ||
|
||||||
repository.permission_granted?(user, RepositoryPermissions::USERS_MANAGE)
|
repository.permission_granted?(user, RepositoryPermissions::USERS_MANAGE)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,7 +18,7 @@ module Lists
|
||||||
end
|
end
|
||||||
|
|
||||||
def team
|
def team
|
||||||
current_user.current_team.name
|
object.team.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def created_at
|
def created_at
|
||||||
|
@ -38,7 +38,7 @@ module Lists
|
||||||
end
|
end
|
||||||
|
|
||||||
def assigned_users
|
def assigned_users
|
||||||
users = object.user_assignments.map do |ua|
|
users = object.user_assignments.where(team: current_user.current_team).map do |ua|
|
||||||
{
|
{
|
||||||
avatar: avatar_path(ua.user, :icon_small),
|
avatar: avatar_path(ua.user, :icon_small),
|
||||||
full_name: ua.user_name_with_role
|
full_name: ua.user_name_with_role
|
||||||
|
|
|
@ -10,7 +10,7 @@ module Toolbars
|
||||||
def initialize(current_user, current_team, repository_ids: [])
|
def initialize(current_user, current_team, repository_ids: [])
|
||||||
@current_user = current_user
|
@current_user = current_user
|
||||||
@current_team = current_team
|
@current_team = current_team
|
||||||
@repositories = Repository.readable_by_user(current_user)
|
@repositories = Repository.viewable_by_user(current_user)
|
||||||
.where(id: repository_ids)
|
.where(id: repository_ids)
|
||||||
.distinct
|
.distinct
|
||||||
@repository = @repositories.first
|
@repository = @repositories.first
|
||||||
|
|
|
@ -2342,6 +2342,8 @@ en:
|
||||||
notification:
|
notification:
|
||||||
error:
|
error:
|
||||||
title: "Your Inventories export failed. Please contact support."
|
title: "Your Inventories export failed. Please contact support."
|
||||||
|
table:
|
||||||
|
access: "Access"
|
||||||
show:
|
show:
|
||||||
name: "Name"
|
name: "Name"
|
||||||
archived_inventory_items: "%{repository_name} archived items"
|
archived_inventory_items: "%{repository_name} archived items"
|
||||||
|
|
Loading…
Add table
Reference in a new issue