Documentation
¶
Index ¶
- Variables
- type ChangeEmailRequest
- type ChangePasswordRequest
- type ChangePhoneNumberRequest
- type DisableUser2FARequest
- type EnableUser2FARequest
- type EnableUser2FAResponseBody
- type EnableUser2FAResponseData
- type ForgotPasswordRequest
- type Generate2FATOTPUrlResponseBody
- type Generate2FATOTPUrlResponseData
- type GetRefreshTokenRequest
- type GetRefreshTokenResponseBody
- type GetRefreshTokenResponseData
- type ListRefreshTokensResponseBody
- type ListRefreshTokensResponseData
- type LogInRequest
- type LogInResponseBody
- type LogInResponseData
- type RegenerateUser2FARecoveryCodesRequest
- type RegenerateUser2FARecoveryCodesResponseBody
- type RegenerateUser2FARecoveryCodesResponseData
- type ResetPasswordRequest
- type RevokeRefreshTokenRequest
- type SendUser2FAEmailCodeRequest
- type SignUpRequest
- type Verify2FATOTPRequest
- type VerifyEmailRequest
- type VerifyPhoneNumberRequest
Constants ¶
This section is empty.
Variables ¶
var ( ErrSignUpUsernameAlreadyRegistered = gonethttpresponse.NewFailResponseError( "username", "username is already registered", nil, http.StatusBadRequest, ) ErrSignUpEmailAlreadyRegistered = gonethttpresponse.NewFailResponseError( "email", "email is already registered", nil, http.StatusBadRequest, ) ErrLogInInvalidUsername = gonethttpresponse.NewFailResponseError( "username", "user not found by username", nil, http.StatusUnauthorized, ) ErrLogInTooManyFailedAttempts = gonethttpresponse.NewFailResponseError( "password", "too many failed login attempts, try again later", nil, http.StatusUnauthorized, ) ErrLogInInvalidPassword = gonethttpresponse.NewFailResponseError( "password", "invalid password", nil, http.StatusUnauthorized, ) ErrLogInRequired2FACode = gonethttpresponse.NewFailResponseError( "2fa_code", fmt.Sprintf(govalidatormappervalidations.ErrRequiredField, "2fa_code"), nil, http.StatusBadRequest, ) ErrLogInInvalid2FAMethod = gonethttpresponse.NewFailResponseError( "2fa_method", "invalid 2FA method", nil, http.StatusBadRequest, ) ErrLogInInvalid2FARecoveryCode = gonethttpresponse.NewFailResponseError( "2fa_code", "invalid 2FA recovery code", nil, http.StatusUnauthorized, ) ErrLogInInvalid2FATOTPCode = gonethttpresponse.NewFailResponseError( "2fa_code", "invalid 2FA TOTP code", nil, http.StatusUnauthorized, ) ErrLogInInvalid2FAEmailCode = gonethttpresponse.NewFailResponseError( "2fa_code", "invalid 2FA email code", nil, http.StatusUnauthorized, ) ErrGenerate2FATOTP2FAIsNotEnabled = gonethttpresponse.NewFailResponseError( "2fa", "2FA is not enabled", nil, http.StatusBadRequest, ) ErrGenerate2FATOTPUrlAlreadyVerified = gonethttpresponse.NewFailResponseError( "totp", "2FA TOTP is already verified", nil, http.StatusBadRequest, ) ErrVerify2FATOTPNotGenerated = gonethttpresponse.NewFailResponseError( "totp", "user has not generated 2FA TOTP", nil, http.StatusBadRequest, ) ErrVerify2FATOTPInvalidTOTPCode = gonethttpresponse.NewFailResponseError( "totp_code", "invalid 2FA TOTP code", nil, http.StatusBadRequest, ) ErrVerify2FATOTPAlreadyVerified = gonethttpresponse.NewFailResponseError( "totp", "2FA TOTP is already verified", nil, http.StatusBadRequest, ) ErrGetRefreshTokenNotFound = gonethttpresponse.NewFailResponseError( "id", "refresh token not found", nil, http.StatusNotFound, ) ErrVerifyEmailTokenNotFound = gonethttpresponse.NewFailResponseError( "token_id", "email verification token not found", nil, http.StatusNotFound, ) ErrSendEmailVerificationTokenAlreadyVerified = gonethttpresponse.NewFailResponseError( "email", "email is already verified", nil, http.StatusBadRequest, ) ErrChangeEmailAlreadyRegistered = gonethttpresponse.NewFailResponseError( "email", "email is already registered", nil, http.StatusBadRequest, ) ErrVerifyEmailInvalidToken = gonethttpresponse.NewFailResponseError( "token", "email has already been verified, token has expired, or token is invalid", nil, http.StatusBadRequest, ) ErrResetPasswordInvalidToken = gonethttpresponse.NewFailResponseError( "token", "token has expired or is invalid", nil, http.StatusBadRequest, ) ErrChangePasswordInvalidOldPassword = gonethttpresponse.NewFailResponseError( "old_password", "invalid old password", nil, http.StatusBadRequest, ) ErrChangePasswordSamePassword = gonethttpresponse.NewFailResponseError( "new_password", "new password is the same as the old password", nil, http.StatusBadRequest, ) ErrEnableUser2FAInvalidPassword = gonethttpresponse.NewFailResponseError( "password", "invalid password", nil, http.StatusBadRequest, ) ErrEnableUser2FAEmailNotVerified = gonethttpresponse.NewFailResponseError( "email", "email is not verified", nil, http.StatusBadRequest, ) ErrorEnableUser2FA2FAIsAlreadyEnabled = gonethttpresponse.NewFailResponseError( "2fa", "2FA is already enabled", nil, http.StatusBadRequest, ) ErrDisableUser2FAInvalidPassword = gonethttpresponse.NewFailResponseError( "password", "invalid password", nil, http.StatusBadRequest, ) ErrDisableUser2FA2FAIsNotEnabled = gonethttpresponse.NewFailResponseError( "2fa", "2FA is not enabled", nil, http.StatusBadRequest, ) ErrRegenerateUser2FARecoveryCodesInvalidPassword = gonethttpresponse.NewFailResponseError( "password", "invalid password", nil, http.StatusBadRequest, ) ErrRegenerateUser2FARecoveryCodes2FAIsNotEnabled = gonethttpresponse.NewFailResponseError( "2fa", "2FA is not enabled", nil, http.StatusBadRequest, ) ErrSendUser2FAEmailCode2FAIsNotEnabled = gonethttpresponse.NewFailResponseError( "2fa", "2FA is not enabled", nil, http.StatusBadRequest, ) ErrSendUser2FAEmailCodeInvalidUsername = gonethttpresponse.NewFailResponseError( "username", "user not found by username", nil, http.StatusUnauthorized, ) ErrSendUser2FAEmailCodeInvalidPassword = gonethttpresponse.NewFailResponseError( "password", "invalid password", nil, http.StatusBadRequest, ) )
var ( Service = &service{} Controller = &controller{} Module = &gonethttp.Module{ Pattern: "/auth", Service: Service, Controller: Controller, RegisterRoutesFn: func(m *gonethttp.Module) { m.RegisterExactRoute( "POST /signup", Controller.SignUp, internalmiddleware.Validate( &SignUpRequest{}, func( body *SignUpRequest, validations *govalidatormappervalidation.StructValidations, ) { internalvalidator.Service.Email( "email", body.Email, validations, ) internalvalidator.Service.Password( "password", body.Password, internal.PasswordOptions, validations, ) internalvalidator.Service.Username( "username", body.Username, validations, ) }, ), ) m.RegisterExactRoute( "POST /login", Controller.LogIn, internalmiddleware.Validate( &LogInRequest{}, ), ) m.RegisterExactRoute( "POST /refresh-token", Controller.RefreshToken, internalmiddleware.AuthenticateRefreshToken, ) m.RegisterExactRoute( "POST /logout", Controller.LogOut, internalmiddleware.AuthenticateRefreshToken, ) m.RegisterExactRoute( "GET /refresh-token", Controller.GetRefreshToken, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate( &GetRefreshTokenRequest{}, ), ) m.RegisterExactRoute( "GET /refresh-tokens", Controller.ListRefreshTokens, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "DELETE /refresh-token", Controller.RevokeRefreshToken, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate( &RevokeRefreshTokenRequest{}, ), ) m.RegisterExactRoute( "DELETE /refresh-tokens", Controller.RevokeRefreshTokens, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "POST /2fa/totp/generate", Controller.Generate2FATOTPUrl, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "POST /2fa/totp/verify", Controller.Verify2FATOTP, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate( &Verify2FATOTPRequest{}, ), ) m.RegisterExactRoute( "DELETE /2fa/totp", Controller.Revoke2FATOTP, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "PUT /password", Controller.ChangePassword, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate( &ChangePasswordRequest{}, func( body *ChangePasswordRequest, validations *govalidatormappervalidation.StructValidations, ) { internalvalidator.Service.Password( "new_password", body.NewPassword, internal.PasswordOptions, validations, ) }, ), ) m.RegisterExactRoute( "POST /password/forgot", Controller.ForgotPassword, internalmiddleware.Validate( &ForgotPasswordRequest{}, ), ) m.RegisterExactRoute( "POST /password/reset", Controller.ResetPassword, internalmiddleware.Validate( &ResetPasswordRequest{}, func( body *ResetPasswordRequest, validations *govalidatormappervalidation.StructValidations, ) { internalvalidator.Service.Password( "new_password", body.NewPassword, internal.PasswordOptions, validations, ) }, ), ) m.RegisterExactRoute( "PUT /email", Controller.ChangeEmail, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&ChangeEmailRequest{}), ) m.RegisterExactRoute( "POST /email/send-verification", Controller.SendEmailVerificationToken, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "POST /email/verify", Controller.VerifyEmail, internalmiddleware.Validate(&VerifyEmailRequest{}), ) m.RegisterExactRoute( "PUT /phone-number", Controller.ChangePhoneNumber, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&ChangePhoneNumberRequest{}), ) m.RegisterExactRoute( "POST /phone-number/send-verification", Controller.SendPhoneNumberVerificationCode, internalmiddleware.AuthenticateAccessToken, ) m.RegisterExactRoute( "POST /phone-number/verify", Controller.VerifyPhoneNumber, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&VerifyPhoneNumberRequest{}), ) m.RegisterExactRoute( "POST /2fa/enable", Controller.EnableUser2FA, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&EnableUser2FARequest{}), ) m.RegisterExactRoute( "POST /2fa/disable", Controller.DisableUser2FA, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&DisableUser2FARequest{}), ) m.RegisterExactRoute( "POST /2fa/recovery-codes/regenerate", Controller.RegenerateUser2FARecoveryCodes, internalmiddleware.AuthenticateAccessToken, internalmiddleware.Validate(&RegenerateUser2FARecoveryCodesRequest{}), ) m.RegisterExactRoute( "POST /2fa/email/send-code", Controller.SendUser2FAEmailCode, internalmiddleware.Validate(&SendUser2FAEmailCodeRequest{}), ) }, } )
Functions ¶
This section is empty.
Types ¶
type ChangeEmailRequest ¶
type ChangeEmailRequest struct {
Email string `json:"email"`
}
ChangeEmailRequest is the request DTO to change email
type ChangePasswordRequest ¶
type ChangePasswordRequest struct {
OldPassword string `json:"old_password"`
NewPassword string `json:"new_password"`
}
ChangePasswordRequest is the request DTO to change password
type ChangePhoneNumberRequest ¶
type ChangePhoneNumberRequest struct {
PhoneNumber string `json:"phone_number"`
}
ChangePhoneNumberRequest is the request DTO to change phone number
type DisableUser2FARequest ¶
type DisableUser2FARequest struct {
Password string `json:"password"`
}
DisableUser2FARequest is the request DTO to disable user 2FA
type EnableUser2FARequest ¶
type EnableUser2FARequest struct {
Password string `json:"password"`
}
EnableUser2FARequest is the request DTO to enable user 2FA
type EnableUser2FAResponseBody ¶
type EnableUser2FAResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data EnableUser2FAResponseData `json:"data"`
}
EnableUser2FAResponseBody is the response body DTO to enable user 2FA
type EnableUser2FAResponseData ¶
type EnableUser2FAResponseData struct {
RecoveryCodes []string `json:"recovery_codes"`
}
EnableUser2FAResponseData is the response data DTO to enable user 2FA
type ForgotPasswordRequest ¶
type ForgotPasswordRequest struct {
Email string `json:"email"`
}
ForgotPasswordRequest is the request DTO to forgot password
type Generate2FATOTPUrlResponseBody ¶
type Generate2FATOTPUrlResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data Generate2FATOTPUrlResponseData `json:"data"`
}
Generate2FATOTPUrlResponseBody is the response body DTO to generate 2FA TOTP URL
type Generate2FATOTPUrlResponseData ¶
type Generate2FATOTPUrlResponseData struct {
TOTPUrl string `json:"totp_url"`
}
Generate2FATOTPUrlResponseData is the response data DTO to generate 2FA TOTP URL
type GetRefreshTokenRequest ¶
type GetRefreshTokenRequest struct {
RefreshTokenID int64 `json:"refresh_token_id"`
}
GetRefreshTokenRequest is the request DTO to get a refresh token
type GetRefreshTokenResponseBody ¶
type GetRefreshTokenResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data GetRefreshTokenResponseData `json:"data"`
}
GetRefreshTokenResponseBody is the response body DTO to get a refresh token that has not been revoked or expired
type GetRefreshTokenResponseData ¶
type GetRefreshTokenResponseData struct {
RefreshToken *internalpostgresmodel.UserRefreshToken `json:"refresh_token"`
}
GetRefreshTokenResponseData is the response data DTO to get a refresh token that has not been revoked or expired
type ListRefreshTokensResponseBody ¶
type ListRefreshTokensResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data ListRefreshTokensResponseData `json:"data"`
}
ListRefreshTokensResponseBody is the response body DTO to list refresh tokens that have not been revoked or expired
type ListRefreshTokensResponseData ¶
type ListRefreshTokensResponseData struct {
RefreshTokens []*internalpostgresmodel.UserRefreshTokenWithID `json:"refresh_tokens"`
}
ListRefreshTokensResponseData is the response data DTO to list refresh tokens that have not been revoked or expired
type LogInRequest ¶
type LogInRequest struct {
Username string `json:"username"`
Password string `json:"password"`
TwoFactorAuthenticationMethod *string `json:"2fa_method,omitempty"`
TwoFactorAuthenticationCode *string `json:"2fa_code,omitempty"`
}
LogInRequest is the request DTO to log in
type LogInResponseBody ¶
type LogInResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data LogInResponseData `json:"data"`
}
LogInResponseBody is the response body DTO to log in
type LogInResponseData ¶
type LogInResponseData struct {
TwoFactorAuthenticationMethods *[]string `json:"2fa_methods,omitempty"`
TwoFactorAuthenticationRecoveryCodes *[]string `json:"2fa_recovery_codes,omitempty"`
}
LogInResponseData is the response data DTO to log in
type RegenerateUser2FARecoveryCodesRequest ¶
type RegenerateUser2FARecoveryCodesRequest struct {
Password string `json:"password"`
}
RegenerateUser2FARecoveryCodesRequest is the request DTO to regenerate user 2FA recovery codes
type RegenerateUser2FARecoveryCodesResponseBody ¶
type RegenerateUser2FARecoveryCodesResponseBody struct {
gonethttpresponse.BaseJSendSuccessBody
Data RegenerateUser2FARecoveryCodesResponseData `json:"data"`
}
RegenerateUser2FARecoveryCodesResponseBody is the response body DTO to regenerate user 2FA recovery codes
type RegenerateUser2FARecoveryCodesResponseData ¶
type RegenerateUser2FARecoveryCodesResponseData struct {
RecoveryCodes []string `json:"recovery_codes"`
}
RegenerateUser2FARecoveryCodesResponseData is the response data DTO to regenerate user 2FA recovery codes
type ResetPasswordRequest ¶
type ResetPasswordRequest struct {
NewPassword string `json:"new_password"`
Token string `json:"token"`
}
ResetPasswordRequest is the request DTO to reset password
type RevokeRefreshTokenRequest ¶
type RevokeRefreshTokenRequest struct {
RefreshTokenID int64 `json:"refresh_token_id"`
}
RevokeRefreshTokenRequest is the request DTO to revoke a refresh token
type SendUser2FAEmailCodeRequest ¶
type SendUser2FAEmailCodeRequest struct {
Username string `json:"username"`
Password string `json:"password"`
}
SendUser2FAEmailCodeRequest is the request DTO to send user 2FA email code
type SignUpRequest ¶
type SignUpRequest struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
}
SignUpRequest is the request DTO to sign up
type Verify2FATOTPRequest ¶
type Verify2FATOTPRequest struct {
TOTPCode string `json:"totp_code"`
}
Verify2FATOTPRequest is the request DTO to verify 2FA TOTP
type VerifyEmailRequest ¶
type VerifyEmailRequest struct {
Token string `json:"token"`
}
VerifyEmailRequest is the request DTO to verify email
type VerifyPhoneNumberRequest ¶
type VerifyPhoneNumberRequest struct {
Token string `json:"token"`
}
VerifyPhoneNumberRequest is the request DTO to verify phone number