user.go 2.9 KB

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