ztxkui 4.2.18-2 → 4.2.18-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/business/Common/UserForgetPassword/index.js +17 -6
- package/dist/components/business/Common/UserPassword/index.js +18 -8
- package/dist/components/business/Common/validatePassword.d.ts +8 -0
- package/dist/components/business/Common/validatePassword.js +39 -0
- package/package.json +2 -2
|
@@ -48,6 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
import React, { useState, useCallback, useRef, useEffect, useLayoutEffect, } from 'react';
|
|
49
49
|
import { Modal, Form, SearchContainer, Input, Container, Button, message, } from '../../../../index';
|
|
50
50
|
import { validate, commonMessage } from 'ztxkutils/dist/validate';
|
|
51
|
+
import { validatePassword, passwordMessage } from '../validatePassword';
|
|
51
52
|
var SearchLeft = SearchContainer.SearchLeft, Item = SearchContainer.SearchItem;
|
|
52
53
|
var countDownMaxTime = 60; // 倒计时最大时间
|
|
53
54
|
var ForgetPassword = function (_a) {
|
|
@@ -256,14 +257,24 @@ var ForgetPassword = function (_a) {
|
|
|
256
257
|
React.createElement("div", { style: { width: '100%', display: 'flex' } },
|
|
257
258
|
React.createElement(Item, { name: "newPassword", label: "\u65B0\u5BC6\u7801", rules: [
|
|
258
259
|
{ required: true, message: '请输入新密码' },
|
|
259
|
-
{
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
function (_a) {
|
|
261
|
+
var getFieldValue = _a.getFieldValue;
|
|
262
|
+
return ({
|
|
263
|
+
validator: function (rule, value) {
|
|
264
|
+
var result = validatePassword(value, getFieldValue('account'));
|
|
265
|
+
if (result.result) {
|
|
266
|
+
return Promise.resolve();
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
return Promise.reject(result.message);
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
});
|
|
262
273
|
},
|
|
263
274
|
] },
|
|
264
|
-
React.createElement(Input, { autoComplete: "off",
|
|
275
|
+
React.createElement(Input.Password, { autoComplete: "off", placeholder: "\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801" })),
|
|
265
276
|
React.createElement("div", null,
|
|
266
|
-
React.createElement("p", { style: { height: 32, lineHeight: '32px', color: 'red' } },
|
|
277
|
+
React.createElement("p", { style: { height: 32, lineHeight: '32px', color: 'red' } }, passwordMessage))),
|
|
267
278
|
React.createElement(Item, { name: "newPassword1", label: "\u786E\u8BA4\u65B0\u5BC6\u7801", rules: [
|
|
268
279
|
{ required: true, message: '请确认密码' },
|
|
269
280
|
function (_a) {
|
|
@@ -278,6 +289,6 @@ var ForgetPassword = function (_a) {
|
|
|
278
289
|
});
|
|
279
290
|
},
|
|
280
291
|
], dependencies: ['newPassword'] },
|
|
281
|
-
React.createElement(Input, { autoComplete: "off",
|
|
292
|
+
React.createElement(Input.Password, { autoComplete: "off", placeholder: "\u786E\u8BA4\u65B0\u5BC6\u7801" }))))))));
|
|
282
293
|
};
|
|
283
294
|
export default ForgetPassword;
|
|
@@ -47,7 +47,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
47
47
|
};
|
|
48
48
|
import React, { useCallback, useState } from 'react';
|
|
49
49
|
import { Container, Form, SearchContainer, Input, message, Modal, Button, } from '../../../../index';
|
|
50
|
-
import {
|
|
50
|
+
import { validatePassword, passwordMessage } from '../validatePassword';
|
|
51
51
|
var SearchLeft = SearchContainer.SearchLeft, Item = SearchContainer.SearchItem;
|
|
52
52
|
var Making = function (_a) {
|
|
53
53
|
var visible = _a.visible, onCancel = _a.onCancel, setUserPassword = _a.setUserPassword, request = _a.request, setUserPasswordOption = _a.setUserPasswordOption, encryptionHandle = _a.encryptionHandle;
|
|
@@ -130,18 +130,28 @@ var Making = function (_a) {
|
|
|
130
130
|
React.createElement(SearchLeft, null,
|
|
131
131
|
React.createElement("div", { style: { width: '100%' } },
|
|
132
132
|
React.createElement(Item, { name: "oldPassword", label: "\u539F\u5BC6\u7801", rules: [{ required: true, message: '请输入原密码' }] },
|
|
133
|
-
React.createElement(Input, { autoComplete: "new-password"
|
|
133
|
+
React.createElement(Input.Password, { autoComplete: "new-password" }))),
|
|
134
134
|
React.createElement("div", { style: { width: '100%', display: 'flex' } },
|
|
135
135
|
React.createElement(Item, { name: "newPassword", label: "\u65B0\u5BC6\u7801", rules: [
|
|
136
136
|
{ required: true, message: '请输入新密码' },
|
|
137
|
-
{
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
function (_a) {
|
|
138
|
+
var getFieldValue = _a.getFieldValue;
|
|
139
|
+
return ({
|
|
140
|
+
validator: function (rule, value) {
|
|
141
|
+
var result = validatePassword(value, null);
|
|
142
|
+
if (result.result) {
|
|
143
|
+
return Promise.resolve();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
return Promise.reject(result.message);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
});
|
|
140
150
|
},
|
|
141
151
|
] },
|
|
142
|
-
React.createElement(Input, { autoComplete: "new-password"
|
|
152
|
+
React.createElement(Input.Password, { autoComplete: "new-password" })),
|
|
143
153
|
React.createElement("div", null,
|
|
144
|
-
React.createElement("p", { style: { height: 32, lineHeight: '32px', color: 'red' } },
|
|
154
|
+
React.createElement("p", { style: { height: 32, lineHeight: '32px', color: 'red' } }, passwordMessage))),
|
|
145
155
|
React.createElement(Item, { name: "newPassword1", label: "\u786E\u8BA4\u65B0\u5BC6\u7801", rules: [
|
|
146
156
|
{ required: true, message: '请确认密码' },
|
|
147
157
|
function (_a) {
|
|
@@ -156,6 +166,6 @@ var Making = function (_a) {
|
|
|
156
166
|
});
|
|
157
167
|
},
|
|
158
168
|
], dependencies: ['newPassword'] },
|
|
159
|
-
React.createElement(Input, { autoComplete: "new-password"
|
|
169
|
+
React.createElement(Input.Password, { autoComplete: "new-password" }))))))));
|
|
160
170
|
};
|
|
161
171
|
export default Making;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const passwordMessage = "\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u7279\u6B8A\u5B57\u7B26\u4E14\u6700\u5C0F\u957F\u5EA6\u4E3A8\uFF0C\u4E14\u4E0D\u80FD\u51FA\u73B0\u8FDE\u7EED\u6570\u5B57\u6216\u5B57\u7B26\uFF0C\u4E0D\u80FD\u51FA\u73B0\u76F8\u540C\u5B57\u7B26\uFF0C\u4E14\u7981\u6B62\u4F7F\u7528\u7528\u6237\u8D26\u53F7\u4F5C\u4E3A\u5BC6\u7801";
|
|
2
|
+
export declare function validatePassword(password: any, username: any): {
|
|
3
|
+
result: boolean;
|
|
4
|
+
message: string;
|
|
5
|
+
} | {
|
|
6
|
+
result: boolean;
|
|
7
|
+
message?: undefined;
|
|
8
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export var passwordMessage = '密码必须包含大小写字母、数字、特殊字符且最小长度为8,且不能出现连续数字或字符,不能出现相同字符,且禁止使用用户账号作为密码';
|
|
2
|
+
export function validatePassword(password, username) {
|
|
3
|
+
// 用正则表达式检查密码基本规则
|
|
4
|
+
var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$/;
|
|
5
|
+
if (!regex.test(password)) {
|
|
6
|
+
return {
|
|
7
|
+
result: false,
|
|
8
|
+
message: '密码中必须包含大小写字母、数字、特殊字符!',
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
// 检查密码中是否有连续的字母或数字
|
|
12
|
+
for (var i = 0; i < password.length - 1; i++) {
|
|
13
|
+
if (Math.abs(password.charCodeAt(i) - password.charCodeAt(i + 1)) === 1) {
|
|
14
|
+
return {
|
|
15
|
+
result: false,
|
|
16
|
+
message: '密码中有连续的字母或数字!',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// 检查密码中是否有相同的字符
|
|
21
|
+
var uniqueChars = new Set(password.split(''));
|
|
22
|
+
if (uniqueChars.size !== password.length) {
|
|
23
|
+
return {
|
|
24
|
+
result: false,
|
|
25
|
+
message: '密码中有相同的字符!',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// 检查密码是否与用户名相同
|
|
29
|
+
if (password === username) {
|
|
30
|
+
return {
|
|
31
|
+
result: false,
|
|
32
|
+
message: '密码与用户名相同!',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// 如果通过了所有的检查,则返回true
|
|
36
|
+
return {
|
|
37
|
+
result: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
package/package.json
CHANGED