src.dualinventive.com/go/authentication-service/internal/pwreset/errors.go

194 lines
5.6 KiB
Go

package pwreset
import (
"errors"
"fmt"
)
//ErrVerifyPasswordFailed occurs when the given password does not match the given password verification
var ErrVerifyPasswordFailed = errors.New("password verify failed")
//ErrInvalidPassword occurs when the given password does not match a restriction regex
var ErrInvalidPassword = errors.New("invalid password")
//ErrUserFetchFailed wraps a repository error
type ErrUserFetchFailed struct {
user string
original error
}
//Error returns error message
func (e ErrUserFetchFailed) Error() string {
return fmt.Sprintf("failed to retrieve user '%s': %s", e.user, e.original.Error())
}
//NewErrUserFetchFailed wraps a repository error
func NewErrUserFetchFailed(user string, original error) error {
return &ErrUserFetchFailed{user, original}
}
//ErrUserNotFound occurs when no user by given userName is found
type ErrUserNotFound struct {
user string
}
//Error returns error message
func (e ErrUserNotFound) Error() string {
return fmt.Sprintf("user '%s' not found", e.user)
}
//NewErrUserNotFound occurs when no user by given userName is found
func NewErrUserNotFound(userName string) error {
return &ErrUserNotFound{userName}
}
//ErrUserEmailInvalid occurs when email is invalid
type ErrUserEmailInvalid struct {
user string
email string
}
//Error returns error message
func (e ErrUserEmailInvalid) Error() string {
return fmt.Sprintf("email '%s' of user '%s' is invalid", e.email, e.user)
}
//NewErrUserEmailInvalid occurs when a user has an invalid email address.
func NewErrUserEmailInvalid(user, email string) error {
return &ErrUserEmailInvalid{user, email}
}
//ErrUserEmailAddressEmpty occurs when a user email is an empty string or not set.
type ErrUserEmailAddressEmpty struct {
user string
}
//Error returns error message
func (e ErrUserEmailAddressEmpty) Error() string {
return fmt.Sprintf("user '%s' has empty email", e.user)
}
//NewErrUserEmailAddressEmpty occurs when a user email is an empty string or not set.
func NewErrUserEmailAddressEmpty(user string) error {
return &ErrUserEmailAddressEmpty{user}
}
//ErrFailedToCreateResetCode wraps a code repository error.
type ErrFailedToCreateResetCode struct {
user string
uuid string
original error
}
//Error returns error message
func (e ErrFailedToCreateResetCode) Error() string {
return fmt.Sprintf("failed to create password reset code for user '%s' using uuid '%s': %s",
e.user, e.uuid, e.original.Error())
}
//NewErrFailedToCreateResetCode wraps a code repository error.
func NewErrFailedToCreateResetCode(user, uuid string, original error) error {
return &ErrFailedToCreateResetCode{user, uuid, original}
}
//ErrFailedToGetResetCode wraps a code repository error.
type ErrFailedToGetResetCode struct {
user string
original error
}
//Error returns error message
func (e ErrFailedToGetResetCode) Error() string {
return fmt.Sprintf("failed to get password reset code for user '%s': %s",
e.user, e.original.Error())
}
//NewErrFailedToGetResetCode wraps a code repository error.
func NewErrFailedToGetResetCode(user string, original error) error {
return &ErrFailedToGetResetCode{user, original}
}
//ErrResetCodeNotFound wraps a code repository error.
type ErrResetCodeNotFound struct {
user string
}
//Error returns error message
func (e ErrResetCodeNotFound) Error() string {
return fmt.Sprintf("no password reset code found for user '%s'", e.user)
}
//NewErrResetCodeNotFound wraps a code repository error.
func NewErrResetCodeNotFound(user string) error {
return &ErrResetCodeNotFound{user}
}
//ErrFailedToSendEmail wraps email sender error.
type ErrFailedToSendEmail struct {
user string
email string
original error
}
//Error returns error message
func (e ErrFailedToSendEmail) Error() string {
return fmt.Sprintf("failed to send password reset code to email '%s' for user '%s': %s",
e.email, e.user, e.original.Error())
}
//NewErrFailedToSendEmail wraps email sender error.
func NewErrFailedToSendEmail(user, email string, original error) error {
return &ErrFailedToSendEmail{user, email, original}
}
//ErrInvalidResetCode occurs when the given resetcode does not equal the stored reset code
type ErrInvalidResetCode struct {
user string
resetCode string
}
//Error returns error message
func (e ErrInvalidResetCode) Error() string {
return fmt.Sprintf("invalid password reset code '%s' for user '%s'",
e.resetCode, e.user)
}
//NewErrInvalidResetCode occurs when the given resetcode does not equal the stored reset code
func NewErrInvalidResetCode(user, resetCode string) error {
return &ErrInvalidResetCode{user, resetCode}
}
//ErrDeleteResetCodeFailed occurs when the repository failed at deleting a reset code
type ErrDeleteResetCodeFailed struct {
user string
original error
}
//Error returns error message
func (e ErrDeleteResetCodeFailed) Error() string {
return fmt.Sprintf("failed to delete password reset code for user '%s': %s",
e.user, e.original.Error())
}
//NewErrDeleteResetCodeFailed occurs when the repository failed at deleting a reset code
func NewErrDeleteResetCodeFailed(user string, original error) error {
return &ErrDeleteResetCodeFailed{user, original}
}
//ErrChangePasswordFailed occurs when the repository failed at deleting a reset code
type ErrChangePasswordFailed struct {
user string
original error
}
//Error returns error message
func (e ErrChangePasswordFailed) Error() string {
return fmt.Sprintf("failed to change password for user '%s': %s",
e.user, e.original.Error())
}
//NewErrChangePasswordFailed occurs when the repository failed at deleting a reset code
func NewErrChangePasswordFailed(user string, original error) error {
return &ErrChangePasswordFailed{user, original}
}