summaryrefslogtreecommitdiff
path: root/app/models/user.rb
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-11-09 15:59:11 +0100
committerBob Van Landuyt <bob@vanlanduyt.co>2017-11-14 16:57:41 +0100
commit022d8420ec0713909ff379e1e8d36c4e46bde3a3 (patch)
treeb2cdf284c023430410239a2d41806e010615c0fa /app/models/user.rb
parentfb7abd87daa8930682b05870361fe9dd112f050f (diff)
downloadgitlab-ce-022d8420ec0713909ff379e1e8d36c4e46bde3a3.tar.gz
Include child projects a user can manage in namespace dropdowns
These dropdown options are used for creating and transfering projects.
Diffstat (limited to 'app/models/user.rb')
-rw-r--r--app/models/user.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index f436efd604f..ea10e2854d6 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -921,7 +921,16 @@ class User < ActiveRecord::Base
end
def manageable_namespaces
- @manageable_namespaces ||= [namespace] + owned_groups + masters_groups
+ @manageable_namespaces ||= [namespace] + manageable_groups
+ end
+
+ def manageable_groups
+ union = Gitlab::SQL::Union.new([owned_groups.select(:id),
+ masters_groups.select(:id)])
+ arel_union = Arel::Nodes::SqlLiteral.new(union.to_sql)
+ owned_and_master_groups = Group.where(Group.arel_table[:id].in(arel_union))
+
+ Gitlab::GroupHierarchy.new(owned_and_master_groups).base_and_descendants
end
def namespaces