user.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. OrgId int64
  98. Result *SignedInUser
  99. }
  100. type GetUserProfileQuery struct {
  101. UserId int64
  102. Result UserProfileDTO
  103. }
  104. type SearchUsersQuery struct {
  105. Query string
  106. Page int
  107. Limit int
  108. Result SearchUserQueryResult
  109. }
  110. type SearchUserQueryResult struct {
  111. TotalCount int64 `json:"totalCount"`
  112. Users []*UserSearchHitDTO `json:"users"`
  113. Page int `json:"page"`
  114. PerPage int `json:"perPage"`
  115. }
  116. type GetUserOrgListQuery struct {
  117. UserId int64
  118. Result []*UserOrgDTO
  119. }
  120. // ------------------------
  121. // DTO & Projections
  122. type SignedInUser struct {
  123. UserId int64
  124. OrgId int64
  125. OrgName string
  126. OrgRole RoleType
  127. Login string
  128. Name string
  129. Email string
  130. ApiKeyId int64
  131. IsGrafanaAdmin bool
  132. HelpFlags1 HelpFlags1
  133. }
  134. type UserProfileDTO struct {
  135. Email string `json:"email"`
  136. Name string `json:"name"`
  137. Login string `json:"login"`
  138. Theme string `json:"theme"`
  139. OrgId int64 `json:"orgId"`
  140. IsGrafanaAdmin bool `json:"isGrafanaAdmin"`
  141. }
  142. type UserSearchHitDTO struct {
  143. Id int64 `json:"id"`
  144. Name string `json:"name"`
  145. Login string `json:"login"`
  146. Email string `json:"email"`
  147. IsAdmin bool `json:"isAdmin"`
  148. }
  149. type UserIdDTO struct {
  150. Id int64 `json:"id"`
  151. Message string `json:"message"`
  152. }