소스 검색

fix: allow special characters in email (#5327)

Co-authored-by: crazywoola <427733928@qq.com>
tags/0.6.12
Mitsuki Ogasahara 1 년 전
부모
커밋
7305713b97
No account linked to committer's email address
4개의 변경된 파일29개의 추가작업 그리고 5개의 파일을 삭제
  1. 1
    1
      api/libs/helper.py
  2. 25
    0
      api/tests/unit_tests/libs/test_email.py
  3. 2
    3
      web/app/signin/normalForm.tsx
  4. 1
    1
      web/config/index.ts

+ 1
- 1
api/libs/helper.py 파일 보기

@@ -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

+ 25
- 0
api/tests/unit_tests/libs/test_email.py 파일 보기

@@ -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."

+ 2
- 3
web/app/signin/normalForm.tsx 파일 보기

@@ -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'),

+ 1
- 1
web/config/index.ts 파일 보기

@@ -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) => {

Loading…
취소
저장