Commit f141711cfd47808d5f954e1ccf057a858b36d63a

Authored by Dmitriy Zaporozhets
1 parent 073c8a29

API: new feature - remove group

Showing 2 changed files with 29 additions and 2 deletions   Show diff stats
doc/api/groups.md
... ... @@ -57,6 +57,19 @@ Parameters:
57 57 + `project_id` (required) - The ID of a project
58 58  
59 59  
  60 +## Remove group
  61 +
  62 +Removes group with all projects inside.
  63 +
  64 +```
  65 +DELETE /groups/:id
  66 +```
  67 +
  68 +Parameters:
  69 +
  70 ++ `id` (required) - The ID of a user group
  71 +
  72 +
60 73 ## Group members
61 74  
62 75  
... ...
lib/api/groups.rb
... ... @@ -7,12 +7,14 @@ module API
7 7 helpers do
8 8 def find_group(id)
9 9 group = Group.find(id)
10   - if current_user.admin or current_user.groups.include? group
  10 +
  11 + if can?(current_user, :read_group, group)
11 12 group
12 13 else
13 14 render_api_error!("403 Forbidden - #{current_user.username} lacks sufficient access to #{group.name}", 403)
14 15 end
15 16 end
  17 +
16 18 def validate_access_level?(level)
17 19 Gitlab::Access.options_with_owner.values.include? level.to_i
18 20 end
... ... @@ -64,6 +66,19 @@ module API
64 66 present group, with: Entities::GroupDetail
65 67 end
66 68  
  69 +
  70 + # Remove group
  71 + #
  72 + # Parameters:
  73 + # id (required) - The ID of a group
  74 + # Example Request:
  75 + # DELETE /groups/:id
  76 + delete ":id" do
  77 + group = find_group(params[:id])
  78 + authorize! :manage_group, group
  79 + group.destroy
  80 + end
  81 +
67 82 # Transfer a project to the Group namespace
68 83 #
69 84 # Parameters:
... ... @@ -132,7 +147,6 @@ module API
132 147 member.destroy
133 148 end
134 149 end
135   -
136 150 end
137 151 end
138 152 end
... ...