diff options
Diffstat (limited to 'app/services/projects/create_service.rb')
-rw-r--r-- | app/services/projects/create_service.rb | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb deleted file mode 100644 index a7afcf8f64b..00000000000 --- a/app/services/projects/create_service.rb +++ /dev/null @@ -1,96 +0,0 @@ -module Projects - class CreateService < BaseService - def initialize(user, params) - @current_user, @params = user, params.dup - end - - def execute - @project = Project.new(params) - - # Make sure that the user is allowed to use the specified visibility - # level - unless Gitlab::VisibilityLevel.allowed_for?(current_user, - params[:visibility_level]) - deny_visibility_level(@project) - return @project - end - - # Set project name from path - if @project.name.present? && @project.path.present? - # if both name and path set - everything is ok - elsif @project.path.present? - # Set project name from path - @project.name = @project.path.dup - elsif @project.name.present? - # For compatibility - set path from name - # TODO: remove this in 8.0 - @project.path = @project.name.dup.parameterize - end - - # get namespace id - namespace_id = params[:namespace_id] - - if namespace_id - # Find matching namespace and check if it allowed - # for current user if namespace_id passed. - unless allowed_namespace?(current_user, namespace_id) - @project.namespace_id = nil - deny_namespace - return @project - end - else - # Set current user namespace if namespace_id is nil - @project.namespace_id = current_user.namespace_id - end - - @project.creator = current_user - - Project.transaction do - @project.save - - unless @project.import? - unless @project.create_repository - raise 'Failed to create repository' - end - end - end - - after_create_actions if @project.persisted? - - @project - rescue => ex - @project.errors.add(:base, "Can't save project. Please try again later") - @project - end - - protected - - def deny_namespace - @project.errors.add(:namespace, "is not valid") - end - - def allowed_namespace?(user, namespace_id) - namespace = Namespace.find_by(id: namespace_id) - current_user.can?(:create_projects, namespace) - end - - def after_create_actions - log_info("#{@project.owner.name} created a new project \"#{@project.name_with_namespace}\"") - - @project.create_wiki if @project.wiki_enabled? - - event_service.create_project(@project, current_user) - system_hook_service.execute_hooks_for(@project, :create) - - unless @project.group - @project.team << [current_user, :master, current_user] - end - - @project.update_column(:last_activity_at, @project.created_at) - - if @project.import? - @project.import_start - end - end - end -end |