gitlab-org--gitlab-foss/app/controllers/admin/groups_controller.rb
Gosia Ksionek 64858317ad Add part of needed code
Add columns to store project creation settings

Add project creation level column in groups
 and default project creation column in application settings

Remove obsolete line from schema

Update migration with project_creation_level column existence check

Rename migrations to avoid conflicts

Update migration methods

Update migration method
2019-04-05 18:49:46 +00:00

96 lines
2.6 KiB
Ruby

# frozen_string_literal: true
class Admin::GroupsController < Admin::ApplicationController
include MembersPresentation
before_action :group, only: [:edit, :update, :destroy, :project_update, :members_update]
def index
@groups = Group.with_statistics.with_route
@groups = @groups.sort_by_attribute(@sort = params[:sort])
@groups = @groups.search(params[:name]) if params[:name].present?
@groups = @groups.page(params[:page])
end
# rubocop: disable CodeReuse/ActiveRecord
def show
@group = Group.with_statistics.joins(:route).group('routes.path').find_by_full_path(params[:id])
@members = present_members(
@group.members.order("access_level DESC").page(params[:members_page]))
@requesters = present_members(
AccessRequestsFinder.new(@group).execute(current_user))
@projects = @group.projects.with_statistics.page(params[:projects_page])
end
# rubocop: enable CodeReuse/ActiveRecord
def new
@group = Group.new
end
def edit
end
def create
@group = Group.new(group_params)
@group.name = @group.path.dup unless @group.name
if @group.save
@group.add_owner(current_user)
redirect_to [:admin, @group], notice: _('Group %{group_name} was successfully created.') % { group_name: @group.name }
else
render "new"
end
end
def update
if @group.update(group_params)
redirect_to [:admin, @group], notice: _('Group was successfully updated.')
else
render "edit"
end
end
def members_update
member_params = params.permit(:user_ids, :access_level, :expires_at)
result = Members::CreateService.new(current_user, member_params.merge(limit: -1)).execute(@group)
if result[:status] == :success
redirect_to [:admin, @group], notice: _('Users were successfully added.')
else
redirect_to [:admin, @group], alert: result[:message]
end
end
def destroy
Groups::DestroyService.new(@group, current_user).async_execute
redirect_to admin_groups_path,
status: 302,
alert: _('Group %{group_name} was scheduled for deletion.') % { group_name: @group.name }
end
private
def group
@group ||= Group.find_by_full_path(params[:id])
end
def group_params
params.require(:group).permit(allowed_group_params)
end
def allowed_group_params
[
:avatar,
:description,
:lfs_enabled,
:name,
:path,
:request_access_enabled,
:visibility_level,
:require_two_factor_authentication,
:two_factor_grace_period,
:project_creation_level
]
end
end