mirror of
https://github.com/warmbly/warmbly.git
synced 2026-09-09 08:03:38 +00:00
Add authenticated session listing and revocation APIs, track the auth provider on sessions, and expose active session controls in account security settings.
118 lines
7.0 KiB
Go
118 lines
7.0 KiB
Go
package errx
|
||
|
||
import (
|
||
"fmt"
|
||
|
||
"github.com/warmbly/warmbly/internal/config"
|
||
)
|
||
|
||
var (
|
||
ErrInvalid = New(BadRequest, "The request body contains invalid or malformed JSON.")
|
||
|
||
ErrLock = New(BadRequest, "Resource is locked. Another process is running, please wait.")
|
||
ErrColor = New(BadRequest, "Hex color must be a valid string.")
|
||
ErrUuid = New(BadRequest, "The id must be a valid uuid.")
|
||
ErrCategory = New(BadRequest, "Category doesn't exists.")
|
||
ErrTag = New(BadRequest, "Tag doesn't exists.")
|
||
ErrBitmask = New(BadRequest, "Invalid bitmask value.")
|
||
ErrRole = New(BadRequest, "Role doesn't exists.")
|
||
ErrPosition = New(BadRequest, "Invalid position.")
|
||
ErrTimezone = New(BadRequest, "Timezone doesn't exists.")
|
||
ErrTime = New(BadRequest, "Invalid time format.")
|
||
ErrNotEnough = New(BadRequest, "Not enough data to perform this action.")
|
||
ErrJSONKey = New(BadRequest, "JSON key can only contain characters and underscore.")
|
||
ErrLimit = New(BadRequest, "Limit must be between 10 and 200.")
|
||
|
||
// Authorization
|
||
ErrToken = New(Unauthorized, "Invalid or expired token.")
|
||
ErrAuth = New(Unauthorized, "Missing or invalid Authorization header.")
|
||
|
||
ErrUser = New(BadRequest, "User doesn't exists.")
|
||
ErrPassword = New(BadRequest, "Password must be at least 8 characters long.")
|
||
ErrEmail = New(BadRequest, "Invalid email address.")
|
||
ErrCredentials = New(BadRequest, "Invalid email or password.")
|
||
ErrSession = New(BadRequest, "Invalid or expired session.")
|
||
ErrCodeLimit = New(BadRequest, "Too many attempts. Start a new session and try again later.")
|
||
ErrCode = New(BadRequest, "Invalid or expired verification code.")
|
||
ErrAuthLimit = New(BadRequest, "Too many attempts, please try again later.")
|
||
|
||
ErrExternalCode = New(BadRequest, "Invalid or expired code, please try again.")
|
||
ErrExternalEmail = New(BadRequest, "Invalid or unverified email address.")
|
||
|
||
// Sessions
|
||
ErrSessionNotFound = New(NotFound, "Session not found.")
|
||
ErrSessionCurrent = New(BadRequest, "You can't revoke the session you're currently using. Use sign out instead.")
|
||
|
||
// Passkeys (WebAuthn)
|
||
ErrPasskey = New(BadRequest, "We couldn’t verify that passkey. Please try again.")
|
||
ErrPasskeySession = New(BadRequest, "Your passkey request expired. Please start again.")
|
||
ErrPasskeyName = New(BadRequest, "Passkey name must be between 1 and 60 characters.")
|
||
ErrPasskeyNotFound = New(NotFound, "Passkey not found.")
|
||
ErrPasskeyExists = New(Conflict, "This passkey is already registered.")
|
||
ErrPasskeyNone = New(BadRequest, "No passkey was found for this account.")
|
||
|
||
// Roles
|
||
ErrRoleName = New(BadRequest, "Role name length must be between 3 and 100 characters.")
|
||
|
||
// Captch
|
||
ErrCaptcha = New(BadRequest, "We couldn’t verify you’re human. Please try the security check again or reload the page.")
|
||
|
||
// Group
|
||
ErrGroupTitle = New(BadRequest, "The title length must be between 1 and 50 characters.")
|
||
ErrGroupMax = New(BadRequest, "You reached the maximum amount.")
|
||
|
||
// Email
|
||
ErrEmailCredentials = New(BadRequest, "Invalid email credentials.")
|
||
ErrEmailValidation = New(BadRequest, "Deadline exceed, try again later.")
|
||
ErrEmailOnboardProvider = New(BadRequest, "Unsupported email provider. Use 'gmail', 'outlook', or 'smtp_imap'.")
|
||
ErrEmailOnboardState = New(BadRequest, "Invalid or expired onboarding state.")
|
||
ErrEmailOnboardCode = New(BadRequest, "Authorization code is missing or invalid.")
|
||
ErrEmailOnboardExchange = New(BadRequest, "Could not exchange the authorization code with the provider.")
|
||
ErrEmailOnboardUserInfo = New(BadRequest, "Could not read account details from the provider.")
|
||
ErrEmailOnboardAlreadyExists = New(Conflict, "This email account is already connected.")
|
||
ErrEmailOnboardNoWorker = New(ServiceUnavailable, "No mailbox workers are available right now. Please try again shortly.")
|
||
ErrEmailOnboardInboxLimit = New(Forbidden, "Your free trial includes two connected inboxes. Upgrade to add more.")
|
||
ErrEmailOnboardTrialExpired = New(Forbidden, "Your free trial has ended. Upgrade to connect inboxes.")
|
||
ErrEmailSMTPHost = New(BadRequest, "SMTP host is required.")
|
||
ErrEmailSMTPPort = New(BadRequest, "SMTP port must be 465 or 587.")
|
||
ErrEmailIMAPHost = New(BadRequest, "IMAP host is required.")
|
||
ErrEmailIMAPPort = New(BadRequest, "IMAP port must be a positive integer.")
|
||
ErrEmailCredentialsRequired = New(BadRequest, "SMTP and IMAP credentials are required.")
|
||
ErrEmailTrackingDomain = New(BadRequest, "Invalid tracking domain.")
|
||
ErrEmailTrackingDomainLength = New(BadRequest, "Tracking domain is too long (max 253 characters).")
|
||
ErrEmailName = New(BadRequest, "Invalid name. Must be 2–100 characters and contain only letters, numbers, spaces, '-', '.', or '’'.")
|
||
ErrEmailSignaturePlain = New(BadRequest, "Plain email signature is too long.")
|
||
ErrEmailSignatureHTML = New(BadRequest, "HTML email signature is too long.")
|
||
ErrEmailMinWaitTime = New(BadRequest, "Minimum time gap between emails must be between 0 and 86400 minutes.")
|
||
ErrEmailCampaignLimit = New(BadRequest, "Campaign limit must be between 0 and 100.")
|
||
ErrEmailWarmupBase = New(BadRequest, "Warmup base must be between 0 and 100.")
|
||
ErrEmailWarmupMax = New(BadRequest, "Warmup max amount must be between 0 and 100.")
|
||
ErrEmailWarmupIncrease = New(BadRequest, "Warmup increase amount must be between 0 and 100.")
|
||
ErrEmailReplyRate = New(BadRequest, "Warmup reply rate must be between 0 and 100.")
|
||
|
||
// Campaign
|
||
ErrCampaignName = New(BadRequest, "Campaign name length must be between 3 and 50 characters.")
|
||
ErrCampaignDescription = New(BadRequest, "Campaign description length must be below 300 characters.")
|
||
ErrCampaignDailyLimit = New(BadRequest, "Daily limit must be between 3 and 10000000.")
|
||
ErrCampaignStartDate = New(BadRequest, "Start date must be in the future, use null if you want to start now.")
|
||
ErrCampaignEndDate = New(BadRequest, "End date must be in the future.")
|
||
ErrCampaignLimit = New(BadRequest, "You reached your limit for campaigns, please try again later.")
|
||
|
||
// Sequence
|
||
ErrSequenceName = New(BadRequest, "Sequence name cannot be longer than 50 characters.")
|
||
ErrSequenceSubject = New(BadRequest, "Sequence subject cannot be longer than 100 characters.")
|
||
ErrSequenceBody = New(BadRequest, fmt.Sprintf("Sequence body cannot be longer than %d characters.", config.SequenceBodyLimit))
|
||
|
||
// Contact
|
||
ErrContactSerialize = New(BadRequest, "Failed to serialize contact.")
|
||
ErrContactSize = New(BadRequest, "Contact size cannot be bigger than 10KB.")
|
||
|
||
// Unibox
|
||
ErrUniboxLimit = New(BadRequest, fmt.Sprintf("Limit must be between %d and %d.", config.UniboxLimitMin, config.UniboxLimitMax))
|
||
ErrSeenMax = New(BadRequest, "Cannot update more than 500 messages.")
|
||
|
||
// Servers
|
||
ErrIPAddr = New(BadRequest, "Invalid IP Address.")
|
||
ErrPublicKey = New(BadRequest, "Invalid Public Key.")
|
||
)
|