repo.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 middleware
  5. import (
  6. "github.com/codegangsta/martini"
  7. "github.com/gogits/gogs/models"
  8. )
  9. func RepoAssignment(redirect bool) martini.Handler {
  10. return func(ctx *Context, params martini.Params) {
  11. // assign false first
  12. ctx.Data["IsRepositoryValid"] = false
  13. var (
  14. user *models.User
  15. err error
  16. )
  17. // get repository owner
  18. ctx.Repo.IsOwner = ctx.IsSigned && ctx.User.LowerName == params["username"]
  19. ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner
  20. if !ctx.Repo.IsOwner {
  21. user, err = models.GetUserByName(params["username"])
  22. if err != nil {
  23. if redirect {
  24. ctx.Render.Redirect("/")
  25. return
  26. }
  27. //data["ErrorMsg"] = err
  28. //log.Error("repo.Single: %v", err)
  29. //r.HTML(200, "base/error", data)
  30. return
  31. }
  32. } else {
  33. user = ctx.User
  34. }
  35. if user == nil {
  36. if redirect {
  37. ctx.Render.Redirect("/")
  38. return
  39. }
  40. //data["ErrorMsg"] = "invliad user account for single repository"
  41. //log.Error("repo.Single: %v", err)
  42. //r.HTML(200, "base/error", data)
  43. return
  44. }
  45. // get repository
  46. repo, err := models.GetRepositoryByName(user, params["reponame"])
  47. if err != nil {
  48. if redirect {
  49. ctx.Render.Redirect("/")
  50. return
  51. }
  52. //data["ErrorMsg"] = err
  53. //log.Error("repo.Single: %v", err)
  54. //r.HTML(200, "base/error", data)
  55. return
  56. }
  57. ctx.Repo.IsValid = true
  58. ctx.Repo.Repository = repo
  59. ctx.Data["IsRepositoryValid"] = true
  60. ctx.Data["Repository"] = repo
  61. ctx.Data["Owner"] = user
  62. ctx.Data["Title"] = user.Name + "/" + repo.Name
  63. ctx.Data["RepositoryLink"] = ctx.Data["Title"]
  64. }
  65. }