summaryrefslogtreecommitdiff
path: root/internal/api/model/user.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-06-06 15:43:25 +0200
committerLibravatar GitHub <noreply@github.com>2024-06-06 14:43:25 +0100
commitbcda048eab799284fc46d74706334bf9ef76dc83 (patch)
treec4595fe5e6e6fd570d59cee7095a336f2e884344 /internal/api/model/user.go
parentdrop date (#2969) (diff)
downloadgotosocial-bcda048eab799284fc46d74706334bf9ef76dc83.tar.xz
[feature] Self-serve email change for users (#2957)
* [feature] Email change * frontend stuff for changing email * docs * tests etc * differentiate more clearly between local user+account and account * populate user
Diffstat (limited to 'internal/api/model/user.go')
-rw-r--r--internal/api/model/user.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/internal/api/model/user.go b/internal/api/model/user.go
index 1a70a90d7..9226406d6 100644
--- a/internal/api/model/user.go
+++ b/internal/api/model/user.go
@@ -17,6 +17,51 @@
package model
+// User models fields relevant to one user.
+//
+// swagger:model user
+type User struct {
+ // Database ID of this user.
+ // example: 01FBVD42CQ3ZEEVMW180SBX03B
+ ID string `json:"id"`
+ // Time this user was created. (ISO 8601 Datetime)
+ // example: 2021-07-30T09:20:25+00:00
+ CreatedAt string `json:"created_at"`
+ // Confirmed email address of this user, if set.
+ // example: someone@example.org
+ Email string `json:"email,omitempty"`
+ // Unconfirmed email address of this user, if set.
+ // example: someone.else@somewhere.else.example.org
+ UnconfirmedEmail string `json:"unconfirmed_email,omitempty"`
+ // Reason for sign-up, if provided.
+ // example: Please! Pretty please!
+ Reason string `json:"reason,omitempty"`
+ // Time at which this user was last emailed, if at all. (ISO 8601 Datetime)
+ // example: 2021-07-30T09:20:25+00:00
+ LastEmailedAt string `json:"last_emailed_at,omitempty"`
+ // Time at which the email given in the `email` field was confirmed, if at all. (ISO 8601 Datetime)
+ // example: 2021-07-30T09:20:25+00:00
+ ConfirmedAt string `json:"confirmed_at,omitempty"`
+ // Time when the last "please confirm your email address" email was sent, if at all. (ISO 8601 Datetime)
+ // example: 2021-07-30T09:20:25+00:00
+ ConfirmationSentAt string `json:"confirmation_sent_at,omitempty"`
+ // User is a moderator.
+ // example: false
+ Moderator bool `json:"moderator"`
+ // User is an admin.
+ // example: false
+ Admin bool `json:"admin"`
+ // User's account is disabled.
+ // example: false
+ Disabled bool `json:"disabled"`
+ // User was approved by an admin.
+ // example: true
+ Approved bool `json:"approved"`
+ // Time when the last "please reset your password" email was sent, if at all. (ISO 8601 Datetime)
+ // example: 2021-07-30T09:20:25+00:00
+ ResetPasswordSentAt string `json:"reset_password_sent_at,omitempty"`
+}
+
// PasswordChangeRequest models user password change parameters.
//
// swagger:parameters userPasswordChange
@@ -34,3 +79,19 @@ type PasswordChangeRequest struct {
// required: true
NewPassword string `form:"new_password" json:"new_password" xml:"new_password" validation:"required"`
}
+
+// EmailChangeRequest models user email change parameters.
+//
+// swagger:parameters userEmailChange
+type EmailChangeRequest struct {
+ // User's current password, for verification.
+ //
+ // in: formData
+ // required: true
+ Password string `form:"password" json:"password" xml:"password" validation:"required"`
+ // Desired new email address.
+ //
+ // in: formData
+ // required: true
+ NewEmail string `form:"new_email" json:"new_email" xml:"new_email" validation:"required"`
+}