gitea源码

org.go 2.6KB

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