export const DEFAULT_SESSION_EXPIRY = 365 * 24 * 60 * 60 * 1000; // 365 days export const SESSION_EXPIRY_NOT_REMEMBER_ME = 60 * 60 * 1000; // 1 hour export const USER_SESSION_LENGTH = 32; export const USERNAME_MIN_LENGTH = 3; export const USERNAME_MAX_LENGTH = 20; export const EMAIL_MIN_LENGTH = 3; export const EMAIL_MAX_LENGTH = 64; export const EMAIL_REGEX = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; export const PASSWORD_MIN_LENGTH = 8; export const PASSWORD_MAX_LENGTH = 64; export const USER_ID_LENGTH = 36; // Header name for the session ID export const HEADER_X_AUTHORIZATION: string = "x-authorization"; export const STORE_SERVICE_MIN_LENGTH = 3; export const STORE_SERVICE_MAX_LENGTH = 64; export const STORE_SERVICE_ACTIVITY_NAME_MIN_LENGTH = 3; export const STORE_SERVICE_ACTIVITY_NAME_MAX_LENGTH = 64; export const STORE_SERVICE_ACTIVITY_DESCRIPTION_MAX_LENGTH = 1024; export const STORE_SERVICE_ACTIVITY_PRICE_MIN = 0; export const STORE_SERVICE_ACTIVITY_PRICE_MAX = 10000000; export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 24 * 60; // 1440 minutes = 24 hours export const STORE_SERVICE_ACTIVITY_DURATION_MIN = 0; export const STORE_SERVICE_ACTIVITY_DURATION_MAX = STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX; export const CALNEDAR_MIN_FUTURE_BOOKING_DAYS = 1; export const CALENDAR_MIN_EARLIEST_BOOKING_TIME = 15; // 15 minutes export const CALENDAR_MAX_EARLIEST_BOOKING_TIME = 24 * 60; // 24 hours in minutes export const CALENDAR_USING_PRIMARY_CALENDAR = false; export const CALENDAR_MAX_SERVICE_DURATION = 1440; // 24 hours in minutes export const COMPANY_NAME_MIN_LENGTH = 3; export const COMPANY_NAME_MAX_LENGTH = 64; // applied to all new created users or employees export const USER_ANALYTICS_ENABLED_DEFAULT = true; export const VALID_LANGUAGE_CODES = ["en", "de"]; export enum ACCOUNT_STATE { ACTIVE = 0, // everything is fine PENDING_DELETION = 1, // account still exists but is marked as deleted, can be restored or will be deleted after a certain time INIT_LOGIN = 2, // account is created but password is not set yet BANNED = 3, // account is banned, cannot login PENDING_EMAIL_VERIFICATION = 4, // account is created but email is not verified yet } export const FEEDBACK_MIN_LENGTH = 3; export const FEEDBACK_MAX_LENGTH = 1024; // TODO: outdated export const Roles = { // admin of the whole system independent of stores Admin: "admin", // owner of a store Master: "master", // worker of a store belonging to a master Worker: "worker", }; export const ACCOUNT_DEMO_DAYS = Number( process.env.CONSTANTS_ACCOUNT_DEMO_DAYS ); // how many days a demo account is valid until payment is required or account will be deleted export enum EMAIL_VERIFICATION_STATE { PENDING_EMAIL_VERIFICATION = 0, // account is created but email is not verified yet PENDING_USER_PROFILE_EMAIL_CHANGE_VERIFICATION = 1, // user wants to change email, new email is not verified yet } export const DASHBOARD_URL = process.env.DASHBOARD_URL as string; export const GOOGLE_CALLBACK_URL = `${process.env.DASHBOARD_API_URL}/v1/calendar/auth/google/callback`; export const PASSPORT_FAILURE_REDIRECT_URL = `${DASHBOARD_URL}/store/calendar/auth/failed`; export const PASSPORT_SUCCESS_REDIRECT_URL = `${DASHBOARD_URL}/store/calendar/auth/finish`; export const ACCOUNT_EXPORT_URL = `${DASHBOARD_URL}/v1/user/profile/export/`; export const TERMIN_PLANNER_URL = process.env.TERMIN_PLANNER_URL; export enum PAYMENT_PLAN { DEMO = 0, BASIC = 1, } export const PAYMENT_PLAN_SETTINGS = [ { maxEmployees: 5, calendarMaxFutureBookingDays: 14, }, { maxEmployees: 15, calendarMaxFutureBookingDays: 60, }, ];