Co-authored-by: crazywoola <427733928@qq.com>tags/0.6.12
| @@ -25,7 +25,7 @@ class TimestampField(fields.Raw): | |||
| def email(email): | |||
| # Define a regex pattern for email addresses | |||
| pattern = r"^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$" | |||
| pattern = r"^[\w\.!#$%&'*+\-/=?^_`{|}~]+@([\w-]+\.)+[\w-]{2,}$" | |||
| # Check if the email matches the pattern | |||
| if re.match(pattern, email) is not None: | |||
| return email | |||
| @@ -0,0 +1,25 @@ | |||
| from libs.helper import email | |||
| def test_email_with_valid_email(): | |||
| assert email("test@example.com") == "test@example.com" | |||
| assert email("TEST12345@example.com") == "TEST12345@example.com" | |||
| assert email("test+test@example.com") == "test+test@example.com" | |||
| assert email("!#$%&'*+-/=?^_{|}~`@example.com") == "!#$%&'*+-/=?^_{|}~`@example.com" | |||
| def test_email_with_invalid_email(): | |||
| try: | |||
| email("invalid_email") | |||
| except ValueError as e: | |||
| assert str(e) == "invalid_email is not a valid email." | |||
| try: | |||
| email("@example.com") | |||
| except ValueError as e: | |||
| assert str(e) == "@example.com is not a valid email." | |||
| try: | |||
| email("()@example.com") | |||
| except ValueError as e: | |||
| assert str(e) == "()@example.com is not a valid email." | |||
| @@ -7,11 +7,10 @@ import useSWR from 'swr' | |||
| import Link from 'next/link' | |||
| import Toast from '../components/base/toast' | |||
| import style from './page.module.css' | |||
| import { IS_CE_EDITION, SUPPORT_MAIL_LOGIN, apiPrefix } from '@/config' | |||
| import { IS_CE_EDITION, SUPPORT_MAIL_LOGIN, apiPrefix, emailRegex } from '@/config' | |||
| import Button from '@/app/components/base/button' | |||
| import { login, oauth } from '@/service/common' | |||
| import { getPurifyHref } from '@/utils' | |||
| const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/ | |||
| type IState = { | |||
| formValid: boolean | |||
| @@ -78,7 +77,7 @@ const NormalForm = () => { | |||
| const [isLoading, setIsLoading] = useState(false) | |||
| const handleEmailPasswordLogin = async () => { | |||
| if (!validEmailReg.test(email)) { | |||
| if (!emailRegex.test(email)) { | |||
| Toast.notify({ | |||
| type: 'error', | |||
| message: t('login.error.emailInValid'), | |||
| @@ -102,7 +102,7 @@ export const DEFAULT_PARAGRAPH_VALUE_MAX_LEN = 1000 | |||
| export const zhRegex = /^[\u4E00-\u9FA5]$/m | |||
| export const emojiRegex = /^[\uD800-\uDBFF][\uDC00-\uDFFF]$/m | |||
| export const emailRegex = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/m | |||
| export const emailRegex = /^[\w.!#$%&'*+\-/=?^{|}~]+@([\w-]+\.)+[\w-]{2,}$/m | |||
| const MAX_ZN_VAR_NAME_LENGHT = 8 | |||
| const MAX_EN_VAR_VALUE_LENGHT = 30 | |||
| export const getMaxVarNameLength = (value: string) => { | |||