/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import Link from "next/link"; // plane packages import type { TAdminAuthErrorInfo } from "@plane/constants"; import { SUPPORT_EMAIL, EAdminAuthErrorCodes } from "@plane/constants"; export enum EErrorAlertType { BANNER_ALERT = "BANNER_ALERT", INLINE_FIRST_NAME = "INLINE_FIRST_NAME", INLINE_EMAIL = "INLINE_EMAIL", INLINE_PASSWORD = "INLINE_PASSWORD", INLINE_EMAIL_CODE = "INLINE_EMAIL_CODE", } const errorCodeMessages: { [key in EAdminAuthErrorCodes]: { title: string; message: (email?: string) => React.ReactNode }; } = { // admin [EAdminAuthErrorCodes.ADMIN_ALREADY_EXIST]: { title: `Администратор уже существует`, message: () => `Администратор уже существует. Попробуйте еще раз.`, }, [EAdminAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD_FIRST_NAME]: { title: `Нужны email, пароль и имя`, message: () => `Укажите email, пароль и имя. Попробуйте еще раз.`, }, [EAdminAuthErrorCodes.INVALID_ADMIN_EMAIL]: { title: `Некорректный email администратора`, message: () => `Некорректный email администратора. Попробуйте еще раз.`, }, [EAdminAuthErrorCodes.INVALID_ADMIN_PASSWORD]: { title: `Некорректный пароль администратора`, message: () => `Некорректный пароль администратора. Попробуйте еще раз.`, }, [EAdminAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD]: { title: `Нужны email и пароль`, message: () => `Укажите email и пароль. Попробуйте еще раз.`, }, [EAdminAuthErrorCodes.ADMIN_AUTHENTICATION_FAILED]: { title: `Ошибка входа`, message: () => `Не удалось войти. Проверьте данные и попробуйте еще раз.`, }, [EAdminAuthErrorCodes.ADMIN_USER_ALREADY_EXIST]: { title: `Администратор уже существует`, message: () => (
Администратор уже существует.  Войти  сейчас.
), }, [EAdminAuthErrorCodes.ADMIN_USER_DOES_NOT_EXIST]: { title: `Администратор не найден`, message: () => (
Администратор не найден.  Войти  сейчас.
), }, [EAdminAuthErrorCodes.ADMIN_USER_DEACTIVATED]: { title: `Аккаунт деактивирован`, message: () => `Аккаунт деактивирован. Свяжитесь с ${SUPPORT_EMAIL ? SUPPORT_EMAIL : "администратором"}.`, }, }; export const authErrorHandler = (errorCode: EAdminAuthErrorCodes, email?: string): TAdminAuthErrorInfo | undefined => { const bannerAlertErrorCodes = [ EAdminAuthErrorCodes.ADMIN_ALREADY_EXIST, EAdminAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD_FIRST_NAME, EAdminAuthErrorCodes.INVALID_ADMIN_EMAIL, EAdminAuthErrorCodes.INVALID_ADMIN_PASSWORD, EAdminAuthErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD, EAdminAuthErrorCodes.ADMIN_AUTHENTICATION_FAILED, EAdminAuthErrorCodes.ADMIN_USER_ALREADY_EXIST, EAdminAuthErrorCodes.ADMIN_USER_DOES_NOT_EXIST, EAdminAuthErrorCodes.ADMIN_USER_DEACTIVATED, ]; if (bannerAlertErrorCodes.includes(errorCode)) return { type: EErrorAlertType.BANNER_ALERT, code: errorCode, title: errorCodeMessages[errorCode]?.title || "Ошибка", message: errorCodeMessages[errorCode]?.message(email) || "Что-то пошло не так. Попробуйте еще раз.", }; return undefined; };