diff --git a/app/models/project.rb b/app/models/project.rb index 5c4723419..2735d78a7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -71,11 +71,6 @@ class Project < ApplicationRecord end end) - scope :not_assigned_to_user, lambda { |user| - left_joins(:user_assignments) - .where('user_assignments.user_id = ? AND user_assignments.id IS NULL', user.id) - } - scope :templates, -> { where(template: true) } after_create :auto_assign_project_members, if: :visible? diff --git a/app/services/toolbars/projects_service.rb b/app/services/toolbars/projects_service.rb index 57ad67a81..91323eb11 100644 --- a/app/services/toolbars/projects_service.rb +++ b/app/services/toolbars/projects_service.rb @@ -17,6 +17,9 @@ module Toolbars @single = @items.length == 1 + @team_owner = @current_user.current_team.user_assignments.find { |ua| ua.user == current_user }&.user_role.owner? + @unassigned_team_owner = @team_owner && !can_read_project?(@items.first) + @item_type = if project_ids.blank? && project_folder_ids.blank? :none elsif project_ids.present? && project_folder_ids.present? @@ -30,7 +33,7 @@ module Toolbars def actions return [] if @item_type == :none - return [access_action] if @not_assigned + return [access_action] if @unassigned_team_owner [ restore_action, @@ -86,7 +89,7 @@ module Toolbars project = @items.first - return unless can_read_project?(project) + return unless @team_owner || can_read_project?(project) path = if can_manage_project_users?(project) edit_access_permissions_project_path(project) diff --git a/app/views/projects/index/_project_actions_dropdown.html.erb b/app/views/projects/index/_project_actions_dropdown.html.erb index fea1ba0d6..2c88b534c 100644 --- a/app/views/projects/index/_project_actions_dropdown.html.erb +++ b/app/views/projects/index/_project_actions_dropdown.html.erb @@ -3,112 +3,98 @@ <% project_form = f %> <%= f.hidden_field :archived, value: !project.archived %> <% end %> - -<% assigned = project.assigned_users.include?(current_user) %>