init medical training project
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import re
|
||||
from typing import Callable, Optional
|
||||
|
||||
|
||||
def validate_password_strength(
|
||||
password: str,
|
||||
phone: Optional[str] = None,
|
||||
real_name: Optional[str] = None,
|
||||
old_password_check: Optional[Callable[[str], bool]] = None,
|
||||
) -> list:
|
||||
"""
|
||||
校验密码强度,返回错误信息列表。列表为空表示通过。
|
||||
|
||||
old_password_check: 传入 password 返回 True 表示与旧密码相同。
|
||||
"""
|
||||
errors = []
|
||||
|
||||
if len(password) < 8 or len(password) > 32:
|
||||
errors.append('密码长度必须在 8-32 位之间')
|
||||
|
||||
if not re.search(r'[a-zA-Z]', password):
|
||||
errors.append('密码必须包含字母')
|
||||
|
||||
if not re.search(r'\d', password):
|
||||
errors.append('密码必须包含数字')
|
||||
|
||||
if phone and password == phone:
|
||||
errors.append('密码不能与手机号相同')
|
||||
|
||||
if real_name and password == real_name:
|
||||
errors.append('密码不能与真实姓名相同')
|
||||
|
||||
if old_password_check is not None and old_password_check(password):
|
||||
errors.append('新密码不能与旧密码相同')
|
||||
|
||||
return errors
|
||||
Reference in New Issue
Block a user