2026-08-09 22:47:43 +02:00
|
|
|
package auth
|
|
|
|
|
|
|
|
|
|
import "errors"
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
ErrRegisterFieldsRequired = errors.New("email, password, and company name are required")
|
|
|
|
|
ErrPasswordTooShort = errors.New("password must be at least 8 characters")
|
|
|
|
|
ErrUserNotFound = errors.New("user not found")
|
|
|
|
|
ErrNotCompanyMember = errors.New("not a member of company")
|
2026-08-14 00:06:43 +02:00
|
|
|
ErrCompanyNotFound = errors.New("company not found")
|
2026-08-09 22:47:43 +02:00
|
|
|
ErrInviteNotFound = errors.New("invite not found")
|
|
|
|
|
ErrEmailRequired = errors.New("email is required")
|
|
|
|
|
ErrSyntheticEmail = errors.New("synthetic migration email cannot receive invites")
|
|
|
|
|
ErrNotEligibleSetPassword = errors.New("user not eligible for set-password invite")
|
|
|
|
|
ErrEmailMismatch = errors.New("signed-in email does not match invite email")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ClientError reports whether err is a known client-facing auth error.
|
|
|
|
|
func ClientError(err error) (msg string, ok bool) {
|
|
|
|
|
switch {
|
|
|
|
|
case err == nil:
|
|
|
|
|
return "", false
|
|
|
|
|
case errors.Is(err, ErrRegisterFieldsRequired),
|
|
|
|
|
errors.Is(err, ErrPasswordTooShort),
|
|
|
|
|
errors.Is(err, ErrPasswordAlreadySet),
|
|
|
|
|
errors.Is(err, ErrUserExists),
|
|
|
|
|
errors.Is(err, ErrInviteInvalid),
|
|
|
|
|
errors.Is(err, ErrInvalidCredentials),
|
|
|
|
|
errors.Is(err, ErrMustSetPassword),
|
|
|
|
|
errors.Is(err, ErrUserNotFound),
|
|
|
|
|
errors.Is(err, ErrNotCompanyMember),
|
|
|
|
|
errors.Is(err, ErrInviteNotFound),
|
|
|
|
|
errors.Is(err, ErrTokenInvalid),
|
|
|
|
|
errors.Is(err, ErrEmailRequired),
|
|
|
|
|
errors.Is(err, ErrSyntheticEmail),
|
|
|
|
|
errors.Is(err, ErrNotEligibleSetPassword),
|
2026-08-17 00:39:25 +02:00
|
|
|
errors.Is(err, ErrEmailMismatch),
|
|
|
|
|
errors.Is(err, ErrNotCompanyOwner),
|
|
|
|
|
errors.Is(err, ErrCannotRemoveOwner),
|
|
|
|
|
errors.Is(err, ErrTransferSelf),
|
|
|
|
|
errors.Is(err, ErrOwnerRequired):
|
2026-08-09 22:47:43 +02:00
|
|
|
return err.Error(), true
|
|
|
|
|
default:
|
|
|
|
|
return "", false
|
|
|
|
|
}
|
|
|
|
|
}
|