temp_user.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package models
  2. import (
  3. "errors"
  4. "time"
  5. )
  6. // Typed errors
  7. var (
  8. ErrTempUserNotFound = errors.New("User not found")
  9. )
  10. type TempUserStatus string
  11. const (
  12. TmpUserSignUpStarted TempUserStatus = "SignUpStarted"
  13. TmpUserInvitePending TempUserStatus = "InvitePending"
  14. TmpUserCompleted TempUserStatus = "Completed"
  15. TmpUserEmailPending TempUserStatus = "EmailPending"
  16. TmpUserRevoked TempUserStatus = "Revoked"
  17. )
  18. // TempUser holds data for org invites and unconfirmed sign ups
  19. type TempUser struct {
  20. Id int64
  21. OrgId int64
  22. Version int
  23. Email string
  24. Name string
  25. Role RoleType
  26. InvitedByUserId int64
  27. Status TempUserStatus
  28. EmailSent bool
  29. EmailSentOn time.Time
  30. Code string
  31. RemoteAddr string
  32. Created time.Time
  33. Updated time.Time
  34. }
  35. // ---------------------
  36. // COMMANDS
  37. type CreateTempUserCommand struct {
  38. Email string
  39. Name string
  40. OrgId int64
  41. InvitedByUserId int64
  42. Status TempUserStatus
  43. Code string
  44. Role RoleType
  45. RemoteAddr string
  46. Result *TempUser
  47. }
  48. type UpdateTempUserStatusCommand struct {
  49. Code string
  50. Status TempUserStatus
  51. }
  52. type GetTempUsersForOrgQuery struct {
  53. OrgId int64
  54. Status TempUserStatus
  55. Result []*TempUserDTO
  56. }
  57. type GetTempUserByCodeQuery struct {
  58. Code string
  59. Result *TempUserDTO
  60. }
  61. type TempUserDTO struct {
  62. Id int64 `json:"id"`
  63. OrgId int64 `json:"orgId"`
  64. Name string `json:"name"`
  65. Email string `json:"email"`
  66. Role RoleType `json:"role"`
  67. InvitedByLogin string `json:"invitedByLogin"`
  68. InvitedByEmail string `json:"invitedByEmail"`
  69. InvitedByName string `json:"invitedByName"`
  70. Code string `json:"code"`
  71. Status TempUserStatus `json:"status"`
  72. Url string `json:"url"`
  73. EmailSent bool `json:"emailSent"`
  74. EmailSentOn time.Time `json:"emailSentOn"`
  75. Created time.Time `json:"createdOn"`
  76. }