@nocobase/plugin-users 0.11.1-alpha.5 → 0.12.0-alpha.1

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.
Files changed (108) hide show
  1. package/dist/client/index.js +11 -0
  2. package/{lib → dist}/index.d.ts +1 -0
  3. package/dist/index.js +18 -0
  4. package/dist/locale/en-US.js +12 -0
  5. package/dist/locale/es-ES.js +12 -0
  6. package/dist/locale/fr-FR.js +12 -0
  7. package/dist/locale/ja-JP.js +8 -0
  8. package/dist/locale/pt-BR.js +12 -0
  9. package/dist/locale/zh-CN.js +12 -0
  10. package/dist/server/actions/users.js +152 -0
  11. package/dist/server/authenticators/index.js +23 -0
  12. package/dist/server/authenticators/password.js +31 -0
  13. package/dist/server/collections/users.js +91 -0
  14. package/dist/server/index.d.ts +2 -0
  15. package/dist/server/index.js +18 -0
  16. package/dist/server/jwt-service.js +34 -0
  17. package/dist/server/locale/en-US.js +12 -0
  18. package/dist/server/locale/es-ES.js +12 -0
  19. package/dist/server/locale/fr-FR.js +12 -0
  20. package/dist/server/locale/index.js +26 -0
  21. package/dist/server/locale/ja-JP.js +8 -0
  22. package/dist/server/locale/pt-BR.js +12 -0
  23. package/dist/server/locale/zh-CN.js +12 -0
  24. package/dist/server/middlewares/check.js +13 -0
  25. package/dist/server/middlewares/index.js +15 -0
  26. package/{src/server/middlewares/parseToken.ts → dist/server/middlewares/parseToken.js} +11 -12
  27. package/dist/server/migrations/20220818072639-add-users-phone.js +43 -0
  28. package/dist/server/server.js +249 -0
  29. package/package.json +17 -28
  30. package/lib/client/index.js +0 -22
  31. package/lib/index.js +0 -13
  32. package/lib/locale/en-US.js +0 -15
  33. package/lib/locale/es-ES.js +0 -15
  34. package/lib/locale/fr-FR.js +0 -15
  35. package/lib/locale/ja-JP.js +0 -11
  36. package/lib/locale/pt-BR.js +0 -15
  37. package/lib/locale/zh-CN.js +0 -15
  38. package/lib/server/actions/users.js +0 -253
  39. package/lib/server/authenticators/index.js +0 -44
  40. package/lib/server/authenticators/password.js +0 -49
  41. package/lib/server/collections/users.js +0 -90
  42. package/lib/server/index.d.ts +0 -2
  43. package/lib/server/index.js +0 -16
  44. package/lib/server/jwt-service.js +0 -42
  45. package/lib/server/locale/en-US.js +0 -15
  46. package/lib/server/locale/es-ES.js +0 -15
  47. package/lib/server/locale/fr-FR.js +0 -15
  48. package/lib/server/locale/index.js +0 -27
  49. package/lib/server/locale/ja-JP.js +0 -11
  50. package/lib/server/locale/pt-BR.js +0 -15
  51. package/lib/server/locale/zh-CN.js +0 -15
  52. package/lib/server/middlewares/check.js +0 -24
  53. package/lib/server/middlewares/index.js +0 -19
  54. package/lib/server/middlewares/parseToken.js +0 -75
  55. package/lib/server/migrations/20220818072639-add-users-phone.js +0 -57
  56. package/lib/server/server.js +0 -312
  57. package/src/client/index.ts +0 -7
  58. package/src/index.ts +0 -1
  59. package/src/locale/en-US.ts +0 -10
  60. package/src/locale/es-ES.ts +0 -8
  61. package/src/locale/fr-FR.ts +0 -11
  62. package/src/locale/ja-JP.ts +0 -4
  63. package/src/locale/pt-BR.ts +0 -10
  64. package/src/locale/zh-CN.ts +0 -8
  65. package/src/server/__tests__/actions.test.ts +0 -79
  66. package/src/server/__tests__/fields.test.ts +0 -90
  67. package/src/server/__tests__/utils.ts +0 -8
  68. package/src/server/actions/users.ts +0 -148
  69. package/src/server/authenticators/index.ts +0 -26
  70. package/src/server/authenticators/password.ts +0 -34
  71. package/src/server/collections/users.ts +0 -89
  72. package/src/server/index.ts +0 -3
  73. package/src/server/jwt-service.ts +0 -34
  74. package/src/server/locale/en-US.ts +0 -10
  75. package/src/server/locale/es-ES.ts +0 -8
  76. package/src/server/locale/fr-FR.ts +0 -11
  77. package/src/server/locale/index.ts +0 -3
  78. package/src/server/locale/ja-JP.ts +0 -4
  79. package/src/server/locale/pt-BR.ts +0 -10
  80. package/src/server/locale/zh-CN.ts +0 -8
  81. package/src/server/middlewares/check.ts +0 -11
  82. package/src/server/middlewares/index.ts +0 -2
  83. package/src/server/migrations/20220818072639-add-users-phone.ts +0 -39
  84. package/src/server/server.ts +0 -253
  85. /package/{lib → dist}/client/index.d.ts +0 -0
  86. /package/{lib → dist}/locale/en-US.d.ts +0 -0
  87. /package/{lib → dist}/locale/es-ES.d.ts +0 -0
  88. /package/{lib → dist}/locale/fr-FR.d.ts +0 -0
  89. /package/{lib → dist}/locale/ja-JP.d.ts +0 -0
  90. /package/{lib → dist}/locale/pt-BR.d.ts +0 -0
  91. /package/{lib → dist}/locale/zh-CN.d.ts +0 -0
  92. /package/{lib → dist}/server/actions/users.d.ts +0 -0
  93. /package/{lib → dist}/server/authenticators/index.d.ts +0 -0
  94. /package/{lib → dist}/server/authenticators/password.d.ts +0 -0
  95. /package/{lib → dist}/server/collections/users.d.ts +0 -0
  96. /package/{lib → dist}/server/jwt-service.d.ts +0 -0
  97. /package/{lib → dist}/server/locale/en-US.d.ts +0 -0
  98. /package/{lib → dist}/server/locale/es-ES.d.ts +0 -0
  99. /package/{lib → dist}/server/locale/fr-FR.d.ts +0 -0
  100. /package/{lib → dist}/server/locale/index.d.ts +0 -0
  101. /package/{lib → dist}/server/locale/ja-JP.d.ts +0 -0
  102. /package/{lib → dist}/server/locale/pt-BR.d.ts +0 -0
  103. /package/{lib → dist}/server/locale/zh-CN.d.ts +0 -0
  104. /package/{lib → dist}/server/middlewares/check.d.ts +0 -0
  105. /package/{lib → dist}/server/middlewares/index.d.ts +0 -0
  106. /package/{lib → dist}/server/middlewares/parseToken.d.ts +0 -0
  107. /package/{lib → dist}/server/migrations/20220818072639-add-users-phone.d.ts +0 -0
  108. /package/{lib → dist}/server/server.d.ts +0 -0
