code.gitea.io/gitea@v1.21.7/routers/web/org/org.go (about) 1 // Copyright 2014 The Gogs Authors. All rights reserved. 2 // Copyright 2018 The Gitea Authors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 5 package org 6 7 import ( 8 "errors" 9 "net/http" 10 11 "code.gitea.io/gitea/models/db" 12 "code.gitea.io/gitea/models/organization" 13 user_model "code.gitea.io/gitea/models/user" 14 "code.gitea.io/gitea/modules/base" 15 "code.gitea.io/gitea/modules/context" 16 "code.gitea.io/gitea/modules/log" 17 "code.gitea.io/gitea/modules/setting" 18 "code.gitea.io/gitea/modules/web" 19 "code.gitea.io/gitea/services/forms" 20 ) 21 22 const ( 23 // tplCreateOrg template path for create organization 24 tplCreateOrg base.TplName = "org/create" 25 ) 26 27 // Create render the page for create organization 28 func Create(ctx *context.Context) { 29 ctx.Data["Title"] = ctx.Tr("new_org") 30 ctx.Data["DefaultOrgVisibilityMode"] = setting.Service.DefaultOrgVisibilityMode 31 if !ctx.Doer.CanCreateOrganization() { 32 ctx.ServerError("Not allowed", errors.New(ctx.Tr("org.form.create_org_not_allowed"))) 33 return 34 } 35 ctx.HTML(http.StatusOK, tplCreateOrg) 36 } 37 38 // CreatePost response for create organization 39 func CreatePost(ctx *context.Context) { 40 form := *web.GetForm(ctx).(*forms.CreateOrgForm) 41 ctx.Data["Title"] = ctx.Tr("new_org") 42 43 if !ctx.Doer.CanCreateOrganization() { 44 ctx.ServerError("Not allowed", errors.New(ctx.Tr("org.form.create_org_not_allowed"))) 45 return 46 } 47 48 if ctx.HasError() { 49 ctx.HTML(http.StatusOK, tplCreateOrg) 50 return 51 } 52 53 org := &organization.Organization{ 54 Name: form.OrgName, 55 IsActive: true, 56 Type: user_model.UserTypeOrganization, 57 Visibility: form.Visibility, 58 RepoAdminChangeTeamAccess: form.RepoAdminChangeTeamAccess, 59 } 60 61 if err := organization.CreateOrganization(org, ctx.Doer); err != nil { 62 ctx.Data["Err_OrgName"] = true 63 switch { 64 case user_model.IsErrUserAlreadyExist(err): 65 ctx.RenderWithErr(ctx.Tr("form.org_name_been_taken"), tplCreateOrg, &form) 66 case db.IsErrNameReserved(err): 67 ctx.RenderWithErr(ctx.Tr("org.form.name_reserved", err.(db.ErrNameReserved).Name), tplCreateOrg, &form) 68 case db.IsErrNamePatternNotAllowed(err): 69 ctx.RenderWithErr(ctx.Tr("org.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), tplCreateOrg, &form) 70 case organization.IsErrUserNotAllowedCreateOrg(err): 71 ctx.RenderWithErr(ctx.Tr("org.form.create_org_not_allowed"), tplCreateOrg, &form) 72 default: 73 ctx.ServerError("CreateOrganization", err) 74 } 75 return 76 } 77 log.Trace("Organization created: %s", org.Name) 78 79 ctx.Redirect(org.AsUser().DashboardLink()) 80 }