Skip to content
Snippets Groups Projects
Commit e6002bda authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Ability to manage and remove group as owner outside of admin area

parent 591e094e
No related branches found
No related tags found
1 merge request!2940Expanding repos and hooks paths in settings
Loading
Loading
@@ -6,6 +6,7 @@ class GroupsController < ApplicationController
 
# Authorize
before_filter :authorize_read_group!, except: [:new, :create]
before_filter :authorize_admin_group!, only: [:edit, :update, :destroy]
before_filter :authorize_create_group!, only: [:new, :create]
 
# Load group projects
Loading
Loading
@@ -84,6 +85,31 @@ class GroupsController < ApplicationController
redirect_to people_group_path(@group), notice: 'Users was successfully added.'
end
 
def edit
end
def update
group_params = params[:group].dup
owner_id =group_params.delete(:owner_id)
if owner_id
@group.owner = User.find(owner_id)
end
if @group.update_attributes(group_params)
redirect_to @group, notice: 'Group was successfully updated.'
else
render action: "edit"
end
end
def destroy
@group.truncate_teams
@group.destroy
redirect_to root_path, notice: 'Group was removed.'
end
protected
 
def group
Loading
Loading
@@ -106,6 +132,14 @@ class GroupsController < ApplicationController
end
 
def authorize_create_group!
can?(current_user, :create_group, nil)
unless can?(current_user, :create_group, nil)
return render_404
end
end
def authorize_admin_group!
unless can?(current_user, :manage_group, group)
return render_404
end
end
end
%h3.page_title Edit Group
%hr
= form_for @group do |f|
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Save group', class: "btn btn-save"
%hr
.row
.span7
.ui-box
%h5.title Projects
%ul.well-list
- @group.projects.each do |project|
%li
- if project.public
%i.icon-share
- else
%i.icon-lock.cgreen
= link_to project.name_with_namespace, project
.pull-right
= link_to 'Team', project_team_index_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Remove', project, confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
.span5
.ui-box
%h5.title Transfer group
.padded
%p
Transferring group will cause loss of admin control over group and all child projects
= form_for @group do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
= f.submit 'Transfer group', class: "btn btn-small"
.ui-box
%h5.title Remove group
.padded.bgred
%p
Remove of group will cause removing all child projects and resources
%br
Removed group can not be restored!
= link_to 'Remove Group', @group, confirm: 'Removed group can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
Loading
Loading
@@ -22,4 +22,10 @@
= nav_link(path: 'groups#people') do
= link_to "People", people_group_path(@group)
 
- if can?(current_user, :manage_group, @group)
= nav_link(path: 'groups#edit') do
= link_to edit_group_path(@group), class: "tab " do
%i.icon-edit
Edit Group
.content= yield
Loading
Loading
@@ -42,7 +42,7 @@
= f.check_box :wiki_enabled
%span.descr Pages for project documentation
 
- if can? current_user, :change_public_mode, @project
- if can?(current_user, :change_public_mode, @project)
%fieldset.features
%legend
%i.icon-share
Loading
Loading
Loading
Loading
@@ -15,8 +15,6 @@
Team path is
.input
= f.text_field :path, placeholder: "opensource", class: "xxlarge left"
.clearfix
.input.span3.center
= f.submit 'Save team changes', class: "btn btn-primary"
.input.span3.center
= link_to 'Delete team', team_path(@team), method: :delete, confirm: "You are shure?", class: "btn btn-remove"
.form-actions
= f.submit 'Save team changes', class: "btn btn-primary"
= link_to 'Delete team', team_path(@team), method: :delete, confirm: "You are shure?", class: "btn btn-remove pull-right"
Loading
Loading
@@ -129,7 +129,7 @@ Gitlab::Application.routes.draw do
#
# Groups Area
#
resources :groups, constraints: { id: /[^\/]+/ }, only: [:show, :new, :create] do
resources :groups, constraints: { id: /[^\/]+/ } do
member do
get :issues
get :merge_requests
Loading
Loading
Loading
Loading
@@ -24,3 +24,9 @@ Feature: Groups
When I visit group people page
And I select user "John" from list with role "Reporter"
Then I should see user "John" in team list
Scenario: I should see edit group page
When I visit group settings page
And I change group name
Then I should see new group name
Loading
Loading
@@ -82,6 +82,17 @@ class Groups < Spinach::FeatureSteps
current_path.should == group_path(Group.last)
end
 
And 'I change group name' do
fill_in 'group_name', :with => 'new-name'
click_button "Save group"
end
Then 'I should see new group name' do
within ".navbar-gitlab" do
page.should have_content "group: new-name"
end
end
protected
 
def current_group
Loading
Loading
Loading
Loading
@@ -25,6 +25,10 @@ module SharedPaths
visit people_group_path(current_group)
end
 
When 'I visit group settings page' do
visit edit_group_path(current_group)
end
# ----------------------------------------
# Dashboard
# ----------------------------------------
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment