mirror of
https://github.com/capricornxl/ad-password-self-service.git
synced 2025-08-12 06:55:50 +08:00
+ 升级Python版本为3.8 + 升级Django到3.2 + 修复用户名中使用\被转义的问题 + 重写了dingding模块,因为dingding开发者平台接口鉴权的一些变动,之前的一些接口不能再使用,本次重写。 + 重写了ad模块,修改账号的一些判断逻辑。 + 重写了用户账号的格式兼容,现在用户账号可以兼容:username、DOMAIN\username、username@abc.com这三种格式。 + 优化了整体的代码逻辑,去掉一些冗余重复的代码。
35 lines
1.6 KiB
Python
35 lines
1.6 KiB
Python
from django.forms import fields as c_fields
|
|
from django import forms as c_forms
|
|
from django.core.exceptions import ValidationError
|
|
|
|
|
|
class CheckForm(c_forms.Form):
|
|
new_password = c_fields.RegexField(
|
|
'(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}',
|
|
# 密码必须同时包含大写、小写、数字和特殊字符其中三项且至少8位
|
|
strip=True,
|
|
min_length=8,
|
|
max_length=30,
|
|
error_messages={'required': '新密码不能为空.',
|
|
'invalid': '密码必须包含数字,字母、特殊字符',
|
|
'min_length': "密码长度不能小于8个字符",
|
|
'max_length': "密码长度不能大于30个字符"}
|
|
)
|
|
old_password = c_fields.CharField(error_messages={'required': '确认密码不能为空'})
|
|
ensure_password = c_fields.CharField(error_messages={'required': '确认密码不能为空'})
|
|
username = c_fields.CharField(error_messages={'required': '账号不能为空', 'invalid': '账号格式错误'})
|
|
|
|
def clean(self):
|
|
pwd0 = self.cleaned_data.get('old_password')
|
|
pwd1 = self.cleaned_data.get('new_password')
|
|
pwd2 = self.cleaned_data.get('ensure_password')
|
|
if pwd1 == pwd2:
|
|
pass
|
|
elif pwd0 == pwd1:
|
|
# 这里异常模块导入要放在函数里面,放到文件开头有时会报错,找不到
|
|
from django.core.exceptions import ValidationError
|
|
raise ValidationError('新旧密码不能一样')
|
|
else:
|
|
from django.core.exceptions import ValidationError
|
|
raise ValidationError('新密码和确认密码输入不一致')
|