Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello_uni-id-pages
提交
418a68ed
H
hello_uni-id-pages
项目概览
DCloud
/
hello_uni-id-pages
通知
1054
Star
31
Fork
43
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello_uni-id-pages
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
418a68ed
编写于
8月 31, 2022
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: password strength default value
上级
ad33fc98
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
47 addition
and
29 deletion
+47
-29
uni_modules/uni-id-pages/common/password.js
uni_modules/uni-id-pages/common/password.js
+4
-4
uni_modules/uni-id-pages/config.js
uni_modules/uni-id-pages/config.js
+2
-2
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.js
...ges/uniCloud/cloudfunctions/uni-id-co/common/validator.js
+40
-22
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/index.obj.js
...i-id-pages/uniCloud/cloudfunctions/uni-id-co/index.obj.js
+1
-1
未找到文件。
uni_modules/uni-id-pages/common/password.js
浏览文件 @
418a68ed
...
@@ -33,10 +33,10 @@ const ERROR = {
...
@@ -33,10 +33,10 @@ const ERROR = {
rePwdErr
:
'
两次输入密码不一致
'
rePwdErr
:
'
两次输入密码不一致
'
},
},
passwordStrengthError
:
{
passwordStrengthError
:
{
super
strong
:
'
密码必须包含大小写字母、数字和特殊符号
'
,
super
:
'
密码必须包含大小写字母、数字和特殊符号,密码长度必须在8-16位之间
'
,
strong
:
'
密码必须包含字母、数字和特殊符号
'
,
strong
:
'
密码必须包含字母、数字和特殊符号
,密码长度必须在8-16位之间
'
,
medium
:
'
密码必须为字母、数字和特殊符号任意两种的组合
'
,
medium
:
'
密码必须为字母、数字和特殊符号任意两种的组合
,密码长度必须在8-16位之间
'
,
weak
:
'
密码必须包含字母
'
weak
:
'
密码必须包含字母
,密码长度必须在6-16位之间
'
},
},
passwordLengthError
:
{
passwordLengthError
:
{
normal
:
'
密码长度必须在
'
+
minPasswordLength
+
'
-
'
+
maxPasswordLength
+
'
位之间
'
,
normal
:
'
密码长度必须在
'
+
minPasswordLength
+
'
-
'
+
maxPasswordLength
+
'
位之间
'
,
...
...
uni_modules/uni-id-pages/config.js
浏览文件 @
418a68ed
...
@@ -45,14 +45,14 @@ export default {
...
@@ -45,14 +45,14 @@ export default {
},
},
/**
/**
* 密码强度
* 密码强度
* super
strong
(超强:密码必须包含大小写字母、数字和特殊符号)
* super(超强:密码必须包含大小写字母、数字和特殊符号)
* strong(强: 密码必须包含字母、数字和特殊符号)
* strong(强: 密码必须包含字母、数字和特殊符号)
* medium (中:密码必须为字母、数字和特殊符号任意两种的组合)
* medium (中:密码必须为字母、数字和特殊符号任意两种的组合)
* weak(弱:密码必须包含字母)
* weak(弱:密码必须包含字母)
* 为空或false则不验证密码强度
* 为空或false则不验证密码强度
*/
*/
"
password
"
:
{
"
password
"
:
{
"
strength
"
:
"
strong
"
,
"
strength
"
:
"
medium
"
,
"
length
"
:
[
6
,
20
]
//密码长度,默认在6-20位之间
"
length
"
:
[
6
,
20
]
//密码长度,默认在6-20位之间
}
}
}
}
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.js
浏览文件 @
418a68ed
...
@@ -29,6 +29,21 @@ baseValidator.username = function (username) {
...
@@ -29,6 +29,21 @@ baseValidator.username = function (username) {
}
}
}
}
baseValidator
.
password
=
function
(
password
)
{
const
errCode
=
ERROR
.
INVALID_PASSWORD
if
(
!
isValidString
(
password
))
{
return
{
errCode
}
}
if
(
password
.
length
<
6
)
{
// 密码长度不能小于6
return
{
errCode
}
}
}
baseValidator
.
mobile
=
function
(
mobile
)
{
baseValidator
.
mobile
=
function
(
mobile
)
{
const
errCode
=
ERROR
.
INVALID_MOBILE
const
errCode
=
ERROR
.
INVALID_MOBILE
if
(
!
isValidString
(
mobile
))
{
if
(
!
isValidString
(
mobile
))
{
...
@@ -92,7 +107,7 @@ baseType.forEach((type) => {
...
@@ -92,7 +107,7 @@ baseType.forEach((type) => {
}
}
})
})
function
tokenize
(
name
)
{
function
tokenize
(
name
)
{
let
i
=
0
let
i
=
0
const
result
=
[]
const
result
=
[]
let
token
=
''
let
token
=
''
...
@@ -122,7 +137,7 @@ function tokenize (name) {
...
@@ -122,7 +137,7 @@ function tokenize (name) {
* 处理validator名
* 处理validator名
* @param {string} name
* @param {string} name
*/
*/
function
parseValidatorName
(
name
)
{
function
parseValidatorName
(
name
)
{
const
tokenList
=
tokenize
(
name
)
const
tokenList
=
tokenize
(
name
)
let
i
=
0
let
i
=
0
let
currentToken
=
tokenList
[
i
]
let
currentToken
=
tokenList
[
i
]
...
@@ -172,7 +187,7 @@ function parseValidatorName (name) {
...
@@ -172,7 +187,7 @@ function parseValidatorName (name) {
return
result
return
result
}
}
function
getRuleCategory
(
rule
)
{
function
getRuleCategory
(
rule
)
{
switch
(
rule
.
type
)
{
switch
(
rule
.
type
)
{
case
'
array
'
:
case
'
array
'
:
return
'
array
'
return
'
array
'
...
@@ -183,7 +198,7 @@ function getRuleCategory (rule) {
...
@@ -183,7 +198,7 @@ function getRuleCategory (rule) {
}
}
}
}
function
isMatchUnionType
(
val
,
rule
)
{
function
isMatchUnionType
(
val
,
rule
)
{
if
(
!
rule
.
children
||
rule
.
children
.
length
===
0
)
{
if
(
!
rule
.
children
||
rule
.
children
.
length
===
0
)
{
return
true
return
true
}
}
...
@@ -209,7 +224,7 @@ function isMatchUnionType (val, rule) {
...
@@ -209,7 +224,7 @@ function isMatchUnionType (val, rule) {
return
false
return
false
}
}
function
isMatchBaseType
(
val
,
rule
)
{
function
isMatchBaseType
(
val
,
rule
)
{
if
(
typeof
baseValidator
[
rule
.
type
]
!==
'
function
'
)
{
if
(
typeof
baseValidator
[
rule
.
type
]
!==
'
function
'
)
{
throw
new
Error
(
`invalid schema type:
${
rule
.
type
}
`
)
throw
new
Error
(
`invalid schema type:
${
rule
.
type
}
`
)
}
}
...
@@ -220,7 +235,7 @@ function isMatchBaseType (val, rule) {
...
@@ -220,7 +235,7 @@ function isMatchBaseType (val, rule) {
return
true
return
true
}
}
function
isMatchArrayType
(
arr
,
rule
)
{
function
isMatchArrayType
(
arr
,
rule
)
{
if
(
getType
(
arr
)
!==
'
array
'
)
{
if
(
getType
(
arr
)
!==
'
array
'
)
{
return
false
return
false
}
}
...
@@ -249,11 +264,12 @@ const passwordRules = {
...
@@ -249,11 +264,12 @@ const passwordRules = {
// 密码必须为字母、数字和特殊符号任意两种的组合
// 密码必须为字母、数字和特殊符号任意两种的组合
medium
:
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)(?![
~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]
+$
)[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{8,16}
$/
,
medium
:
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)(?![
~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]
+$
)[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{8,16}
$/
,
// 密码必须包含字母和数字
// 密码必须包含字母和数字
weak
:
/^
(?=
.*
[
0-9
])(?=
.*
[
a-zA-Z
])[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{6,16}
$/
weak
:
/^
(?=
.*
[
0-9
])(?=
.*
[
a-zA-Z
])[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{6,16}
$/
,
}
}
function
createPasswordVerifier
({
function
createPasswordVerifier
({
passwordStrength
=
'
medium
'
passwordStrength
=
''
}
=
{})
{
}
=
{})
{
return
function
(
password
)
{
return
function
(
password
)
{
const
passwordRegExp
=
passwordRules
[
passwordStrength
]
const
passwordRegExp
=
passwordRules
[
passwordStrength
]
...
@@ -275,11 +291,12 @@ function createPasswordVerifier ({
...
@@ -275,11 +291,12 @@ function createPasswordVerifier ({
}
}
class
Validator
{
class
Validator
{
constructor
({
constructor
({
passwordStrength
=
'
medium
'
passwordStrength
=
''
}
=
{})
{
}
=
{})
{
this
.
baseValidator
=
baseValidator
this
.
baseValidator
=
baseValidator
this
.
customValidator
=
Object
.
create
(
null
)
this
.
customValidator
=
Object
.
create
(
null
)
if
(
passwordStrength
)
{
this
.
mixin
(
this
.
mixin
(
'
password
'
,
'
password
'
,
createPasswordVerifier
({
createPasswordVerifier
({
...
@@ -287,16 +304,17 @@ class Validator {
...
@@ -287,16 +304,17 @@ class Validator {
})
})
)
)
}
}
}
mixin
(
type
,
handler
)
{
mixin
(
type
,
handler
)
{
this
.
customValidator
[
type
]
=
handler
this
.
customValidator
[
type
]
=
handler
}
}
getRealBaseValidator
(
type
)
{
getRealBaseValidator
(
type
)
{
return
this
.
customValidator
[
type
]
||
this
.
baseValidator
[
type
]
return
this
.
customValidator
[
type
]
||
this
.
baseValidator
[
type
]
}
}
get
validator
()
{
get
validator
()
{
return
new
Proxy
({},
{
return
new
Proxy
({},
{
get
:
(
_
,
prop
)
=>
{
get
:
(
_
,
prop
)
=>
{
if
(
typeof
prop
!==
'
string
'
)
{
if
(
typeof
prop
!==
'
string
'
)
{
...
@@ -318,7 +336,7 @@ class Validator {
...
@@ -318,7 +336,7 @@ class Validator {
})
})
}
}
validate
(
value
=
{},
schema
=
{})
{
validate
(
value
=
{},
schema
=
{})
{
for
(
const
schemaKey
in
schema
)
{
for
(
const
schemaKey
in
schema
)
{
let
schemaValue
=
schema
[
schemaKey
]
let
schemaValue
=
schema
[
schemaKey
]
if
(
getType
(
schemaValue
)
===
'
string
'
)
{
if
(
getType
(
schemaValue
)
===
'
string
'
)
{
...
@@ -358,7 +376,7 @@ class Validator {
...
@@ -358,7 +376,7 @@ class Validator {
}
}
}
}
function
checkClientInfo
(
clientInfo
)
{
function
checkClientInfo
(
clientInfo
)
{
const
stringNotRequired
=
{
const
stringNotRequired
=
{
required
:
false
,
required
:
false
,
type
:
'
string
'
type
:
'
string
'
...
...
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/index.obj.js
浏览文件 @
418a68ed
...
@@ -110,7 +110,7 @@ module.exports = {
...
@@ -110,7 +110,7 @@ module.exports = {
this
.
hooks
=
this
.
configUtils
.
getHooks
()
this
.
hooks
=
this
.
configUtils
.
getHooks
()
this
.
validator
=
new
Validator
({
this
.
validator
=
new
Validator
({
passwordStrength
:
this
.
config
.
passwordStrength
||
'
medium
'
passwordStrength
:
this
.
config
.
passwordStrength
})
})
/**
/**
* 示例:覆盖密码验证规则
* 示例:覆盖密码验证规则
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录