UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: auth screens, project actions и полировка внешних контуров
This commit is contained in:
@@ -60,32 +60,32 @@ export type PasswordCriteria = {
|
||||
export const getPasswordCriteria = (password: string): PasswordCriteria[] => [
|
||||
{
|
||||
key: "length",
|
||||
label: "Min 8 characters",
|
||||
label: "Минимум 8 символов",
|
||||
isValid: password.length >= 8,
|
||||
},
|
||||
{
|
||||
key: "uppercase",
|
||||
label: "Min 1 upper-case letter",
|
||||
label: "Минимум 1 заглавная буква",
|
||||
isValid: /[A-Z]/.test(password),
|
||||
},
|
||||
{
|
||||
key: "lowercase",
|
||||
label: "Min 1 lower-case letter",
|
||||
label: "Минимум 1 строчная буква",
|
||||
isValid: /[a-z]/.test(password),
|
||||
},
|
||||
{
|
||||
key: "number",
|
||||
label: "Min 1 number",
|
||||
label: "Минимум 1 цифра",
|
||||
isValid: /[0-9]/.test(password),
|
||||
},
|
||||
{
|
||||
key: "special",
|
||||
label: "Min 1 special character",
|
||||
label: "Минимум 1 спецсимвол",
|
||||
isValid: /[!@#$%^&*()\-_+=\[\]{}|;:'",.<>?/]/.test(password),
|
||||
},
|
||||
{
|
||||
key: "predictable",
|
||||
label: "Avoid common or predictable patterns",
|
||||
label: "Избегайте простых и предсказуемых шаблонов",
|
||||
isValid: password.length >= 8 ? zxcvbn(password).score >= 3 : false,
|
||||
},
|
||||
];
|
||||
@@ -96,218 +96,218 @@ const errorCodeMessages: {
|
||||
} = {
|
||||
// global
|
||||
[EAuthErrorCodes.INSTANCE_NOT_CONFIGURED]: {
|
||||
title: `Instance not configured`,
|
||||
message: () => `Instance not configured. Please contact your administrator.`,
|
||||
title: `Инстанс не настроен`,
|
||||
message: () => `Инстанс не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.SIGNUP_DISABLED]: {
|
||||
title: `Sign up disabled`,
|
||||
message: () => `Sign up disabled. Please contact your administrator.`,
|
||||
title: `Регистрация отключена`,
|
||||
message: () => `Регистрация отключена. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_PASSWORD]: {
|
||||
title: `Invalid password`,
|
||||
message: () => `Invalid password. Please try again.`,
|
||||
title: `Неверный пароль`,
|
||||
message: () => `Неверный пароль. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.PASSWORD_TOO_WEAK]: {
|
||||
title: `Password too weak`,
|
||||
title: `Слишком простой пароль`,
|
||||
message: () =>
|
||||
`Password must include upper-case, lower-case, number, special character, and must not be predictable.`,
|
||||
`Пароль должен содержать заглавные и строчные буквы, цифру, спецсимвол и не быть предсказуемым.`,
|
||||
},
|
||||
[EAuthErrorCodes.SMTP_NOT_CONFIGURED]: {
|
||||
title: `SMTP not configured`,
|
||||
message: () => `SMTP not configured. Please contact your administrator.`,
|
||||
title: `SMTP не настроен`,
|
||||
message: () => `SMTP не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
// email check in both sign up and sign in
|
||||
[EAuthErrorCodes.INVALID_EMAIL]: {
|
||||
title: `Invalid email`,
|
||||
message: () => `Invalid email. Please try again.`,
|
||||
title: `Некорректный e-mail`,
|
||||
message: () => `Некорректный e-mail. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.EMAIL_REQUIRED]: {
|
||||
title: `Email required`,
|
||||
message: () => `Email required. Please try again.`,
|
||||
title: `Нужен e-mail`,
|
||||
message: () => `Укажите e-mail и попробуйте снова.`,
|
||||
},
|
||||
// sign up
|
||||
[EAuthErrorCodes.USER_ALREADY_EXIST]: {
|
||||
title: `User already exists`,
|
||||
message: () => `Your account is already registered. Sign in now.`,
|
||||
title: `Аккаунт уже существует`,
|
||||
message: () => `Аккаунт уже зарегистрирован. Выполните вход.`,
|
||||
},
|
||||
[EAuthErrorCodes.REQUIRED_EMAIL_PASSWORD_SIGN_UP]: {
|
||||
title: `Email and password required`,
|
||||
message: () => `Email and password required. Please try again.`,
|
||||
title: `Нужны e-mail и пароль`,
|
||||
message: () => `Укажите e-mail и пароль, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.AUTHENTICATION_FAILED_SIGN_UP]: {
|
||||
title: `Authentication failed`,
|
||||
message: () => `Authentication failed. Please try again.`,
|
||||
title: `Не удалось выполнить вход`,
|
||||
message: () => `Не удалось выполнить вход. Проверьте данные и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_EMAIL_SIGN_UP]: {
|
||||
title: `Invalid email`,
|
||||
message: () => `Invalid email. Please try again.`,
|
||||
title: `Некорректный e-mail`,
|
||||
message: () => `Некорректный e-mail. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.MAGIC_SIGN_UP_EMAIL_CODE_REQUIRED]: {
|
||||
title: `Email and code required`,
|
||||
message: () => `Email and code required. Please try again.`,
|
||||
title: `Нужны e-mail и код`,
|
||||
message: () => `Укажите e-mail и код подтверждения, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_EMAIL_MAGIC_SIGN_UP]: {
|
||||
title: `Invalid email`,
|
||||
message: () => `Invalid email. Please try again.`,
|
||||
title: `Некорректный e-mail`,
|
||||
message: () => `Некорректный e-mail. Попробуйте снова.`,
|
||||
},
|
||||
// sign in
|
||||
[EAuthErrorCodes.USER_ACCOUNT_DEACTIVATED]: {
|
||||
title: `User account deactivated`,
|
||||
message: () => `User account deactivated. Please contact administrator.`,
|
||||
title: `Аккаунт деактивирован`,
|
||||
message: () => `Аккаунт деактивирован. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.USER_DOES_NOT_EXIST]: {
|
||||
title: `User does not exist`,
|
||||
message: () => `No account found. Create one to get started.`,
|
||||
title: `Аккаунт не найден`,
|
||||
message: () => `Аккаунт не найден. Создайте новый для начала работы.`,
|
||||
},
|
||||
[EAuthErrorCodes.REQUIRED_EMAIL_PASSWORD_SIGN_IN]: {
|
||||
title: `Email and password required`,
|
||||
message: () => `Email and password required. Please try again.`,
|
||||
title: `Нужны e-mail и пароль`,
|
||||
message: () => `Укажите e-mail и пароль, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.AUTHENTICATION_FAILED_SIGN_IN]: {
|
||||
title: `Authentication failed`,
|
||||
message: () => `Authentication failed. Please try again.`,
|
||||
title: `Не удалось выполнить вход`,
|
||||
message: () => `Не удалось выполнить вход. Проверьте данные и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_EMAIL_SIGN_IN]: {
|
||||
title: `Invalid email`,
|
||||
message: () => `Invalid email. Please try again.`,
|
||||
title: `Некорректный e-mail`,
|
||||
message: () => `Некорректный e-mail. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.MAGIC_SIGN_IN_EMAIL_CODE_REQUIRED]: {
|
||||
title: `Email and code required`,
|
||||
message: () => `Email and code required. Please try again.`,
|
||||
title: `Нужны e-mail и код`,
|
||||
message: () => `Укажите e-mail и код подтверждения, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_EMAIL_MAGIC_SIGN_IN]: {
|
||||
title: `Invalid email`,
|
||||
message: () => `Invalid email. Please try again.`,
|
||||
title: `Некорректный e-mail`,
|
||||
message: () => `Некорректный e-mail. Попробуйте снова.`,
|
||||
},
|
||||
// Both Sign in and Sign up
|
||||
[EAuthErrorCodes.INVALID_MAGIC_CODE_SIGN_IN]: {
|
||||
title: `Authentication failed`,
|
||||
message: () => `Invalid magic code. Please try again.`,
|
||||
title: `Неверный код подтверждения`,
|
||||
message: () => `Неверный код подтверждения. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_MAGIC_CODE_SIGN_UP]: {
|
||||
title: `Authentication failed`,
|
||||
message: () => `Invalid magic code. Please try again.`,
|
||||
title: `Неверный код подтверждения`,
|
||||
message: () => `Неверный код подтверждения. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.EXPIRED_MAGIC_CODE_SIGN_IN]: {
|
||||
title: `Expired magic code`,
|
||||
message: () => `Expired magic code. Please try again.`,
|
||||
title: `Код подтверждения истёк`,
|
||||
message: () => `Код подтверждения истёк. Запросите новый и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.EXPIRED_MAGIC_CODE_SIGN_UP]: {
|
||||
title: `Expired magic code`,
|
||||
message: () => `Expired magic code. Please try again.`,
|
||||
title: `Код подтверждения истёк`,
|
||||
message: () => `Код подтверждения истёк. Запросите новый и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.EMAIL_CODE_ATTEMPT_EXHAUSTED_SIGN_IN]: {
|
||||
title: `Expired magic code`,
|
||||
message: () => `Expired magic code. Please try again.`,
|
||||
title: `Лимит попыток исчерпан`,
|
||||
message: () => `Лимит попыток ввода кода исчерпан. Запросите новый код.`,
|
||||
},
|
||||
[EAuthErrorCodes.EMAIL_CODE_ATTEMPT_EXHAUSTED_SIGN_UP]: {
|
||||
title: `Expired magic code`,
|
||||
message: () => `Expired magic code. Please try again.`,
|
||||
title: `Лимит попыток исчерпан`,
|
||||
message: () => `Лимит попыток ввода кода исчерпан. Запросите новый код.`,
|
||||
},
|
||||
// Oauth
|
||||
[EAuthErrorCodes.OAUTH_NOT_CONFIGURED]: {
|
||||
title: `OAuth not configured`,
|
||||
message: () => `OAuth not configured. Please contact your administrator.`,
|
||||
title: `OAuth не настроен`,
|
||||
message: () => `OAuth не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.GOOGLE_NOT_CONFIGURED]: {
|
||||
title: `Google not configured`,
|
||||
message: () => `Google not configured. Please contact your administrator.`,
|
||||
title: `Google OAuth не настроен`,
|
||||
message: () => `Google OAuth не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.GITHUB_NOT_CONFIGURED]: {
|
||||
title: `GitHub not configured`,
|
||||
message: () => `GitHub not configured. Please contact your administrator.`,
|
||||
title: `GitHub OAuth не настроен`,
|
||||
message: () => `GitHub OAuth не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.GITLAB_NOT_CONFIGURED]: {
|
||||
title: `GitLab not configured`,
|
||||
message: () => `GitLab not configured. Please contact your administrator.`,
|
||||
title: `GitLab OAuth не настроен`,
|
||||
message: () => `GitLab OAuth не настроен. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.GOOGLE_OAUTH_PROVIDER_ERROR]: {
|
||||
title: `Google OAuth provider error`,
|
||||
message: () => `Google OAuth provider error. Please try again.`,
|
||||
title: `Ошибка Google OAuth`,
|
||||
message: () => `Не удалось авторизоваться через Google. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.GITHUB_OAUTH_PROVIDER_ERROR]: {
|
||||
title: `GitHub OAuth provider error`,
|
||||
message: () => `GitHub OAuth provider error. Please try again.`,
|
||||
title: `Ошибка GitHub OAuth`,
|
||||
message: () => `Не удалось авторизоваться через GitHub. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.GITLAB_OAUTH_PROVIDER_ERROR]: {
|
||||
title: `GitLab OAuth provider error`,
|
||||
message: () => `GitLab OAuth provider error. Please try again.`,
|
||||
title: `Ошибка GitLab OAuth`,
|
||||
message: () => `Не удалось авторизоваться через GitLab. Попробуйте снова.`,
|
||||
},
|
||||
// Reset Password
|
||||
[EAuthErrorCodes.INVALID_PASSWORD_TOKEN]: {
|
||||
title: `Invalid password token`,
|
||||
message: () => `Invalid password token. Please try again.`,
|
||||
title: `Некорректный токен`,
|
||||
message: () => `Некорректный токен восстановления. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.EXPIRED_PASSWORD_TOKEN]: {
|
||||
title: `Expired password token`,
|
||||
message: () => `Expired password token. Please try again.`,
|
||||
title: `Токен истёк`,
|
||||
message: () => `Токен восстановления истёк. Запросите новый.`,
|
||||
},
|
||||
// Change password
|
||||
[EAuthErrorCodes.MISSING_PASSWORD]: {
|
||||
title: `Password required`,
|
||||
message: () => `Password required. Please try again.`,
|
||||
title: `Нужен пароль`,
|
||||
message: () => `Укажите пароль и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INCORRECT_OLD_PASSWORD]: {
|
||||
title: `Incorrect old password`,
|
||||
message: () => `Incorrect old password. Please try again.`,
|
||||
title: `Неверный старый пароль`,
|
||||
message: () => `Старый пароль указан неверно. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_NEW_PASSWORD]: {
|
||||
title: `Invalid new password`,
|
||||
message: () => `Invalid new password. Please try again.`,
|
||||
title: `Некорректный новый пароль`,
|
||||
message: () => `Новый пароль не соответствует требованиям.`,
|
||||
},
|
||||
// set password
|
||||
[EAuthErrorCodes.PASSWORD_ALREADY_SET]: {
|
||||
title: `Password already set`,
|
||||
message: () => `Password already set. Please try again.`,
|
||||
title: `Пароль уже установлен`,
|
||||
message: () => `Пароль уже установлен. Выполните вход.`,
|
||||
},
|
||||
// admin
|
||||
[EAuthErrorCodes.ADMIN_ALREADY_EXIST]: {
|
||||
title: `Admin already exists`,
|
||||
message: () => `Admin already exists. Please try again.`,
|
||||
title: `Администратор уже существует`,
|
||||
message: () => `Администратор уже существует. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD_FIRST_NAME]: {
|
||||
title: `Email, password and first name required`,
|
||||
message: () => `Email, password and first name required. Please try again.`,
|
||||
title: `Нужны e-mail, пароль и имя`,
|
||||
message: () => `Укажите e-mail, пароль и имя, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_ADMIN_EMAIL]: {
|
||||
title: `Invalid admin email`,
|
||||
message: () => `Invalid admin email. Please try again.`,
|
||||
title: `Некорректный e-mail администратора`,
|
||||
message: () => `Некорректный e-mail администратора. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.INVALID_ADMIN_PASSWORD]: {
|
||||
title: `Invalid admin password`,
|
||||
message: () => `Invalid admin password. Please try again.`,
|
||||
title: `Некорректный пароль администратора`,
|
||||
message: () => `Некорректный пароль администратора. Попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD]: {
|
||||
title: `Email and password required`,
|
||||
message: () => `Email and password required. Please try again.`,
|
||||
title: `Нужны e-mail и пароль`,
|
||||
message: () => `Укажите e-mail и пароль, затем попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.ADMIN_AUTHENTICATION_FAILED]: {
|
||||
title: `Authentication failed`,
|
||||
message: () => `Authentication failed. Please try again.`,
|
||||
title: `Не удалось выполнить вход`,
|
||||
message: () => `Не удалось выполнить вход. Проверьте данные и попробуйте снова.`,
|
||||
},
|
||||
[EAuthErrorCodes.ADMIN_USER_ALREADY_EXIST]: {
|
||||
title: `Admin user already exists`,
|
||||
message: () => `Admin user already exists. Sign in now.`,
|
||||
title: `Администратор уже существует`,
|
||||
message: () => `Администратор уже существует. Выполните вход.`,
|
||||
},
|
||||
[EAuthErrorCodes.ADMIN_USER_DOES_NOT_EXIST]: {
|
||||
title: `Admin user does not exist`,
|
||||
message: () => `Admin user does not exist. Sign in now.`,
|
||||
title: `Администратор не найден`,
|
||||
message: () => `Администратор не найден. Выполните вход.`,
|
||||
},
|
||||
[EAuthErrorCodes.MAGIC_LINK_LOGIN_DISABLED]: {
|
||||
title: `Magic link login disabled`,
|
||||
message: () => `Magic link login is disabled. Please use password to login.`,
|
||||
title: `Вход по magic link отключён`,
|
||||
message: () => `Вход по magic link отключён. Используйте пароль.`,
|
||||
},
|
||||
[EAuthErrorCodes.PASSWORD_LOGIN_DISABLED]: {
|
||||
title: `Password login disabled`,
|
||||
message: () => `Password login is disabled. Please use magic link to login.`,
|
||||
title: `Вход по паролю отключён`,
|
||||
message: () => `Вход по паролю отключён. Используйте magic link.`,
|
||||
},
|
||||
[EAuthErrorCodes.ADMIN_USER_DEACTIVATED]: {
|
||||
title: `Admin user deactivated`,
|
||||
message: () => `Admin user account has been deactivated. Please contact administrator.`,
|
||||
title: `Администратор деактивирован`,
|
||||
message: () => `Аккаунт администратора деактивирован. Обратитесь к администратору.`,
|
||||
},
|
||||
[EAuthErrorCodes.RATE_LIMIT_EXCEEDED]: {
|
||||
title: `Rate limit exceeded`,
|
||||
message: () => `Too many requests. Please try again later.`,
|
||||
title: `Слишком много запросов`,
|
||||
message: () => `Слишком много запросов. Повторите попытку позже.`,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -365,8 +365,8 @@ export const authErrorHandler = (errorCode: EAuthErrorCodes, email?: string): TA
|
||||
return {
|
||||
type: EErrorAlertType.BANNER_ALERT,
|
||||
code: errorCode,
|
||||
title: errorCodeMessages[errorCode]?.title || "Error",
|
||||
message: errorCodeMessages[errorCode]?.message(email) || "Something went wrong. Please try again.",
|
||||
title: errorCodeMessages[errorCode]?.title || "Ошибка",
|
||||
message: errorCodeMessages[errorCode]?.message(email) || "Что-то пошло не так. Попробуйте снова.",
|
||||
};
|
||||
|
||||
return undefined;
|
||||
|
||||
Reference in New Issue
Block a user