功能变化:

1.用户管理-加入密码填写框
pull/57/head
猿小天 2022-05-13 23:32:27 +08:00
parent 03f51f3706
commit 90a33eb4ea
3 changed files with 85 additions and 27 deletions

View File

@ -170,11 +170,12 @@ class ApiLogin(APIView):
def post(self, request): def post(self, request):
username = request.data.get("username") username = request.data.get("username")
password = request.data.get("password") password = request.data.get("password")
if user_obj := auth.authenticate( user_obj = auth.authenticate(
request, request,
username=username, username=username,
password=hashlib.md5(password.encode(encoding="UTF-8")).hexdigest(), password=hashlib.md5(password.encode(encoding="UTF-8")).hexdigest(),
): )
if user_obj:
login(request, user_obj) login(request, user_obj)
return redirect("/") return redirect("/")
else: else:

View File

@ -45,6 +45,15 @@ class UserCreateSerializer(CustomModelSerializer):
), ),
) )
def validate_password(self, value):
"""
对密码进行验证
"""
password = self.initial_data.get("password")
if password:
return make_password(value)
return value
def save(self, **kwargs): def save(self, **kwargs):
data = super().save(**kwargs) data = super().save(**kwargs)
data.post.set(self.initial_data.get("post", [])) data.post.set(self.initial_data.get("post", []))

View File

@ -109,20 +109,39 @@ export const crudOptions = (vm) => {
type: 'input', type: 'input',
form: { form: {
rules: [ // 表单校验规则 rules: [ // 表单校验规则
{ required: true, message: '账号必填项' } {
required: true,
message: '账号必填项'
}
], ],
component: { component: {
placeholder: '请输入账号' placeholder: '请输入账号'
}, },
itemProps: { itemProps: {
class: { yxtInput: true } class: { yxtInput: true }
},
helper: {
render (h) {
return (< el-alert title="密码默认为:admin123456" type="warning"/>
)
} }
} }
},
{
title: '密码',
key: 'password',
minWidth: 90,
type: 'input',
form: {
component: {
span: 12,
showPassword: true,
placeholder: '不填则默认为:admin123456'
},
itemProps: {
class: { yxtInput: true }
}
},
disabled: true,
valueResolve (row, key) {
if (row.password) {
row.password = vm.$md5(row.password)
}
} }
}, },
{ {
@ -135,7 +154,10 @@ export const crudOptions = (vm) => {
type: 'input', type: 'input',
form: { form: {
rules: [ // 表单校验规则 rules: [ // 表单校验规则
{ required: true, message: '姓名必填项' } {
required: true,
message: '姓名必填项'
}
], ],
component: { component: {
span: 12, span: 12,
@ -153,24 +175,28 @@ export const crudOptions = (vm) => {
disabled: true disabled: true
}, },
minWidth: 140, minWidth: 140,
type: 'table-selector', type: 'tree-selector',
dict: { dict: {
cache: false, cache: false,
isTree: true,
url: deptPrefix, url: deptPrefix,
value: 'id', // 数据字典中value字段的属性名 value: 'id', // 数据字典中value字段的属性名
label: 'name', // 数据字典中label字段的属性名 label: 'name' // 数据字典中label字段的属性名
getData: (url, dict, { form, component }) => { // getData: (url, dict, { form, component }) => {
return request({ url: url, params: { page: 1, limit: 10, status: 1 } }).then(ret => { // return request({ url: url, params: { page: 1, limit: 10, status: 1 } }).then(ret => {
component._elProps.page = ret.data.page // component._elProps.page = ret.data.page
component._elProps.limit = ret.data.limit // component._elProps.limit = ret.data.limit
component._elProps.total = ret.data.total // component._elProps.total = ret.data.total
return ret.data.data // return ret.data.data
}) // })
} // }
}, },
form: { form: {
rules: [ // 表单校验规则 rules: [ // 表单校验规则
{ required: true, message: '必填项' } {
required: true,
message: '必填项'
}
], ],
itemProps: { itemProps: {
class: { yxtInput: true } class: { yxtInput: true }
@ -208,8 +234,15 @@ export const crudOptions = (vm) => {
type: 'input', type: 'input',
form: { form: {
rules: [ rules: [
{ max: 20, message: '请输入正确的手机号码', trigger: 'blur' }, {
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码' } max: 20,
message: '请输入正确的手机号码',
trigger: 'blur'
},
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号码'
}
], ],
itemProps: { itemProps: {
class: { yxtInput: true } class: { yxtInput: true }
@ -224,7 +257,11 @@ export const crudOptions = (vm) => {
minWidth: 180, minWidth: 180,
form: { form: {
rules: [ rules: [
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } {
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['blur', 'change']
}
], ],
component: { component: {
placeholder: '请输入邮箱' placeholder: '请输入邮箱'
@ -250,7 +287,6 @@ export const crudOptions = (vm) => {
title: '用户类型', title: '用户类型',
key: 'user_type', key: 'user_type',
search: { search: {
value: 0,
disabled: false disabled: false
}, },
width: 140, width: 140,
@ -316,8 +352,17 @@ export const crudOptions = (vm) => {
url: '/api/system/role/', url: '/api/system/role/',
value: 'id', // 数据字典中value字段的属性名 value: 'id', // 数据字典中value字段的属性名
label: 'name', // 数据字典中label字段的属性名 label: 'name', // 数据字典中label字段的属性名
getData: (url, dict, { form, component }) => { getData: (url, dict, {
return request({ url: url, params: { page: 1, limit: 10 } }).then(ret => { form,
component
}) => {
return request({
url: url,
params: {
page: 1,
limit: 10
}
}).then(ret => {
component._elProps.page = ret.data.page component._elProps.page = ret.data.page
component._elProps.limit = ret.data.limit component._elProps.limit = ret.data.limit
component._elProps.total = ret.data.total component._elProps.total = ret.data.total
@ -327,7 +372,10 @@ export const crudOptions = (vm) => {
}, },
form: { form: {
rules: [ // 表单校验规则 rules: [ // 表单校验规则
{ required: true, message: '必填项' } {
required: true,
message: '必填项'
}
], ],
itemProps: { itemProps: {
class: { yxtInput: true } class: { yxtInput: true }