@@ -0,0 +1,11 @@
1
+ (function(global, factory) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@nocobase/client")) : typeof define === "function" && define.amd ? define(["exports", "@nocobase/client"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["@nocobase/plugin-users"] = {}, global["@nocobase/client"]));
3
+ })(this, function(exports2, client) {
4
+ "use strict";
5
+ class UsersPlugin extends client.Plugin {
6
+ async load() {
7
+ }
8
+ }
9
+ exports2.default = UsersPlugin;
10
+ Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
11
+ });
@@ -1 +1,2 @@
1
+ export * from './server';
1
2
  export { default } from './server';
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server = require('./server');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, 'default', {
10
+ enumerable: true,
11
+ get: function () { return server__namespace.default; }
12
+ });
13
+ Object.keys(server).forEach(function (k) {
14
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
15
+ enumerable: true,
16
+ get: function () { return server[k]; }
17
+ });
18
+ });
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var en_US_default = {
4
+ "The email is incorrect, please re-enter": "The email is incorrect, please re-enter",
5
+ "Please fill in your email address": "Please fill in your email address",
6
+ "The password is incorrect, please re-enter": "The password is incorrect, please re-enter",
7
+ "Not a valid cellphone number, please re-enter": "Not a valid cellphone number, please re-enter",
8
+ "The phone number has been registered, please login directly": "The phone number has been registered, please login directly",
9
+ "The phone number is not registered, please register first": "The phone number is not registered, please register first"
10
+ };
11
+
12
+ module.exports = en_US_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var es_ES_default = {
4
+ "The email is incorrect, please re-enter": "El correo electr\xF3nico es incorrecto, por favor vuelva a introducirlo",
5
+ "Please fill in your email address": "Por favor, introduzca su direcci\xF3n de correo electr\xF3nico",
6
+ "The password is incorrect, please re-enter": "La contrase\xF1a es incorrecta, por favor, vuelva a introducirla",
7
+ "Not a valid cellphone number, please re-enter": "No es un n\xFAmero de m\xF3vil v\xE1lido, por favor, vuelva a introducirlo",
8
+ "The phone number has been registered, please login directly": "El n\xFAmero de tel\xE9fono ha sido registrado, por favor, inicie sesi\xF3n directamente",
9
+ "The phone number is not registered, please register first": "El n\xFAmero de tel\xE9fono no est\xE1 registrado, por favor reg\xEDstrese primero"
10
+ };
11
+
12
+ module.exports = es_ES_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var fr_FR_default = {
4
+ "The email is incorrect, please re-enter": "L'adresse e-mail est incorrecte, veuillez la saisir \xE0 nouveau",
5
+ "Please fill in your email address": "Veuillez remplir votre adresse e-mail",
6
+ "The password is incorrect, please re-enter": "Le mot de passe est incorrect, veuillez le saisir \xE0 nouveau",
7
+ "Not a valid cellphone number, please re-enter": "Num\xE9ro de t\xE9l\xE9phone portable invalide, veuillez le saisir \xE0 nouveau",
8
+ "The phone number has been registered, please login directly": "Le num\xE9ro de t\xE9l\xE9phone a \xE9t\xE9 enregistr\xE9, veuillez vous connecter directement",
9
+ "The phone number is not registered, please register first": "Le num\xE9ro de t\xE9l\xE9phone n'est pas enregistr\xE9, veuillez vous inscrire d'abord"
10
+ };
11
+
12
+ module.exports = fr_FR_default;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var ja_JP_default = {
4
+ "Please fill in your email address": "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
5
+ "The password is incorrect, please re-enter": "\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u518D\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
6
+ };
7
+
8
+ module.exports = ja_JP_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var pt_BR_default = {
4
+ "The email is incorrect, please re-enter": "O e-mail est\xE1 incorreto, por favor, digite novamente",
5
+ "Please fill in your email address": "Por favor, preencha o seu endere\xE7o de e-mail",
6
+ "The password is incorrect, please re-enter": "A senha est\xE1 incorreta, por favor, digite novamente",
7
+ "Not a valid cellphone number, please re-enter": "N\xFAmero de celular inv\xE1lido, por favor, digite novamente",
8
+ "The phone number has been registered, please login directly": "O n\xFAmero de celular j\xE1 est\xE1 registrado, por favor, fa\xE7a login diretamente",
9
+ "The phone number is not registered, please register first": "O n\xFAmero de celular n\xE3o est\xE1 registrado, por favor, registre-se primeiro"
10
+ };
11
+
12
+ module.exports = pt_BR_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var zh_CN_default = {
4
+ "The email is incorrect, please re-enter": "\u90AE\u7BB1\u6709\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
5
+ "Please fill in your email address": "\u8BF7\u586B\u5199\u90AE\u7BB1",
6
+ "The password is incorrect, please re-enter": "\u5BC6\u7801\u6709\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
7
+ "Not a valid cellphone number, please re-enter": "\u4E0D\u662F\u6709\u6548\u7684\u624B\u673A\u53F7\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
8
+ "The phone number has been registered, please login directly": "\u624B\u673A\u53F7\u5DF2\u6CE8\u518C\uFF0C\u8BF7\u76F4\u63A5\u767B\u5F55",
9
+ "The phone number is not registered, please register first": "\u624B\u673A\u53F7\u672A\u6CE8\u518C\uFF0C\u8BF7\u5148\u6CE8\u518C"
10
+ };
11
+
12
+ module.exports = zh_CN_default;
@@ -0,0 +1,152 @@
1
+ 'use strict';
2
+
3
+ var resourcer = require('@nocobase/resourcer');
4
+ var crypto = require('crypto');
5
+ var _ = require('../');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
10
+
11
+ async function check(ctx, next) {
12
+ if (ctx.state.currentUser) {
13
+ const user = ctx.state.currentUser.toJSON();
14
+ ctx.body = user;
15
+ } else {
16
+ ctx.body = {};
17
+ }
18
+ await next();
19
+ }
20
+ async function signin(ctx, next) {
21
+ const { authenticators, jwtService } = ctx.app.getPlugin("users");
22
+ const branches = {};
23
+ for (const [name, authenticator] of authenticators.getEntities()) {
24
+ branches[name] = authenticator;
25
+ }
26
+ return resourcer.branch(branches, (context) => context.action.params.authenticator ?? "password")(ctx, () => {
27
+ const user = ctx.state.currentUser.toJSON();
28
+ const token = jwtService.sign({ userId: user.id });
29
+ ctx.body = {
30
+ user,
31
+ token
32
+ };
33
+ return next();
34
+ });
35
+ }
36
+ async function signout(ctx, next) {
37
+ ctx.body = ctx.state.currentUser;
38
+ await next();
39
+ }
40
+ async function signup(ctx, next) {
41
+ const User = ctx.db.getRepository("users");
42
+ const { values } = ctx.action.params;
43
+ const user = await User.create({ values });
44
+ ctx.body = user;
45
+ await next();
46
+ }
47
+ async function lostpassword(ctx, next) {
48
+ const {
49
+ values: { email }
50
+ } = ctx.action.params;
51
+ if (!email) {
52
+ ctx.throw(400, { code: "InvalidUserData", message: ctx.t("Please fill in your email address", { ns: _.namespace }) });
53
+ }
54
+ const User = ctx.db.getCollection("users");
55
+ const user = await User.model.findOne({
56
+ where: {
57
+ email
58
+ }
59
+ });
60
+ if (!user) {
61
+ ctx.throw(404, {
62
+ code: "InvalidUserData",
63
+ message: ctx.t("The email is incorrect, please re-enter", { ns: _.namespace })
64
+ });
65
+ }
66
+ user.resetToken = crypto__default.default.randomBytes(20).toString("hex");
67
+ await user.save();
68
+ ctx.body = user;
69
+ await next();
70
+ }
71
+ async function resetpassword(ctx, next) {
72
+ const {
73
+ values: { email, password, resetToken }
74
+ } = ctx.action.params;
75
+ const User = ctx.db.getCollection("users");
76
+ const user = await User.model.findOne({
77
+ where: {
78
+ email,
79
+ resetToken
80
+ }
81
+ });
82
+ if (!user) {
83
+ ctx.throw(404);
84
+ }
85
+ user.token = null;
86
+ user.resetToken = null;
87
+ user.password = password;
88
+ await user.save();
89
+ ctx.body = user;
90
+ await next();
91
+ }
92
+ async function getUserByResetToken(ctx, next) {
93
+ const { token } = ctx.action.params;
94
+ const User = ctx.db.getCollection("users");
95
+ const user = await User.model.findOne({
96
+ where: {
97
+ resetToken: token
98
+ }
99
+ });
100
+ if (!user) {
101
+ ctx.throw(401);
102
+ }
103
+ ctx.body = user;
104
+ await next();
105
+ }
106
+ async function updateProfile(ctx, next) {
107
+ const { values } = ctx.action.params;
108
+ const { currentUser } = ctx.state;
109
+ if (!currentUser) {
110
+ ctx.throw(401);
111
+ }
112
+ const UserRepo = ctx.db.getRepository("users");
113
+ const result = await UserRepo.update({
114
+ filterByTk: currentUser.id,
115
+ values
116
+ });
117
+ ctx.body = result;
118
+ await next();
119
+ }
120
+ async function changePassword(ctx, next) {
121
+ const {
122
+ values: { oldPassword, newPassword }
123
+ } = ctx.action.params;
124
+ if (!ctx.state.currentUser) {
125
+ ctx.throw(401);
126
+ }
127
+ const User = ctx.db.getCollection("users");
128
+ const user = await User.model.findOne({
129
+ where: {
130
+ email: ctx.state.currentUser.email
131
+ }
132
+ });
133
+ const pwd = User.getField("password");
134
+ const isValid = await pwd.verify(oldPassword, user.password);
135
+ if (!isValid) {
136
+ ctx.throw(401, ctx.t("The password is incorrect, please re-enter", { ns: _.namespace }));
137
+ }
138
+ user.password = newPassword;
139
+ user.save();
140
+ ctx.body = ctx.state.currentUser.toJSON();
141
+ await next();
142
+ }
143
+
144
+ exports.changePassword = changePassword;
145
+ exports.check = check;
146
+ exports.getUserByResetToken = getUserByResetToken;
147
+ exports.lostpassword = lostpassword;
148
+ exports.resetpassword = resetpassword;
149
+ exports.signin = signin;
150
+ exports.signout = signout;
151
+ exports.signup = signup;
152
+ exports.updateProfile = updateProfile;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var utils = require('@nocobase/utils');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var path__default = /*#__PURE__*/_interopDefault(path);
9
+
10
+ function authenticators_default(plugin, more = {}) {
11
+ const { authenticators } = plugin;
12
+ const natives = ["password"].reduce(
13
+ (result, key) => Object.assign(result, {
14
+ [key]: utils.requireModule(path__default.default.isAbsolute(key) ? key : path__default.default.join(__dirname, key))
15
+ }),
16
+ {}
17
+ );
18
+ for (const [name, authenticator] of Object.entries({ ...more, ...natives })) {
19
+ authenticators.register(name, authenticator);
20
+ }
21
+ }
22
+
23
+ module.exports = authenticators_default;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var __ = require('..');
4
+
5
+ async function password_default(ctx, next) {
6
+ const { uniqueField = "email", values } = ctx.action.params;
7
+ if (!values[uniqueField]) {
8
+ return ctx.throw(400, {
9
+ code: "InvalidUserData",
10
+ message: ctx.t("Please fill in your email address", { ns: __.namespace })
11
+ });
12
+ }
13
+ const User = ctx.db.getCollection("users");
14
+ const user = await User.model.findOne({
15
+ where: {
16
+ [uniqueField]: values[uniqueField]
17
+ }
18
+ });
19
+ if (!user) {
20
+ return ctx.throw(404, ctx.t("The email is incorrect, please re-enter", { ns: __.namespace }));
21
+ }
22
+ const field = User.getField("password");
23
+ const valid = await field.verify(values.password, user.password);
24
+ if (!valid) {
25
+ return ctx.throw(404, ctx.t("The password is incorrect, please re-enter", { ns: __.namespace }));
26
+ }
27
+ ctx.state.currentUser = user;
28
+ return next();
29
+ }
30
+
31
+ module.exports = password_default;
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ var users_default = {
4
+ namespace: "users.users",
5
+ duplicator: {
6
+ dumpable: "optional",
7
+ with: "rolesUsers"
8
+ },
9
+ name: "users",
10
+ title: '{{t("Users")}}',
11
+ sortable: "sort",
12
+ model: "UserModel",
13
+ createdBy: true,
14
+ updatedBy: true,
15
+ logging: true,
16
+ fields: [
17
+ {
18
+ name: "id",
19
+ type: "bigInt",
20
+ autoIncrement: true,
21
+ primaryKey: true,
22
+ allowNull: false,
23
+ uiSchema: { type: "number", title: '{{t("ID")}}', "x-component": "InputNumber", "x-read-pretty": true },
24
+ interface: "id"
25
+ },
26
+ {
27
+ interface: "input",
28
+ type: "string",
29
+ name: "nickname",
30
+ uiSchema: {
31
+ type: "string",
32
+ title: '{{t("Nickname")}}',
33
+ "x-component": "Input"
34
+ }
35
+ },
36
+ {
37
+ interface: "email",
38
+ type: "string",
39
+ name: "email",
40
+ unique: true,
41
+ uiSchema: {
42
+ type: "string",
43
+ title: '{{t("Email")}}',
44
+ "x-component": "Input",
45
+ "x-validator": "email",
46
+ required: true
47
+ }
48
+ },
49
+ {
50
+ interface: "phone",
51
+ type: "string",
52
+ name: "phone",
53
+ unique: true,
54
+ uiSchema: {
55
+ type: "string",
56
+ title: '{{t("Phone")}}',
57
+ "x-component": "Input",
58
+ "x-validator": "phone",
59
+ required: true
60
+ }
61
+ },
62
+ {
63
+ interface: "password",
64
+ type: "password",
65
+ name: "password",
66
+ hidden: true,
67
+ uiSchema: {
68
+ type: "string",
69
+ title: '{{t("Password")}}',
70
+ "x-component": "Password"
71
+ }
72
+ },
73
+ {
74
+ type: "string",
75
+ name: "appLang"
76
+ },
77
+ {
78
+ type: "string",
79
+ name: "resetToken",
80
+ unique: true,
81
+ hidden: true
82
+ },
83
+ {
84
+ type: "json",
85
+ name: "systemSettings",
86
+ defaultValue: {}
87
+ }
88
+ ]
89
+ };
90
+
91
+ module.exports = users_default;
@@ -0,0 +1,2 @@
1
+ export { default } from './server';
2
+ export declare const namespace: string;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var package_json = require('../../package.json');
6
+ var server = require('./server');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var server__default = /*#__PURE__*/_interopDefault(server);
11
+
12
+ const namespace = package_json.name;
13
+
14
+ Object.defineProperty(exports, 'default', {
15
+ enumerable: true,
16
+ get: function () { return server__default.default; }
17
+ });
18
+ exports.namespace = namespace;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var jwt = require('jsonwebtoken');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var jwt__default = /*#__PURE__*/_interopDefault(jwt);
8
+
9
+ class JwtService {
10
+ constructor(options) {
11
+ this.options = options;
12
+ }
13
+ expiresIn() {
14
+ return this.options.expiresIn || process.env.JWT_EXPIRES_IN || "7d";
15
+ }
16
+ secret() {
17
+ return this.options.secret || process.env.APP_KEY;
18
+ }
19
+ sign(payload) {
20
+ return jwt__default.default.sign(payload, this.secret(), { expiresIn: this.expiresIn() });
21
+ }
22
+ decode(token) {
23
+ return new Promise((resolve, reject) => {
24
+ jwt__default.default.verify(token, this.secret(), (err, decoded) => {
25
+ if (err) {
26
+ return reject(err);
27
+ }
28
+ resolve(decoded);
29
+ });
30
+ });
31
+ }
32
+ }
33
+
34
+ exports.JwtService = JwtService;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var en_US_default = {
4
+ "The email is incorrect, please re-enter": "The email is incorrect, please re-enter",
5
+ "Please fill in your email address": "Please fill in your email address",
6
+ "The password is incorrect, please re-enter": "The password is incorrect, please re-enter",
7
+ "Not a valid cellphone number, please re-enter": "Not a valid cellphone number, please re-enter",
8
+ "The phone number has been registered, please login directly": "The phone number has been registered, please login directly",
9
+ "The phone number is not registered, please register first": "The phone number is not registered, please register first"
10
+ };
11
+
12
+ module.exports = en_US_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var es_ES_default = {
4
+ "The email is incorrect, please re-enter": "El correo electr\xF3nico es incorrecto, por favor vuelva a introducirlo",
5
+ "Please fill in your email address": "Por favor, introduzca su direcci\xF3n de correo electr\xF3nico",
6
+ "The password is incorrect, please re-enter": "La contrase\xF1a es incorrecta, por favor, vuelva a introducirla",
7
+ "Not a valid cellphone number, please re-enter": "No es un n\xFAmero de m\xF3vil v\xE1lido, por favor, vuelva a introducirlo",
8
+ "The phone number has been registered, please login directly": "El n\xFAmero de tel\xE9fono ha sido registrado, por favor, inicie sesi\xF3n directamente",
9
+ "The phone number is not registered, please register first": "El n\xFAmero de tel\xE9fono no est\xE1 registrado, por favor reg\xEDstrese primero"
10
+ };
11
+
12
+ module.exports = es_ES_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var fr_FR_default = {
4
+ "The email is incorrect, please re-enter": "L'adresse e-mail est incorrecte, veuillez la saisir \xE0 nouveau",
5
+ "Please fill in your email address": "Veuillez remplir votre adresse e-mail",
6
+ "The password is incorrect, please re-enter": "Le mot de passe est incorrect, veuillez le saisir \xE0 nouveau",
7
+ "Not a valid cellphone number, please re-enter": "Num\xE9ro de t\xE9l\xE9phone portable invalide, veuillez le saisir \xE0 nouveau",
8
+ "The phone number has been registered, please login directly": "Le num\xE9ro de t\xE9l\xE9phone a \xE9t\xE9 enregistr\xE9, veuillez vous connecter directement",
9
+ "The phone number is not registered, please register first": "Le num\xE9ro de t\xE9l\xE9phone n'est pas enregistr\xE9, veuillez vous inscrire d'abord"
10
+ };
11
+
12
+ module.exports = fr_FR_default;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var enUS = require('./en-US');
4
+ var zhCN = require('./zh-CN');
5
+ var ptBR = require('./pt-BR');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var enUS__default = /*#__PURE__*/_interopDefault(enUS);
10
+ var zhCN__default = /*#__PURE__*/_interopDefault(zhCN);
11
+ var ptBR__default = /*#__PURE__*/_interopDefault(ptBR);
12
+
13
+
14
+
15
+ Object.defineProperty(exports, 'enUS', {
16
+ enumerable: true,
17
+ get: function () { return enUS__default.default; }
18
+ });
19
+ Object.defineProperty(exports, 'zhCN', {
20
+ enumerable: true,
21
+ get: function () { return zhCN__default.default; }
22
+ });
23
+ Object.defineProperty(exports, 'ptBR', {
24
+ enumerable: true,
25
+ get: function () { return ptBR__default.default; }
26
+ });
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var ja_JP_default = {
4
+ "Please fill in your email address": "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
5
+ "The password is incorrect, please re-enter": "\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u518D\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
6
+ };
7
+
8
+ module.exports = ja_JP_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var pt_BR_default = {
4
+ "The email is incorrect, please re-enter": "O e-mail est\xE1 incorreto, por favor, digite novamente",
5
+ "Please fill in your email address": "Por favor, preencha o seu endere\xE7o de e-mail",
6
+ "The password is incorrect, please re-enter": "A senha est\xE1 incorreta, por favor, digite novamente",
7
+ "Not a valid cellphone number, please re-enter": "N\xFAmero de celular inv\xE1lido, por favor, digite novamente",
8
+ "The phone number has been registered, please login directly": "O n\xFAmero de celular j\xE1 est\xE1 registrado, por favor, fa\xE7a login diretamente",
9
+ "The phone number is not registered, please register first": "O n\xFAmero de celular n\xE3o est\xE1 registrado, por favor, registre-se primeiro"
10
+ };
11
+
12
+ module.exports = pt_BR_default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var zh_CN_default = {
4
+ "The email is incorrect, please re-enter": "\u90AE\u7BB1\u6709\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
5
+ "Please fill in your email address": "\u8BF7\u586B\u5199\u90AE\u7BB1",
6
+ "The password is incorrect, please re-enter": "\u5BC6\u7801\u6709\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
7
+ "Not a valid cellphone number, please re-enter": "\u4E0D\u662F\u6709\u6548\u7684\u624B\u673A\u53F7\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165",
8
+ "The phone number has been registered, please login directly": "\u624B\u673A\u53F7\u5DF2\u6CE8\u518C\uFF0C\u8BF7\u76F4\u63A5\u767B\u5F55",
9
+ "The phone number is not registered, please register first": "\u624B\u673A\u53F7\u672A\u6CE8\u518C\uFF0C\u8BF7\u5148\u6CE8\u518C"
10
+ };
11
+
12
+ module.exports = zh_CN_default;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ function check(options) {
4
+ return async function check2(ctx, next) {
5
+ const { currentUser } = ctx.state;
6
+ if (!currentUser) {
7
+ return ctx.throw(401, "Unauthorized");
8
+ }
9
+ return next();
10
+ };
11
+ }
12
+
13
+ exports.check = check;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var check = require('./check');
4
+ var parseToken = require('./parseToken');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, 'check', {
9
+ enumerable: true,
10
+ get: function () { return check.check; }
11
+ });
12
+ Object.defineProperty(exports, 'parseToken', {
13
+ enumerable: true,
14
+ get: function () { return parseToken.parseToken; }
15
+ });
@@ -1,36 +1,33 @@
1
- import { Context, Next } from '@nocobase/actions';
1
+ 'use strict';
2
2
 
