summaryrefslogtreecommitdiff
path: root/lib/api/namespaces.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/namespaces.rb')
-rw-r--r--lib/api/namespaces.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/api/namespaces.rb b/lib/api/namespaces.rb
index f1eaff6b0eb..21dc5009d0e 100644
--- a/lib/api/namespaces.rb
+++ b/lib/api/namespaces.rb
@@ -19,6 +19,30 @@ module API
present paginate(namespaces), with: Entities::Namespace, current_user: current_user
end
+
+ desc 'Get a namespace by ID' do
+ success Entities::Namespace
+ end
+ params do
+ requires :id, type: Integer, desc: "Namespace's ID"
+ end
+ get ':id' do
+ namespace = Namespace.find(params[:id])
+ authenticate_get_namespace!(namespace)
+
+ present namespace, with: Entities::Namespace, current_user: current_user
+ end
+ end
+
+ helpers do
+ def authenticate_get_namespace!(namespace)
+ return if current_user.admin?
+ forbidden!('No access granted') unless user_can_access_namespace?(namespace)
+ end
+
+ def user_can_access_namespace?(namespace)
+ namespace.has_owner?(current_user)
+ end
end
end
end