user.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package models
  2. import (
  3. "errors"
  4. "time"
  5. )
  6. // Typed errors
  7. var (
  8. ErrUserNotFound = errors.New("User not found")
  9. )
  10. type Password string
  11. func (p Password) IsWeak() bool {
  12. return len(p) <= 4
  13. }
  14. type User struct {
  15. Id int64
  16. Version int
  17. Email string
  18. Name string
  19. Login string
  20. Password string
  21. Salt string
  22. Rands string
  23. Company string
  24. EmailVerified bool
  25. Theme string
  26. HelpFlags1 HelpFlags1
  27. IsAdmin bool
  28. OrgId int64
  29. Created time.Time
  30. Updated time.Time
  31. }
  32. func (u *User) NameOrFallback() string {
  33. if u.Name != "" {
  34. return u.Name
  35. } else if u.Login != "" {
  36. return u.Login
  37. } else {
  38. return u.Email
  39. }
  40. }
  41. // ---------------------
  42. // COMMANDS
  43. type CreateUserCommand struct {
  44. Email string
  45. Login string
  46. Name string
  47. Company string
  48. OrgName string
  49. Password string
  50. EmailVerified bool
  51. IsAdmin bool
  52. SkipOrgSetup bool
  53. DefaultOrgRole string
  54. Result User
  55. }
  56. type UpdateUserCommand struct {
  57. Name string `json:"name"`
  58. Email string `json:"email"`
  59. Login string `json:"login"`
  60. Theme string `json:"theme"`
  61. UserId int64 `json:"-"`
  62. }
  63. type ChangeUserPasswordCommand struct {
  64. OldPassword string `json:"oldPassword"`
  65. NewPassword string `json:"newPassword"`
  66. UserId int64 `json:"-"`
  67. }
  68. type UpdateUserPermissionsCommand struct {
  69. IsGrafanaAdmin bool
  70. UserId int64 `json:"-"`
  71. }
  72. type DeleteUserCommand struct {
  73. UserId int64
  74. }
  75. type SetUsingOrgCommand struct {
  76. UserId int64
  77. OrgId int64
  78. }
  79. // ----------------------
  80. // QUERIES
  81. type GetUserByLoginQuery struct {
  82. LoginOrEmail string
  83. Result *User
  84. }
  85. type GetUserByEmailQuery struct {
  86. Email string
  87. Result *User
  88. }
  89. type GetUserByIdQuery struct {
  90. Id int64
  91. Result *User
  92. }
  93. type GetSignedInUserQuery struct {
  94. UserId int64
  95. Login string
  96. Email string
  97. Result *SignedInUser
  98. }
  99. type GetUserProfileQuery struct {
  100. UserId int64
  101. Result UserProfileDTO
  102. }
  103. type SearchUsersQuery struct {
  104. Query string
  105. Page int
  106. Limit int
  107. Result []*UserSearchHitDTO
  108. }
  109. type GetUserOrgListQuery struct {
  110. UserId int64
  111. Result []*UserOrgDTO
  112. }
  113. // ------------------------
  114. // DTO & Projections
  115. type SignedInUser struct {
  116. UserId int64
  117. OrgId int64
  118. OrgName string
  119. OrgRole RoleType
  120. Login string
  121. Name string
  122. Email string
  123. ApiKeyId int64
  124. IsGrafanaAdmin bool
  125. HelpFlags1 HelpFlags1
  126. }
  127. type UserProfileDTO struct {
  128. Email string `json:"email"`
  129. Name string `json:"name"`
  130. Login string `json:"login"`
  131. Theme string `json:"theme"`
  132. OrgId int64 `json:"orgId"`
  133. IsGrafanaAdmin bool `json:"isGrafanaAdmin"`
  134. }
  135. type UserSearchHitDTO struct {
  136. Id int64 `json:"id"`
  137. Name string `json:"name"`
  138. Login string `json:"login"`
  139. Email string `json:"email"`
  140. IsAdmin bool `json:"isAdmin"`
  141. }
  142. type UserIdDTO struct {
  143. Id int64 `json:"id"`
  144. Message string `json:"message"`
  145. }