You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

user_redirect.go 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2020 The Gitea 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 models
  5. import (
  6. "strings"
  7. "code.gitea.io/gitea/models/db"
  8. )
  9. // UserRedirect represents that a user name should be redirected to another
  10. type UserRedirect struct {
  11. ID int64 `xorm:"pk autoincr"`
  12. LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"`
  13. RedirectUserID int64 // userID to redirect to
  14. }
  15. func init() {
  16. db.RegisterModel(new(UserRedirect))
  17. }
  18. // LookupUserRedirect look up userID if a user has a redirect name
  19. func LookupUserRedirect(userName string) (int64, error) {
  20. userName = strings.ToLower(userName)
  21. redirect := &UserRedirect{LowerName: userName}
  22. if has, err := db.GetEngine(db.DefaultContext).Get(redirect); err != nil {
  23. return 0, err
  24. } else if !has {
  25. return 0, ErrUserRedirectNotExist{Name: userName}
  26. }
  27. return redirect.RedirectUserID, nil
  28. }
  29. // newUserRedirect create a new user redirect
  30. func newUserRedirect(e db.Engine, ID int64, oldUserName, newUserName string) error {
  31. oldUserName = strings.ToLower(oldUserName)
  32. newUserName = strings.ToLower(newUserName)
  33. if err := deleteUserRedirect(e, newUserName); err != nil {
  34. return err
  35. }
  36. if _, err := e.Insert(&UserRedirect{
  37. LowerName: oldUserName,
  38. RedirectUserID: ID,
  39. }); err != nil {
  40. return err
  41. }
  42. return nil
  43. }
  44. // deleteUserRedirect delete any redirect from the specified user name to
  45. // anything else
  46. func deleteUserRedirect(e db.Engine, userName string) error {
  47. userName = strings.ToLower(userName)
  48. _, err := e.Delete(&UserRedirect{LowerName: userName})
  49. return err
  50. }