- normalize emails (trim + lowercase) and enforce uniqueness across registration, OAuth auto-registration, and email binding - serialize concurrent writers on the same normalized email within a transaction to avoid duplicate accounts - resolve password reset to a single matching account and reject ambiguous or absent matches - require an existing password before self-service password change and reject login for accounts without a usable password
30 lines
717 B
Go
30 lines
717 B
Go
package model
|
|
|
|
import "errors"
|
|
|
|
// Common errors
|
|
var (
|
|
ErrDatabase = errors.New("database error")
|
|
)
|
|
|
|
// User auth errors
|
|
var (
|
|
ErrInvalidCredentials = errors.New("invalid credentials")
|
|
ErrUserEmptyCredentials = errors.New("empty credentials")
|
|
ErrEmailAlreadyTaken = errors.New("email already taken")
|
|
ErrEmailNotFound = errors.New("email not found")
|
|
ErrEmailAmbiguous = errors.New("email matches multiple users")
|
|
)
|
|
|
|
// Token auth errors
|
|
var (
|
|
ErrTokenNotProvided = errors.New("token not provided")
|
|
ErrTokenInvalid = errors.New("token invalid")
|
|
)
|
|
|
|
// Redemption errors
|
|
var ErrRedeemFailed = errors.New("redeem.failed")
|
|
|
|
// 2FA errors
|
|
var ErrTwoFANotEnabled = errors.New("2fa not enabled")
|