3
- export async function parseToken(ctx: Context, next: Next) {
3
+ async function parseToken(ctx, next) {
4
4
  const user = await findUserByToken(ctx);
5
5
  if (user) {
6
6
  ctx.state.currentUser = user;
7
7
  }
8
8
  return next();
9
9
  }
10
-
11
- async function findUserByToken(ctx: Context) {
10
+ async function findUserByToken(ctx) {
12
11
  const token = ctx.getBearerToken();
13
12
  if (!token) {
14
13
  return null;
15
14
  }
16
- const { jwtService } = ctx.app.getPlugin('users');
15
+ const { jwtService } = ctx.app.getPlugin("users");
17
16
  try {
18
17
  const { userId } = await jwtService.decode(token);
19
- const collection = ctx.db.getCollection('users');
18
+ const collection = ctx.db.getCollection("users");
20
19
  ctx.state.currentUserAppends = ctx.state.currentUserAppends || [];
21
20
  for (const [, field] of collection.fields) {
22
- if (field.type === 'belongsTo') {
21
+ if (field.type === "belongsTo") {
23
22
  ctx.state.currentUserAppends.push(field.name);
24
23
  }
25
24
  }
26
-
27
- const user = await ctx.db.getRepository('users').findOne({
25
+ const user = await ctx.db.getRepository("users").findOne({
28
26
  appends: ctx.state.currentUserAppends,
29
27
  filter: {
30
- id: userId,
31
- },
28
+ id: userId
29
+ }
32
30
  });
33
-
34
31
  ctx.logger.info(`Current user id: ${userId}`);
35
32
  return user;
36
33
  } catch (error) {
@@ -39,3 +36,5 @@ async function findUserByToken(ctx: Context) {
39
36
  return null;
40
37
  }
41
38
  }
39
+
40
+ exports.parseToken = parseToken;