init medical training project

This commit is contained in:
2026-05-29 15:58:00 +08:00
commit b4bb38b7be
91 changed files with 6765 additions and 0 deletions
+36
View File
@@ -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