@tachybase/plugin-password-policy 1.0.6
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/README.md +1 -0
- package/client.d.ts +2 -0
- package/client.js +1 -0
- package/dist/client/IPFilterForm.d.ts +1 -0
- package/dist/client/PasswordAttemptForm.d.ts +1 -0
- package/dist/client/PasswordStrengthSettingsForm.d.ts +2 -0
- package/dist/client/SignInFailsTable.d.ts +2 -0
- package/dist/client/UserLocksTable.d.ts +2 -0
- package/dist/client/collections/signInFails.d.ts +2 -0
- package/dist/client/collections/userLocks.d.ts +2 -0
- package/dist/client/hooks/usePasswordStrength.d.ts +11 -0
- package/dist/client/hooks/usePasswordValidator.d.ts +16 -0
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.js +4 -0
- package/dist/client/locale.d.ts +6 -0
- package/dist/constants.d.ts +11 -0
- package/dist/constants.js +44 -0
- package/dist/externalVersion.js +10 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +39 -0
- package/dist/locale/en-US.json +107 -0
- package/dist/locale/zh-CN.json +107 -0
- package/dist/node_modules/geoip-lite/LICENSE +50 -0
- package/dist/node_modules/geoip-lite/data/city.checksum +1 -0
- package/dist/node_modules/geoip-lite/data/country.checksum +1 -0
- package/dist/node_modules/geoip-lite/data/geoip-city-names.dat +0 -0
- package/dist/node_modules/geoip-lite/data/geoip-city.dat +0 -0
- package/dist/node_modules/geoip-lite/data/geoip-city6.dat +0 -0
- package/dist/node_modules/geoip-lite/data/geoip-country.dat +0 -0
- package/dist/node_modules/geoip-lite/data/geoip-country6.dat +0 -0
- package/dist/node_modules/geoip-lite/lib/fsWatcher.js +83 -0
- package/dist/node_modules/geoip-lite/lib/geoip.js +1 -0
- package/dist/node_modules/geoip-lite/lib/utils.js +98 -0
- package/dist/node_modules/geoip-lite/node_modules/.bin/rimraf +17 -0
- package/dist/node_modules/geoip-lite/package.json +1 -0
- package/dist/node_modules/geoip-lite/scripts/updatedb.js +685 -0
- package/dist/node_modules/geoip-lite/test/geo-lookup.js +56 -0
- package/dist/node_modules/geoip-lite/test/memory_usage.js +3 -0
- package/dist/node_modules/geoip-lite/test/tests.js +197 -0
- package/dist/server/actions/IpFilterController.d.ts +7 -0
- package/dist/server/actions/IpFilterController.js +124 -0
- package/dist/server/actions/PasswordAttemptController.d.ts +7 -0
- package/dist/server/actions/PasswordAttemptController.js +123 -0
- package/dist/server/actions/PasswordStrengthController.d.ts +7 -0
- package/dist/server/actions/PasswordStrengthController.js +123 -0
- package/dist/server/actions/SignInFailsController.d.ts +5 -0
- package/dist/server/actions/SignInFailsController.js +156 -0
- package/dist/server/actions/UserLocksController.d.ts +4 -0
- package/dist/server/actions/UserLocksController.js +102 -0
- package/dist/server/collections/ipFilter.d.ts +2 -0
- package/dist/server/collections/ipFilter.js +51 -0
- package/dist/server/collections/passwordAttempt.d.ts +2 -0
- package/dist/server/collections/passwordAttempt.js +55 -0
- package/dist/server/collections/passwordHistory.d.ts +2 -0
- package/dist/server/collections/passwordHistory.js +46 -0
- package/dist/server/collections/passwordStrengthConfig.d.ts +2 -0
- package/dist/server/collections/passwordStrengthConfig.js +59 -0
- package/dist/server/collections/signInFail.d.ts +2 -0
- package/dist/server/collections/signInFail.js +56 -0
- package/dist/server/collections/userLocks.d.ts +2 -0
- package/dist/server/collections/userLocks.js +51 -0
- package/dist/server/collections/users.d.ts +2 -0
- package/dist/server/collections/users.js +42 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +33 -0
- package/dist/server/plugin.d.ts +5 -0
- package/dist/server/plugin.js +129 -0
- package/dist/server/services/IPFilterService.d.ts +49 -0
- package/dist/server/services/IPFilterService.js +270 -0
- package/dist/server/services/PasswordAttemptService.d.ts +75 -0
- package/dist/server/services/PasswordAttemptService.js +595 -0
- package/dist/server/services/PasswordStrengthService.d.ts +28 -0
- package/dist/server/services/PasswordStrengthService.js +313 -0
- package/dist/types/geoip-lite.d.js +0 -0
- package/package.json +25 -0
- package/server.d.ts +2 -0
- package/server.js +1 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
7
|
+
var __typeError = (msg) => {
|
|
8
|
+
throw TypeError(msg);
|
|
9
|
+
};
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
26
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
27
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
28
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
29
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
30
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
31
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
35
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
36
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
37
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
38
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
39
|
+
return __privateGet(this, extra);
|
|
40
|
+
}, set [name](x) {
|
|
41
|
+
return __privateSet(this, extra, x);
|
|
42
|
+
} }, name));
|
|
43
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
44
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
45
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
46
|
+
if (k) {
|
|
47
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
48
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
49
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
50
|
+
}
|
|
51
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
52
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
53
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
54
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
55
|
+
}
|
|
56
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
57
|
+
};
|
|
58
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
59
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
60
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
61
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
62
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
63
|
+
var SignInFailsController_exports = {};
|
|
64
|
+
__export(SignInFailsController_exports, {
|
|
65
|
+
SignInFailsController: () => SignInFailsController
|
|
66
|
+
});
|
|
67
|
+
module.exports = __toCommonJS(SignInFailsController_exports);
|
|
68
|
+
var import_utils = require("@tachybase/utils");
|
|
69
|
+
var _get_dec, _list_dec, _SignInFailsController_decorators, _init;
|
|
70
|
+
_SignInFailsController_decorators = [(0, import_utils.Controller)("signInFails")], _list_dec = [(0, import_utils.Action)("list")], _get_dec = [(0, import_utils.Action)("get")];
|
|
71
|
+
class SignInFailsController {
|
|
72
|
+
constructor() {
|
|
73
|
+
__runInitializers(_init, 5, this);
|
|
74
|
+
}
|
|
75
|
+
async list(ctx, next) {
|
|
76
|
+
const { pageSize = 20, page = 1, sort = ["-createdAt"], filter = {} } = ctx.action.params;
|
|
77
|
+
try {
|
|
78
|
+
const repo = ctx.db.getRepository("signInFails");
|
|
79
|
+
if (filter.username || filter.nickname) {
|
|
80
|
+
const userFilter = {};
|
|
81
|
+
if (filter.username) {
|
|
82
|
+
userFilter["username"] = filter.username;
|
|
83
|
+
delete filter.username;
|
|
84
|
+
}
|
|
85
|
+
if (filter.nickname) {
|
|
86
|
+
userFilter["nickname"] = filter.nickname;
|
|
87
|
+
delete filter.nickname;
|
|
88
|
+
}
|
|
89
|
+
const userRepo = ctx.db.getRepository("users");
|
|
90
|
+
const users = await userRepo.find({
|
|
91
|
+
filter: userFilter,
|
|
92
|
+
fields: ["id"]
|
|
93
|
+
});
|
|
94
|
+
if (users.length > 0) {
|
|
95
|
+
filter.userId = {
|
|
96
|
+
$in: users.map((user) => user.get("id"))
|
|
97
|
+
};
|
|
98
|
+
} else {
|
|
99
|
+
ctx.body = {
|
|
100
|
+
count: 0,
|
|
101
|
+
rows: [],
|
|
102
|
+
page: Number(page),
|
|
103
|
+
pageSize: Number(pageSize),
|
|
104
|
+
totalPage: 0
|
|
105
|
+
};
|
|
106
|
+
return next();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const limit = Number(pageSize);
|
|
110
|
+
const offset = (Number(page) - 1) * limit;
|
|
111
|
+
const [rows, count] = await repo.findAndCount({
|
|
112
|
+
filter,
|
|
113
|
+
appends: ["user"],
|
|
114
|
+
limit,
|
|
115
|
+
offset,
|
|
116
|
+
sort
|
|
117
|
+
});
|
|
118
|
+
ctx.body = {
|
|
119
|
+
count,
|
|
120
|
+
rows,
|
|
121
|
+
page: Number(page),
|
|
122
|
+
pageSize: Number(pageSize),
|
|
123
|
+
totalPage: Math.ceil(count / Number(pageSize))
|
|
124
|
+
};
|
|
125
|
+
} catch (error) {
|
|
126
|
+
ctx.app.logger.error("Failed to list sign-in fails:", error);
|
|
127
|
+
ctx.throw(500, ctx.t("Failed to load sign-in fails history", { ns: "plugin-password-policy" }));
|
|
128
|
+
}
|
|
129
|
+
return next();
|
|
130
|
+
}
|
|
131
|
+
async get(ctx, next) {
|
|
132
|
+
const { db } = ctx;
|
|
133
|
+
const { filterByTk } = ctx.action.params;
|
|
134
|
+
try {
|
|
135
|
+
const repo = db.getRepository("signInFails");
|
|
136
|
+
const result = await repo.findOne({
|
|
137
|
+
filterByTk,
|
|
138
|
+
appends: ["user"]
|
|
139
|
+
});
|
|
140
|
+
ctx.body = result;
|
|
141
|
+
} catch (error) {
|
|
142
|
+
ctx.app.logger.error("Failed to get sign-in fail record:", error);
|
|
143
|
+
ctx.throw(500, ctx.t("Failed to load sign-in fail record", { ns: "plugin-password-policy" }));
|
|
144
|
+
}
|
|
145
|
+
return next();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
_init = __decoratorStart(null);
|
|
149
|
+
__decorateElement(_init, 1, "list", _list_dec, SignInFailsController);
|
|
150
|
+
__decorateElement(_init, 1, "get", _get_dec, SignInFailsController);
|
|
151
|
+
SignInFailsController = __decorateElement(_init, 0, "SignInFailsController", _SignInFailsController_decorators, SignInFailsController);
|
|
152
|
+
__runInitializers(_init, 1, SignInFailsController);
|
|
153
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
154
|
+
0 && (module.exports = {
|
|
155
|
+
SignInFailsController
|
|
156
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
7
|
+
var __typeError = (msg) => {
|
|
8
|
+
throw TypeError(msg);
|
|
9
|
+
};
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
26
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
27
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
28
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
29
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
30
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
31
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
35
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
36
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
37
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
38
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
39
|
+
return __privateGet(this, extra);
|
|
40
|
+
}, set [name](x) {
|
|
41
|
+
return __privateSet(this, extra, x);
|
|
42
|
+
} }, name));
|
|
43
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
44
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
45
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
46
|
+
if (k) {
|
|
47
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
48
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
49
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
50
|
+
}
|
|
51
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
52
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
53
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
54
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
55
|
+
}
|
|
56
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
57
|
+
};
|
|
58
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
59
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
60
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
61
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
62
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
63
|
+
var UserLocksController_exports = {};
|
|
64
|
+
__export(UserLocksController_exports, {
|
|
65
|
+
UserLocksController: () => UserLocksController
|
|
66
|
+
});
|
|
67
|
+
module.exports = __toCommonJS(UserLocksController_exports);
|
|
68
|
+
var import_utils = require("@tachybase/utils");
|
|
69
|
+
var _create_dec, _UserLocksController_decorators, _init;
|
|
70
|
+
_UserLocksController_decorators = [(0, import_utils.Controller)("userLocks")], _create_dec = [(0, import_utils.Action)("create")];
|
|
71
|
+
class UserLocksController {
|
|
72
|
+
constructor() {
|
|
73
|
+
__runInitializers(_init, 5, this);
|
|
74
|
+
}
|
|
75
|
+
async create(ctx, next) {
|
|
76
|
+
const { db } = ctx;
|
|
77
|
+
const now = /* @__PURE__ */ new Date();
|
|
78
|
+
const userLocksRepo = db.getRepository("userLocks");
|
|
79
|
+
await userLocksRepo.destroy({
|
|
80
|
+
filter: {
|
|
81
|
+
expireAt: {
|
|
82
|
+
$lt: now
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const result = await userLocksRepo.create({
|
|
87
|
+
values: ctx.action.params.values
|
|
88
|
+
});
|
|
89
|
+
ctx.body = {
|
|
90
|
+
success: true,
|
|
91
|
+
data: result
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
_init = __decoratorStart(null);
|
|
96
|
+
__decorateElement(_init, 1, "create", _create_dec, UserLocksController);
|
|
97
|
+
UserLocksController = __decorateElement(_init, 0, "UserLocksController", _UserLocksController_decorators, UserLocksController);
|
|
98
|
+
__runInitializers(_init, 1, UserLocksController);
|
|
99
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
100
|
+
0 && (module.exports = {
|
|
101
|
+
UserLocksController
|
|
102
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var ipFilter_exports = {};
|
|
19
|
+
__export(ipFilter_exports, {
|
|
20
|
+
default: () => ipFilter_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(ipFilter_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var ipFilter_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "ipFilter",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: true,
|
|
31
|
+
createdBy: true,
|
|
32
|
+
updatedBy: true,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "text",
|
|
36
|
+
name: "allowList"
|
|
37
|
+
//换行分割,支持cidr 比如127.0.0.1/24这样
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "text",
|
|
41
|
+
name: "blockList"
|
|
42
|
+
//换行分割
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: "boolean",
|
|
46
|
+
name: "allowFirst",
|
|
47
|
+
//白名单优先还是黑名单优先
|
|
48
|
+
default: true
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var passwordAttempt_exports = {};
|
|
19
|
+
__export(passwordAttempt_exports, {
|
|
20
|
+
default: () => passwordAttempt_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(passwordAttempt_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var passwordAttempt_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "passwordAttempt",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: true,
|
|
31
|
+
createdBy: true,
|
|
32
|
+
updatedBy: true,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "integer",
|
|
36
|
+
name: "windowSeconds"
|
|
37
|
+
// 规定时间:秒
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "integer",
|
|
41
|
+
name: "maxAttempts"
|
|
42
|
+
// 规定时间内最大尝试次数
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: "integer",
|
|
46
|
+
name: "lockSeconds"
|
|
47
|
+
// 锁定时长:秒
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: "boolean",
|
|
51
|
+
name: "strictLock"
|
|
52
|
+
// 严格锁定,被锁定后限制使用,而不仅仅是限制登录
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var passwordHistory_exports = {};
|
|
19
|
+
__export(passwordHistory_exports, {
|
|
20
|
+
default: () => passwordHistory_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(passwordHistory_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var passwordHistory_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "passwordHistory",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: false,
|
|
31
|
+
createdBy: false,
|
|
32
|
+
updatedBy: false,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "belongsTo",
|
|
36
|
+
name: "user",
|
|
37
|
+
target: "users",
|
|
38
|
+
foreignKey: "userId",
|
|
39
|
+
onDelete: "CASCADE"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: "password",
|
|
43
|
+
name: "password"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var passwordStrengthConfig_exports = {};
|
|
19
|
+
__export(passwordStrengthConfig_exports, {
|
|
20
|
+
default: () => passwordStrengthConfig_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(passwordStrengthConfig_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var passwordStrengthConfig_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "passwordStrengthConfig",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: true,
|
|
31
|
+
createdBy: true,
|
|
32
|
+
updatedBy: true,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "integer",
|
|
36
|
+
name: "minLength",
|
|
37
|
+
// 最小长度
|
|
38
|
+
defaultValue: 8
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: "integer",
|
|
42
|
+
name: "strengthLevel",
|
|
43
|
+
// 强度级别:0-不限制,1-字母和数字,2-字母数字符号,3-数字大小写字母,4-数字大小写字母符号,5-三种以上字符
|
|
44
|
+
defaultValue: 0
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: "boolean",
|
|
48
|
+
name: "notContainUsername",
|
|
49
|
+
// 不能包含用户名
|
|
50
|
+
defaultValue: false
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "integer",
|
|
54
|
+
name: "historyCount",
|
|
55
|
+
// 历史密码记录数量,0表示不限制
|
|
56
|
+
defaultValue: 0
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var signInFail_exports = {};
|
|
19
|
+
__export(signInFail_exports, {
|
|
20
|
+
default: () => signInFail_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(signInFail_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var signInFail_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "signInFails",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: false,
|
|
31
|
+
createdBy: false,
|
|
32
|
+
updatedBy: false,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "belongsTo",
|
|
36
|
+
name: "user",
|
|
37
|
+
target: "users",
|
|
38
|
+
targetField: "id",
|
|
39
|
+
foreignKey: "userId",
|
|
40
|
+
onDelete: "NO ACTION"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: "boolean",
|
|
44
|
+
name: "status",
|
|
45
|
+
default: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: "string",
|
|
49
|
+
name: "ip"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: "string",
|
|
53
|
+
name: "address"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var userLocks_exports = {};
|
|
19
|
+
__export(userLocks_exports, {
|
|
20
|
+
default: () => userLocks_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(userLocks_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var userLocks_default = (0, import_database.defineCollection)({
|
|
25
|
+
dumpRules: {
|
|
26
|
+
group: "user"
|
|
27
|
+
},
|
|
28
|
+
name: "userLocks",
|
|
29
|
+
createdAt: true,
|
|
30
|
+
updatedAt: true,
|
|
31
|
+
createdBy: true,
|
|
32
|
+
updatedBy: true,
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
type: "bigInt",
|
|
36
|
+
name: "userId",
|
|
37
|
+
unique: true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "date",
|
|
41
|
+
name: "expireAt"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: "belongsTo",
|
|
45
|
+
name: "user",
|
|
46
|
+
target: "users",
|
|
47
|
+
foreignKey: "userId",
|
|
48
|
+
onDelete: "CASCADE"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var users_exports = {};
|
|
19
|
+
__export(users_exports, {
|
|
20
|
+
default: () => users_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(users_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var users_default = (0, import_database.extendCollection)({
|
|
25
|
+
name: "users",
|
|
26
|
+
fields: [
|
|
27
|
+
{
|
|
28
|
+
type: "hasMany",
|
|
29
|
+
name: "signInFails",
|
|
30
|
+
target: "signInFails",
|
|
31
|
+
foreignKey: "userId",
|
|
32
|
+
onDelete: "NO ACTION"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
type: "hasOne",
|
|
36
|
+
name: "lock",
|
|
37
|
+
target: "userLocks",
|
|
38
|
+
foreignKey: "userId",
|
|
39
|
+
onDelete: "CASCADE"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './plugin';
|