teams.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package org
  5. import (
  6. "github.com/gogits/gogs/models"
  7. "github.com/gogits/gogs/modules/auth"
  8. "github.com/gogits/gogs/modules/base"
  9. "github.com/gogits/gogs/modules/log"
  10. "github.com/gogits/gogs/modules/middleware"
  11. )
  12. const (
  13. TEAMS base.TplName = "org/teams"
  14. TEAM_NEW base.TplName = "org/team_new"
  15. )
  16. func Teams(ctx *middleware.Context) {
  17. ctx.Data["Title"] = "Organization " + ctx.Params(":org") + " Teams"
  18. org, err := models.GetUserByName(ctx.Params(":org"))
  19. if err != nil {
  20. if err == models.ErrUserNotExist {
  21. ctx.Handle(404, "org.Teams(GetUserByName)", err)
  22. } else {
  23. ctx.Handle(500, "org.Teams(GetUserByName)", err)
  24. }
  25. return
  26. }
  27. ctx.Data["Org"] = org
  28. if err = org.GetTeams(); err != nil {
  29. ctx.Handle(500, "org.Teams(GetTeams)", err)
  30. return
  31. }
  32. for _, t := range org.Teams {
  33. if err = t.GetMembers(); err != nil {
  34. ctx.Handle(500, "org.Home(GetMembers)", err)
  35. return
  36. }
  37. }
  38. ctx.Data["Teams"] = org.Teams
  39. ctx.HTML(200, TEAMS)
  40. }
  41. func NewTeam(ctx *middleware.Context) {
  42. org, err := models.GetUserByName(ctx.Params(":org"))
  43. if err != nil {
  44. if err == models.ErrUserNotExist {
  45. ctx.Handle(404, "org.NewTeam(GetUserByName)", err)
  46. } else {
  47. ctx.Handle(500, "org.NewTeam(GetUserByName)", err)
  48. }
  49. return
  50. }
  51. ctx.Data["Org"] = org
  52. // Check ownership of organization.
  53. if !org.IsOrgOwner(ctx.User.Id) {
  54. ctx.Error(403)
  55. return
  56. }
  57. ctx.HTML(200, TEAM_NEW)
  58. }
  59. func NewTeamPost(ctx *middleware.Context, form auth.CreateTeamForm) {
  60. org, err := models.GetUserByName(ctx.Params(":org"))
  61. if err != nil {
  62. if err == models.ErrUserNotExist {
  63. ctx.Handle(404, "org.NewTeamPost(GetUserByName)", err)
  64. } else {
  65. ctx.Handle(500, "org.NewTeamPost(GetUserByName)", err)
  66. }
  67. return
  68. }
  69. ctx.Data["Org"] = org
  70. // Check ownership of organization.
  71. if !org.IsOrgOwner(ctx.User.Id) {
  72. ctx.Error(403)
  73. return
  74. }
  75. if ctx.HasError() {
  76. ctx.HTML(200, TEAM_NEW)
  77. return
  78. }
  79. // Validate permission level.
  80. var auth models.AuthorizeType
  81. switch form.Permission {
  82. case "read":
  83. auth = models.ORG_READABLE
  84. case "write":
  85. auth = models.ORG_WRITABLE
  86. case "admin":
  87. auth = models.ORG_ADMIN
  88. default:
  89. ctx.Error(401)
  90. return
  91. }
  92. t := &models.Team{
  93. OrgId: org.Id,
  94. Name: form.TeamName,
  95. Description: form.Description,
  96. Authorize: auth,
  97. }
  98. if err = models.NewTeam(t); err != nil {
  99. if err == models.ErrTeamAlreadyExist {
  100. ctx.Data["Err_TeamName"] = true
  101. ctx.RenderWithErr("Team name has already been used", TEAM_NEW, &form)
  102. } else {
  103. ctx.Handle(500, "org.NewTeamPost(NewTeam)", err)
  104. }
  105. return
  106. }
  107. log.Trace("%s Team created: %s/%s", ctx.Req.RequestURI, org.Name, t.Name)
  108. ctx.Redirect("/org/" + org.LowerName + "/teams/" + t.LowerName)
  109. }
  110. func EditTeam(ctx *middleware.Context) {
  111. ctx.Data["Title"] = "Organization " + ctx.Params(":org") + " Edit Team"
  112. ctx.HTML(200, "org/edit_team")
  113. }
  114. func SingleTeam(ctx *middleware.Context) {
  115. ctx.Data["Title"] = "single-team" + ctx.Params(":org")
  116. ctx.HTML(200, "org/team")
  117. }