parent
03f51f3706
commit
90a33eb4ea
|
@ -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:
|
||||||
|
|
|
@ -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", []))
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
Loading…
Reference in New Issue