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

user_role.go 1.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package role
  2. import (
  3. "code.gitea.io/gitea/models"
  4. pg "github.com/lib/pq"
  5. )
  6. func AddUserRole(userId int64, roleType models.RoleType) error {
  7. role := GetRole(roleType)
  8. if role == nil {
  9. return models.ErrRoleNotExists{}
  10. }
  11. _, err := models.NewUserRole(models.UserRole{UserId: userId, RoleType: roleType})
  12. if err != nil {
  13. e := err.(*pg.Error)
  14. //23505 is postgrey error code for unique_violation
  15. //see https://www.postgresql.org/docs/current/errcodes-appendix.html
  16. //if unique_violation,user role record exists,just return
  17. if e.Code == "23505" {
  18. return nil
  19. }
  20. }
  21. return err
  22. }
  23. func DeleteUserRole(userId int64, roleType models.RoleType) error {
  24. role := GetRole(roleType)
  25. if role == nil {
  26. return models.ErrRoleNotExists{}
  27. }
  28. _, err := models.DeleteUserRole(roleType, userId)
  29. return err
  30. }
  31. func UserHasRole(userId int64, roleType models.RoleType) bool {
  32. role := GetRole(roleType)
  33. if role == nil {
  34. return false
  35. }
  36. _, err := models.GetUserRoleByUserAndRole(userId, roleType)
  37. if err != nil {
  38. return false
  39. }
  40. return true
  41. }