@nocobase/plugin-users 0.9.1-alpha.2 → 0.9.2-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.
@@ -12,53 +12,34 @@ exports.signin = signin;
12
12
  exports.signout = signout;
13
13
  exports.signup = signup;
14
14
  exports.updateProfile = updateProfile;
15
-
16
15
  function _resourcer() {
17
16
  const data = require("@nocobase/resourcer");
18
-
19
17
  _resourcer = function _resourcer() {
20
18
  return data;
21
19
  };
22
-
23
20
  return data;
24
21
  }
25
-
26
22
  function _crypto() {
27
23
  const data = _interopRequireDefault(require("crypto"));
28
-
29
24
  _crypto = function _crypto() {
30
25
  return data;
31
26
  };
32
-
33
27
  return data;
34
28
  }
35
-
36
29
  var _ = require("../");
37
-
38
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
-
40
31
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
41
-
42
32
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
-
44
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
45
-
33
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
46
34
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
-
48
35
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
49
-
50
36
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
51
-
52
37
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
53
-
54
38
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
55
-
56
39
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
57
-
58
40
  function check(_x, _x2) {
59
41
  return _check.apply(this, arguments);
60
42
  }
61
-
62
43
  function _check() {
63
44
  _check = _asyncToGenerator(function* (ctx, next) {
64
45
  if (ctx.state.currentUser) {
@@ -67,33 +48,26 @@ function _check() {
67
48
  } else {
68
49
  ctx.body = {};
69
50
  }
70
-
71
51
  yield next();
72
52
  });
73
53
  return _check.apply(this, arguments);
74
54
  }
75
-
76
55
  function signin(_x3, _x4) {
77
56
  return _signin.apply(this, arguments);
78
57
  }
79
-
80
58
  function _signin() {
81
59
  _signin = _asyncToGenerator(function* (ctx, next) {
82
60
  const _ctx$app$getPlugin = ctx.app.getPlugin('users'),
83
- authenticators = _ctx$app$getPlugin.authenticators,
84
- jwtService = _ctx$app$getPlugin.jwtService;
85
-
61
+ authenticators = _ctx$app$getPlugin.authenticators,
62
+ jwtService = _ctx$app$getPlugin.jwtService;
86
63
  const branches = {};
87
-
88
64
  var _iterator = _createForOfIteratorHelper(authenticators.getEntities()),
89
- _step;
90
-
65
+ _step;
91
66
  try {
92
67
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
93
68
  const _step$value = _slicedToArray(_step.value, 2),
94
- name = _step$value[0],
95
- authenticator = _step$value[1];
96
-
69
+ name = _step$value[0],
70
+ authenticator = _step$value[1];
97
71
  branches[name] = authenticator;
98
72
  }
99
73
  } catch (err) {
@@ -101,10 +75,8 @@ function _signin() {
101
75
  } finally {
102
76
  _iterator.f();
103
77
  }
104
-
105
78
  return (0, _resourcer().branch)(branches, context => {
106
79
  var _context$action$param;
107
-
108
80
  return (_context$action$param = context.action.params.authenticator) !== null && _context$action$param !== void 0 ? _context$action$param : 'password';
109
81
  })(ctx, () => {
110
82
  const user = ctx.state.currentUser.toJSON();
@@ -120,11 +92,9 @@ function _signin() {
120
92
  });
121
93
  return _signin.apply(this, arguments);
122
94
  }
123
-
124
95
  function signout(_x5, _x6) {
125
96
  return _signout.apply(this, arguments);
126
97
  }
127
-
128
98
  function _signout() {
129
99
  _signout = _asyncToGenerator(function* (ctx, next) {
130
100
  ctx.body = ctx.state.currentUser;
@@ -132,11 +102,9 @@ function _signout() {
132
102
  });
133
103
  return _signout.apply(this, arguments);
134
104
  }
135
-
136
105
  function signup(_x7, _x8) {
137
106
  return _signup.apply(this, arguments);
138
107
  }
139
-
140
108
  function _signup() {
141
109
  _signup = _asyncToGenerator(function* (ctx, next) {
142
110
  const User = ctx.db.getRepository('users');
@@ -149,15 +117,12 @@ function _signup() {
149
117
  });
150
118
  return _signup.apply(this, arguments);
151
119
  }
152
-
153
120
  function lostpassword(_x9, _x10) {
154
121
  return _lostpassword.apply(this, arguments);
155
122
  }
156
-
157
123
  function _lostpassword() {
158
124
  _lostpassword = _asyncToGenerator(function* (ctx, next) {
159
125
  const email = ctx.action.params.values.email;
160
-
161
126
  if (!email) {
162
127
  ctx.throw(400, {
163
128
  code: 'InvalidUserData',
@@ -166,14 +131,12 @@ function _lostpassword() {
166
131
  })
167
132
  });
168
133
  }
169
-
170
134
  const User = ctx.db.getCollection('users');
171
135
  const user = yield User.model.findOne({
172
136
  where: {
173
137
  email
174
138
  }
175
139
  });
176
-
177
140
  if (!user) {
178
141
  ctx.throw(404, {
179
142
  code: 'InvalidUserData',
@@ -182,7 +145,6 @@ function _lostpassword() {
182
145
  })
183
146
  });
184
147
  }
185
-
186
148
  user.resetToken = _crypto().default.randomBytes(20).toString('hex');
187
149
  yield user.save();
188
150
  ctx.body = user;
@@ -190,17 +152,15 @@ function _lostpassword() {
190
152
  });
191
153
  return _lostpassword.apply(this, arguments);
192
154
  }
193
-
194
155
  function resetpassword(_x11, _x12) {
195
156
  return _resetpassword.apply(this, arguments);
196
157
  }
197
-
198
158
  function _resetpassword() {
199
159
  _resetpassword = _asyncToGenerator(function* (ctx, next) {
200
160
  const _ctx$action$params$va = ctx.action.params.values,
201
- email = _ctx$action$params$va.email,
202
- password = _ctx$action$params$va.password,
203
- resetToken = _ctx$action$params$va.resetToken;
161
+ email = _ctx$action$params$va.email,
162
+ password = _ctx$action$params$va.password,
163
+ resetToken = _ctx$action$params$va.resetToken;
204
164
  const User = ctx.db.getCollection('users');
205
165
  const user = yield User.model.findOne({
206
166
  where: {
@@ -208,11 +168,9 @@ function _resetpassword() {
208
168
  resetToken
209
169
  }
210
170
  });
211
-
212
171
  if (!user) {
213
172
  ctx.throw(404);
214
173
  }
215
-
216
174
  user.token = null;
217
175
  user.resetToken = null;
218
176
  user.password = password;
@@ -222,11 +180,9 @@ function _resetpassword() {
222
180
  });
223
181
  return _resetpassword.apply(this, arguments);
224
182
  }
225
-
226
183
  function getUserByResetToken(_x13, _x14) {
227
184
  return _getUserByResetToken.apply(this, arguments);
228
185
  }
229
-
230
186
  function _getUserByResetToken() {
231
187
  _getUserByResetToken = _asyncToGenerator(function* (ctx, next) {
232
188
  const token = ctx.action.params.token;
@@ -236,30 +192,24 @@ function _getUserByResetToken() {
236
192
  resetToken: token
237
193
  }
238
194
  });
239
-
240
195
  if (!user) {
241
196
  ctx.throw(401);
242
197
  }
243
-
244
198
  ctx.body = user;
245
199
  yield next();
246
200
  });
247
201
  return _getUserByResetToken.apply(this, arguments);
248
202
  }
249
-
250
203
  function updateProfile(_x15, _x16) {
251
204
  return _updateProfile.apply(this, arguments);
252
205
  }
253
-
254
206
  function _updateProfile() {
255
207
  _updateProfile = _asyncToGenerator(function* (ctx, next) {
256
208
  const values = ctx.action.params.values;
257
209
  const currentUser = ctx.state.currentUser;
258
-
259
210
  if (!currentUser) {
260
211
  ctx.throw(401);
261
212
  }
262
-
263
213
  const UserRepo = ctx.db.getRepository('users');
264
214
  const result = yield UserRepo.update({
265
215
  filterByTk: currentUser.id,
@@ -270,21 +220,17 @@ function _updateProfile() {
270
220
  });
271
221
  return _updateProfile.apply(this, arguments);
272
222
  }
273
-
274
223
  function changePassword(_x17, _x18) {
275
224
  return _changePassword.apply(this, arguments);
276
225
  }
277
-
278
226
  function _changePassword() {
279
227
  _changePassword = _asyncToGenerator(function* (ctx, next) {
280
228
  const _ctx$action$params$va2 = ctx.action.params.values,
281
- oldPassword = _ctx$action$params$va2.oldPassword,
282
- newPassword = _ctx$action$params$va2.newPassword;
283
-
229
+ oldPassword = _ctx$action$params$va2.oldPassword,
230
+ newPassword = _ctx$action$params$va2.newPassword;
284
231
  if (!ctx.state.currentUser) {
285
232
  ctx.throw(401);
286
233
  }
287
-
288
234
  const User = ctx.db.getCollection('users');
289
235
  const user = yield User.model.findOne({
290
236
  where: {
@@ -293,13 +239,11 @@ function _changePassword() {
293
239
  });
294
240
  const pwd = User.getField('password');
295
241
  const isValid = yield pwd.verify(oldPassword, user.password);
296
-
297
242
  if (!isValid) {
298
243
  ctx.throw(401, ctx.t('The password is incorrect, please re-enter', {
299
244
  ns: _.namespace
300
245
  }));
301
246
  }
302
-
303
247
  user.password = newPassword;
304
248
  user.save();
305
249
  ctx.body = ctx.state.currentUser.toJSON();
@@ -4,60 +4,42 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
-
8
7
  function _path() {
9
8
  const data = _interopRequireDefault(require("path"));
10
-
11
9
  _path = function _path() {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
14
  function _utils() {
19
15
  const data = require("@nocobase/utils");
20
-
21
16
  _utils = function _utils() {
22
17
  return data;
23
18
  };
24
-
25
19
  return data;
26
20
  }
27
-
28
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
22
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
31
-
32
23
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
-
34
24
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
35
-
36
25
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
37
-
38
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
39
-
26
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
40
27
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
41
-
42
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
-
44
29
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
-
46
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47
-
30
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
32
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
48
33
  ;
49
-
50
34
  function _default(plugin, more = {}) {
51
35
  const authenticators = plugin.authenticators;
52
36
  const natives = ['password'].reduce((result, key) => Object.assign(result, {
53
37
  [key]: (0, _utils().requireModule)(_path().default.isAbsolute(key) ? key : _path().default.join(__dirname, key))
54
38
  }), {});
55
-
56
39
  for (var _i = 0, _Object$entries = Object.entries(_objectSpread(_objectSpread({}, more), natives)); _i < _Object$entries.length; _i++) {
57
40
  const _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
58
- name = _Object$entries$_i[0],
59
- authenticator = _Object$entries$_i[1];
60
-
41
+ name = _Object$entries$_i[0],
42
+ authenticator = _Object$entries$_i[1];
61
43
  authenticators.register(name, authenticator);
62
44
  }
63
45
  }
@@ -4,24 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
-
8
7
  var _ = require("..");
9
-
10
8
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
11
-
12
9
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
13
-
14
10
  function _default(_x, _x2) {
15
11
  return _ref.apply(this, arguments);
16
12
  }
17
-
18
13
  function _ref() {
19
14
  _ref = _asyncToGenerator(function* (ctx, next) {
20
15
  const _ctx$action$params = ctx.action.params,
21
- _ctx$action$params$un = _ctx$action$params.uniqueField,
22
- uniqueField = _ctx$action$params$un === void 0 ? 'email' : _ctx$action$params$un,
23
- values = _ctx$action$params.values;
24
-
16
+ _ctx$action$params$un = _ctx$action$params.uniqueField,
17
+ uniqueField = _ctx$action$params$un === void 0 ? 'email' : _ctx$action$params$un,
18
+ values = _ctx$action$params.values;
25
19
  if (!values[uniqueField]) {
26
20
  return ctx.throw(400, {
27
21
  code: 'InvalidUserData',
@@ -30,29 +24,24 @@ function _ref() {
30
24
  })
31
25
  });
32
26
  }
33
-
34
27
  const User = ctx.db.getCollection('users');
35
28
  const user = yield User.model.findOne({
36
29
  where: {
37
30
  [uniqueField]: values[uniqueField]
38
31
  }
39
32
  });
40
-
41
33
  if (!user) {
42
34
  return ctx.throw(404, ctx.t('The email is incorrect, please re-enter', {
43
35
  ns: _.namespace
44
36
  }));
45
37
  }
46
-
47
38
  const field = User.getField('password');
48
39
  const valid = yield field.verify(values.password, user.password);
49
-
50
40
  if (!valid) {
51
41
  return ctx.throw(404, ctx.t('The password is incorrect, please re-enter', {
52
42
  ns: _.namespace
53
43
  }));
54
44
  }
55
-
56
45
  ctx.state.currentUser = user;
57
46
  return next();
58
47
  });
@@ -5,8 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = {
8
- namespace: 'users',
9
- duplicator: 'optional',
8
+ namespace: 'users.users',
9
+ duplicator: {
10
+ dumpable: 'optional',
11
+ with: 'rolesUsers'
12
+ },
10
13
  name: 'users',
11
14
  title: '{{t("Users")}}',
12
15
  sortable: 'sort',
@@ -78,6 +81,10 @@ var _default = {
78
81
  name: 'resetToken',
79
82
  unique: true,
80
83
  hidden: true
84
+ }, {
85
+ type: 'json',
86
+ name: 'systemSettings',
87
+ defaultValue: {}
81
88
  }]
82
89
  };
83
90
  exports.default = _default;
package/lib/index.js CHANGED
@@ -10,11 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  }
11
11
  });
12
12
  exports.namespace = void 0;
13
-
14
13
  var _server = _interopRequireDefault(require("./server"));
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
15
  const namespace = require('../package.json').name;
19
-
20
16
  exports.namespace = namespace;
@@ -4,51 +4,39 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.JwtService = void 0;
7
-
8
7
  function _jsonwebtoken() {
9
8
  const data = _interopRequireDefault(require("jsonwebtoken"));
10
-
11
9
  _jsonwebtoken = function _jsonwebtoken() {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
15
  class JwtService {
21
16
  constructor(options) {
22
17
  this.options = void 0;
23
18
  this.options = options;
24
19
  }
25
-
26
20
  expiresIn() {
27
21
  return this.options.expiresIn || process.env.JWT_EXPIRES_IN || '7d';
28
22
  }
29
-
30
23
  secret() {
31
24
  return this.options.secret || process.env.APP_KEY;
32
25
  }
33
-
34
26
  sign(payload) {
35
27
  return _jsonwebtoken().default.sign(payload, this.secret(), {
36
28
  expiresIn: this.expiresIn()
37
29
  });
38
30
  }
39
-
40
31
  decode(token) {
41
32
  return new Promise((resolve, reject) => {
42
33
  _jsonwebtoken().default.verify(token, this.secret(), (err, decoded) => {
43
34
  if (err) {
44
35
  return reject(err);
45
36
  }
46
-
47
37
  resolve(decoded);
48
38
  });
49
39
  });
50
40
  }
51
-
52
41
  }
53
-
54
42
  exports.JwtService = JwtService;
@@ -1,2 +1,3 @@
1
1
  export { default as enUS } from './en-US';
2
2
  export { default as zhCN } from './zh-CN';
3
+ export { default as ptBR } from './pt-BR';
@@ -9,15 +9,19 @@ Object.defineProperty(exports, "enUS", {
9
9
  return _enUS.default;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ptBR", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _ptBR.default;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "zhCN", {
13
19
  enumerable: true,
14
20
  get: function get() {
15
21
  return _zhCN.default;
16
22
  }
17
23
  });
18
-
19
24
  var _enUS = _interopRequireDefault(require("./en-US"));
20
-
21
25
  var _zhCN = _interopRequireDefault(require("./zh-CN"));
22
-
26
+ var _ptBR = _interopRequireDefault(require("./pt-BR"));
23
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,9 @@
1
+ declare const _default: {
2
+ "The email is incorrect, please re-enter": string;
3
+ "Please fill in your email address": string;
4
+ "The password is incorrect, please re-enter": string;
5
+ "Not a valid cellphone number, please re-enter": string;
6
+ "The phone number has been registered, please login directly": string;
7
+ "The phone number is not registered, please register first": string;
8
+ };
9
+ export default _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ "The email is incorrect, please re-enter": "O e-mail está incorreto, por favor, digite novamente",
9
+ "Please fill in your email address": "Por favor, preencha o seu endereço de e-mail",
10
+ "The password is incorrect, please re-enter": "A senha está incorreta, por favor, digite novamente",
11
+ "Not a valid cellphone number, please re-enter": "Número de celular inválido, por favor, digite novamente",
12
+ "The phone number has been registered, please login directly": "O número de celular já está registrado, por favor, faça login diretamente",
13
+ "The phone number is not registered, please register first": "O número de celular não está registrado, por favor, registre-se primeiro"
14
+ };
15
+ exports.default = _default;
@@ -4,28 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.check = check;
7
-
8
7
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9
-
10
8
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
11
-
12
9
  // TODO(usage): 拦截用户的处理暂时作为一个中间件导出,应用需要的时候可以直接使用这个中间件
13
10
  function check(options) {
14
11
  return /*#__PURE__*/function () {
15
12
  var _check = _asyncToGenerator(function* (ctx, next) {
16
13
  const currentUser = ctx.state.currentUser;
17
-
18
14
  if (!currentUser) {
19
15
  return ctx.throw(401, 'Unauthorized');
20
16
  }
21
-
22
17
  return next();
23
18
  });
24
-
25
19
  function check(_x, _x2) {
26
20
  return _check.apply(this, arguments);
27
21
  }
28
-
29
22
  return check;
30
23
  }();
31
24
  }
@@ -15,7 +15,5 @@ Object.defineProperty(exports, "parseToken", {
15
15
  return _parseToken.parseToken;
16
16
  }
17
17
  });
18
-
19
18
  var _check = require("./check");
20
-
21
19
  var _parseToken = require("./parseToken");
@@ -4,72 +4,50 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.parseToken = parseToken;
7
-
8
7
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
-
10
8
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
-
12
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
13
-
9
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
14
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
-
16
11
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
17
-
18
12
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
-
20
13
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
21
-
22
14
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
-
24
15
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
25
-
26
16
  function parseToken(_x, _x2) {
27
17
  return _parseToken.apply(this, arguments);
28
18
  }
29
-
30
19
  function _parseToken() {
31
20
  _parseToken = _asyncToGenerator(function* (ctx, next) {
32
21
  const user = yield findUserByToken(ctx);
33
-
34
22
  if (user) {
35
23
  ctx.state.currentUser = user;
36
24
  }
37
-
38
25
  return next();
39
26
  });
40
27
  return _parseToken.apply(this, arguments);
41
28
  }
42
-
43
29
  function findUserByToken(_x3) {
44
30
  return _findUserByToken.apply(this, arguments);
45
31
  }
46
-
47
32
  function _findUserByToken() {
48
33
  _findUserByToken = _asyncToGenerator(function* (ctx) {
49
34
  const token = ctx.getBearerToken();
50
-
51
35
  if (!token) {
52
36
  return null;
53
37
  }
54
-
55
38
  const _ctx$app$getPlugin = ctx.app.getPlugin('users'),
56
- jwtService = _ctx$app$getPlugin.jwtService;
57
-
39
+ jwtService = _ctx$app$getPlugin.jwtService;
58
40
  try {
59
41
  const _yield$jwtService$dec = yield jwtService.decode(token),
60
- userId = _yield$jwtService$dec.userId;
61
-
42
+ userId = _yield$jwtService$dec.userId;
62
43
  const collection = ctx.db.getCollection('users');
63
44
  ctx.state.currentUserAppends = ctx.state.currentUserAppends || [];
64
-
65
45
  var _iterator = _createForOfIteratorHelper(collection.fields),
66
- _step;
67
-
46
+ _step;
68
47
  try {
69
48
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
70
49
  const _step$value = _slicedToArray(_step.value, 2),
71
- field = _step$value[1];
72
-
50
+ field = _step$value[1];
73
51
  if (field.type === 'belongsTo') {
74
52
  ctx.state.currentUserAppends.push(field.name);
75
53
  }
@@ -79,7 +57,6 @@ function _findUserByToken() {
79
57
  } finally {
80
58
  _iterator.f();
81
59
  }
82
-
83
60
  const user = yield ctx.db.getRepository('users').findOne({
84
61
  appends: ctx.state.currentUserAppends,
85
62
  filter: {
@@ -4,41 +4,30 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  function _server() {
9
8
  const data = require("@nocobase/server");
10
-
11
9
  _server = function _server() {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
14
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
19
-
20
15
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
21
-
22
16
  class AddUsersPhoneMigration extends _server().Migration {
23
17
  up() {
24
18
  var _this = this;
25
-
26
19
  return _asyncToGenerator(function* () {
27
20
  const match = yield _this.app.version.satisfies('<=0.7.4-alpha.7');
28
-
29
21
  if (!match) {
30
22
  return;
31
23
  }
32
-
33
24
  const Field = _this.context.db.getRepository('fields');
34
-
35
25
  const existed = yield Field.count({
36
26
  filter: {
37
27
  name: 'phone',
38
28
  collectionName: 'users'
39
29
  }
40
30
  });
41
-
42
31
  if (!existed) {
43
32
  yield Field.create({
44
33
  values: {
@@ -61,11 +50,8 @@ class AddUsersPhoneMigration extends _server().Migration {
61
50
  }
62
51
  })();
63
52
  }
64
-
65
53
  down() {
66
54
  return _asyncToGenerator(function* () {})();
67
55
  }
68
-
69
56
  }
70
-
71
57
  exports.default = AddUsersPhoneMigration;
package/lib/server.js CHANGED
@@ -4,91 +4,58 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
- function _jsonTemplates() {
9
- const data = _interopRequireDefault(require("json-templates"));
10
-
11
- _jsonTemplates = function _jsonTemplates() {
12
- return data;
13
- };
14
-
15
- return data;
16
- }
17
-
18
- function _path() {
19
- const data = require("path");
20
-
21
- _path = function _path() {
22
- return data;
23
- };
24
-
25
- return data;
26
- }
27
-
28
7
  function _database() {
29
8
  const data = require("@nocobase/database");
30
-
31
9
  _database = function _database() {
32
10
  return data;
33
11
  };
34
-
35
12
  return data;
36
13
  }
37
-
38
14
  function _server() {
39
15
  const data = require("@nocobase/server");
40
-
41
16
  _server = function _server() {
42
17
  return data;
43
18
  };
44
-
45
19
  return data;
46
20
  }
47
-
48
21
  function _utils() {
49
22
  const data = require("@nocobase/utils");
50
-
51
23
  _utils = function _utils() {
52
24
  return data;
53
25
  };
54
-
55
26
  return data;
56
27
  }
57
-
28
+ function _jsonTemplates() {
29
+ const data = _interopRequireDefault(require("json-templates"));
30
+ _jsonTemplates = function _jsonTemplates() {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _path() {
36
+ const data = require("path");
37
+ _path = function _path() {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
58
42
  var _2 = require("./");
59
-
60
43
  var actions = _interopRequireWildcard(require("./actions/users"));
61
-
62
44
  var _authenticators = _interopRequireDefault(require("./authenticators"));
63
-
64
45
  var _jwtService = require("./jwt-service");
65
-
66
46
  var _locale = require("./locale");
67
-
68
47
  var _middlewares = require("./middlewares");
69
-
70
48
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
71
-
72
49
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
73
-
74
50
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
75
-
76
51
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
77
-
78
52
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
79
-
80
53
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
81
-
82
54
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
83
-
84
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
85
-
55
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
86
56
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
87
-
88
57
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
89
-
90
58
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
91
-
92
59
  class UsersPlugin extends _server().Plugin {
93
60
  constructor(app, options) {
94
61
  super(app, options);
@@ -96,43 +63,32 @@ class UsersPlugin extends _server().Plugin {
96
63
  this.authenticators = new (_utils().Registry)();
97
64
  this.jwtService = new _jwtService.JwtService((options === null || options === void 0 ? void 0 : options.jwt) || {});
98
65
  }
99
-
100
66
  beforeLoad() {
101
67
  var _this = this;
102
-
103
68
  return _asyncToGenerator(function* () {
104
69
  _this.app.i18n.addResources('zh-CN', _2.namespace, _locale.zhCN);
105
-
106
70
  _this.app.i18n.addResources('en-US', _2.namespace, _locale.enUS);
107
-
108
71
  const cmd = _this.app.findCommand('install');
109
-
110
72
  if (cmd) {
111
73
  cmd.requiredOption('-e, --root-email <rootEmail>', '', process.env.INIT_ROOT_EMAIL);
112
74
  cmd.requiredOption('-p, --root-password <rootPassword>', '', process.env.INIT_ROOT_PASSWORD);
113
75
  cmd.option('-n, --root-nickname <rootNickname>');
114
76
  }
115
-
116
77
  _this.db.registerOperators({
117
78
  $isCurrentUser(_, ctx) {
118
79
  var _ctx$app, _ctx$app$ctx, _ctx$app$ctx$state, _ctx$app$ctx$state$cu;
119
-
120
80
  return {
121
81
  [_database().Op.eq]: (ctx === null || ctx === void 0 ? void 0 : (_ctx$app = ctx.app) === null || _ctx$app === void 0 ? void 0 : (_ctx$app$ctx = _ctx$app.ctx) === null || _ctx$app$ctx === void 0 ? void 0 : (_ctx$app$ctx$state = _ctx$app$ctx.state) === null || _ctx$app$ctx$state === void 0 ? void 0 : (_ctx$app$ctx$state$cu = _ctx$app$ctx$state.currentUser) === null || _ctx$app$ctx$state$cu === void 0 ? void 0 : _ctx$app$ctx$state$cu.id) || -1
122
82
  };
123
83
  },
124
-
125
84
  $isNotCurrentUser(_, ctx) {
126
85
  var _ctx$app2, _ctx$app2$ctx, _ctx$app2$ctx$state, _ctx$app2$ctx$state$c;
127
-
128
86
  return {
129
87
  [_database().Op.ne]: (ctx === null || ctx === void 0 ? void 0 : (_ctx$app2 = ctx.app) === null || _ctx$app2 === void 0 ? void 0 : (_ctx$app2$ctx = _ctx$app2.ctx) === null || _ctx$app2$ctx === void 0 ? void 0 : (_ctx$app2$ctx$state = _ctx$app2$ctx.state) === null || _ctx$app2$ctx$state === void 0 ? void 0 : (_ctx$app2$ctx$state$c = _ctx$app2$ctx$state.currentUser) === null || _ctx$app2$ctx$state$c === void 0 ? void 0 : _ctx$app2$ctx$state$c.id) || -1
130
88
  };
131
89
  },
132
-
133
90
  $isVar(val, ctx) {
134
91
  var _ctx$app3, _ctx$app3$ctx;
135
-
136
92
  const obj = (0, _jsonTemplates().default)({
137
93
  val: `{{${val}}}`
138
94
  })(JSON.parse(JSON.stringify(ctx === null || ctx === void 0 ? void 0 : (_ctx$app3 = ctx.app) === null || _ctx$app3 === void 0 ? void 0 : (_ctx$app3$ctx = _ctx$app3.ctx) === null || _ctx$app3$ctx === void 0 ? void 0 : _ctx$app3$ctx.state)));
@@ -140,14 +96,11 @@ class UsersPlugin extends _server().Plugin {
140
96
  [_database().Op.eq]: obj.val
141
97
  };
142
98
  }
143
-
144
99
  });
145
-
146
100
  _this.db.on('afterDefineCollection', collection => {
147
101
  let _collection$options = collection.options,
148
- createdBy = _collection$options.createdBy,
149
- updatedBy = _collection$options.updatedBy;
150
-
102
+ createdBy = _collection$options.createdBy,
103
+ updatedBy = _collection$options.updatedBy;
151
104
  if (createdBy === true) {
152
105
  collection.setField('createdById', {
153
106
  type: 'context',
@@ -164,7 +117,6 @@ class UsersPlugin extends _server().Plugin {
164
117
  targetKey: 'id'
165
118
  });
166
119
  }
167
-
168
120
  if (updatedBy === true) {
169
121
  collection.setField('updatedById', {
170
122
  type: 'context',
@@ -181,19 +133,15 @@ class UsersPlugin extends _server().Plugin {
181
133
  });
182
134
  }
183
135
  });
184
-
185
136
  for (var _i = 0, _Object$entries = Object.entries(actions); _i < _Object$entries.length; _i++) {
186
137
  const _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
187
- key = _Object$entries$_i[0],
188
- action = _Object$entries$_i[1];
189
-
138
+ key = _Object$entries$_i[0],
139
+ action = _Object$entries$_i[1];
190
140
  _this.app.resourcer.registerActionHandler(`users:${key}`, action);
191
141
  }
192
-
193
142
  _this.app.resourcer.use(_middlewares.parseToken, {
194
143
  tag: 'parseToken'
195
144
  });
196
-
197
145
  _this.app.acl.addFixedParams('users', 'destroy', () => {
198
146
  return {
199
147
  filter: {
@@ -201,7 +149,6 @@ class UsersPlugin extends _server().Plugin {
201
149
  }
202
150
  };
203
151
  });
204
-
205
152
  _this.app.acl.addFixedParams('collections', 'destroy', () => {
206
153
  return {
207
154
  filter: {
@@ -209,24 +156,19 @@ class UsersPlugin extends _server().Plugin {
209
156
  }
210
157
  };
211
158
  });
212
-
213
159
  const publicActions = ['check', 'signin', 'signup', 'lostpassword', 'resetpassword', 'getUserByResetToken'];
214
160
  const loggedInActions = ['signout', 'updateProfile', 'changePassword'];
215
161
  publicActions.forEach(action => _this.app.acl.allow('users', action));
216
162
  loggedInActions.forEach(action => _this.app.acl.allow('users', action, 'loggedIn'));
217
-
218
163
  _this.app.on('beforeStart', () => _this.initVerification());
219
164
  })();
220
165
  }
221
-
222
166
  load() {
223
167
  var _this2 = this;
224
-
225
168
  return _asyncToGenerator(function* () {
226
169
  yield _this2.db.import({
227
170
  directory: (0, _path().resolve)(__dirname, 'collections')
228
171
  });
229
-
230
172
  _this2.db.addMigrations({
231
173
  namespace: 'users',
232
174
  directory: (0, _path().resolve)(__dirname, 'migrations'),
@@ -234,45 +176,36 @@ class UsersPlugin extends _server().Plugin {
234
176
  plugin: _this2
235
177
  }
236
178
  });
237
-
238
179
  (0, _authenticators.default)(_this2);
239
180
  })();
240
181
  }
241
-
242
182
  getInstallingData(options = {}) {
243
183
  var _options$cliArgs;
244
-
245
184
  const _process$env = process.env,
246
- INIT_ROOT_NICKNAME = _process$env.INIT_ROOT_NICKNAME,
247
- INIT_ROOT_PASSWORD = _process$env.INIT_ROOT_PASSWORD,
248
- INIT_ROOT_EMAIL = _process$env.INIT_ROOT_EMAIL;
249
-
185
+ INIT_ROOT_NICKNAME = _process$env.INIT_ROOT_NICKNAME,
186
+ INIT_ROOT_PASSWORD = _process$env.INIT_ROOT_PASSWORD,
187
+ INIT_ROOT_EMAIL = _process$env.INIT_ROOT_EMAIL;
250
188
  const _ref = options.users || (options === null || options === void 0 ? void 0 : (_options$cliArgs = options.cliArgs) === null || _options$cliArgs === void 0 ? void 0 : _options$cliArgs[0]) || {},
251
- _ref$rootEmail = _ref.rootEmail,
252
- rootEmail = _ref$rootEmail === void 0 ? INIT_ROOT_EMAIL : _ref$rootEmail,
253
- _ref$rootPassword = _ref.rootPassword,
254
- rootPassword = _ref$rootPassword === void 0 ? INIT_ROOT_PASSWORD : _ref$rootPassword,
255
- _ref$rootNickname = _ref.rootNickname,
256
- rootNickname = _ref$rootNickname === void 0 ? INIT_ROOT_NICKNAME || 'Super Admin' : _ref$rootNickname;
257
-
189
+ _ref$rootEmail = _ref.rootEmail,
190
+ rootEmail = _ref$rootEmail === void 0 ? INIT_ROOT_EMAIL : _ref$rootEmail,
191
+ _ref$rootPassword = _ref.rootPassword,
192
+ rootPassword = _ref$rootPassword === void 0 ? INIT_ROOT_PASSWORD : _ref$rootPassword,
193
+ _ref$rootNickname = _ref.rootNickname,
194
+ rootNickname = _ref$rootNickname === void 0 ? INIT_ROOT_NICKNAME || 'Super Admin' : _ref$rootNickname;
258
195
  return {
259
196
  rootEmail,
260
197
  rootPassword,
261
198
  rootNickname
262
199
  };
263
200
  }
264
-
265
201
  install(options) {
266
202
  var _this3 = this;
267
-
268
203
  return _asyncToGenerator(function* () {
269
204
  const _this3$getInstallingD = _this3.getInstallingData(options),
270
- rootNickname = _this3$getInstallingD.rootNickname,
271
- rootPassword = _this3$getInstallingD.rootPassword,
272
- rootEmail = _this3$getInstallingD.rootEmail;
273
-
205
+ rootNickname = _this3$getInstallingD.rootNickname,
206
+ rootPassword = _this3$getInstallingD.rootPassword,
207
+ rootEmail = _this3$getInstallingD.rootEmail;
274
208
  const User = _this3.db.getCollection('users');
275
-
276
209
  if (yield User.repository.findOne({
277
210
  filter: {
278
211
  email: rootEmail
@@ -280,7 +213,6 @@ class UsersPlugin extends _server().Plugin {
280
213
  })) {
281
214
  return;
282
215
  }
283
-
284
216
  const user = yield User.repository.create({
285
217
  values: {
286
218
  email: rootEmail,
@@ -288,69 +220,52 @@ class UsersPlugin extends _server().Plugin {
288
220
  nickname: rootNickname
289
221
  }
290
222
  });
291
-
292
223
  const repo = _this3.db.getRepository('collections');
293
-
294
224
  if (repo) {
295
225
  yield repo.db2cm('users');
296
226
  }
297
227
  })();
298
- } // TODO(module): should move to preset or dynamic configuration panel
299
-
300
-
228
+ }
229
+ // TODO(module): should move to preset or dynamic configuration panel
301
230
  initVerification() {
302
231
  var _this4 = this;
303
-
304
232
  return _asyncToGenerator(function* () {
305
233
  const verificationPlugin = _this4.app.getPlugin('verification');
306
-
307
234
  if (!verificationPlugin) {
308
235
  return;
309
236
  }
310
-
311
237
  const systemSettingsRepo = _this4.db.getRepository('systemSettings');
312
-
313
238
  const settings = yield systemSettingsRepo.findOne();
314
-
315
239
  if (!settings.smsAuthEnabled) {
316
240
  return;
317
241
  }
318
-
319
242
  verificationPlugin.interceptors.register('users:signin', {
320
243
  manual: true,
321
-
322
244
  getReceiver(ctx) {
323
245
  return ctx.action.params.values.phone;
324
246
  },
325
-
326
247
  expiresIn: 120,
327
248
  validate: function () {
328
249
  var _validate = _asyncToGenerator(function* (ctx, phone) {
329
250
  if (!phone) {
330
251
  throw new Error(ctx.t('Not a valid cellphone number, please re-enter'));
331
252
  }
332
-
333
253
  const User = _this4.db.getCollection('users');
334
-
335
254
  const exists = yield User.model.count({
336
255
  where: {
337
256
  phone
338
257
  }
339
258
  });
340
-
341
259
  if (!exists) {
342
260
  throw new Error(ctx.t('The phone number is not registered, please register first', {
343
261
  ns: _2.namespace
344
262
  }));
345
263
  }
346
-
347
264
  return true;
348
265
  });
349
-
350
- function validate(_x, _x2) {
266
+ function validate(_x2, _x3) {
351
267
  return _validate.apply(this, arguments);
352
268
  }
353
-
354
269
  return validate;
355
270
  }()
356
271
  });
@@ -358,7 +273,6 @@ class UsersPlugin extends _server().Plugin {
358
273
  getReceiver(ctx) {
359
274
  return ctx.action.params.values.phone;
360
275
  },
361
-
362
276
  expiresIn: 120,
363
277
  validate: function () {
364
278
  var _validate2 = _asyncToGenerator(function* (ctx, phone) {
@@ -367,32 +281,25 @@ class UsersPlugin extends _server().Plugin {
367
281
  ns: _2.namespace
368
282
  }));
369
283
  }
370
-
371
284
  const User = _this4.db.getCollection('users');
372
-
373
285
  const exists = yield User.model.count({
374
286
  where: {
375
287
  phone
376
288
  }
377
289
  });
378
-
379
290
  if (exists) {
380
291
  throw new Error(ctx.t('The phone number has been registered, please login directly', {
381
292
  ns: _2.namespace
382
293
  }));
383
294
  }
384
-
385
295
  return true;
386
296
  });
387
-
388
- function validate(_x3, _x4) {
297
+ function validate(_x4, _x5) {
389
298
  return _validate2.apply(this, arguments);
390
299
  }
391
-
392
300
  return validate;
393
301
  }()
394
302
  });
395
-
396
303
  _this4.authenticators.register('sms', (ctx, next) => verificationPlugin.intercept(ctx, /*#__PURE__*/_asyncToGenerator(function* () {
397
304
  const values = ctx.action.params.values;
398
305
  const User = ctx.db.getCollection('users');
@@ -401,19 +308,15 @@ class UsersPlugin extends _server().Plugin {
401
308
  phone: values.phone
402
309
  }
403
310
  });
404
-
405
311
  if (!user) {
406
312
  return ctx.throw(404, ctx.t('The phone number is incorrect, please re-enter', {
407
313
  ns: _2.namespace
408
314
  }));
409
315
  }
410
-
411
316
  ctx.state.currentUser = user;
412
317
  return next();
413
318
  })));
414
319
  })();
415
320
  }
416
-
417
321
  }
418
-
419
322
  exports.default = UsersPlugin;
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-users",
3
- "version": "0.9.1-alpha.2",
3
+ "version": "0.9.2-alpha.1",
4
4
  "description": "",
5
5
  "license": "AGPL-3.0",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
8
  "dependencies": {
9
- "@nocobase/actions": "0.9.1-alpha.2",
10
- "@nocobase/database": "0.9.1-alpha.2",
11
- "@nocobase/resourcer": "0.9.1-alpha.2",
12
- "@nocobase/server": "0.9.1-alpha.2",
13
- "@nocobase/utils": "0.9.1-alpha.2",
9
+ "@nocobase/actions": "0.9.2-alpha.1",
10
+ "@nocobase/database": "0.9.2-alpha.1",
11
+ "@nocobase/resourcer": "0.9.2-alpha.1",
12
+ "@nocobase/server": "0.9.2-alpha.1",
13
+ "@nocobase/utils": "0.9.2-alpha.1",
14
14
  "json-templates": "^4.2.0",
15
15
  "jsonwebtoken": "^8.5.1"
16
16
  },
17
17
  "devDependencies": {
18
- "@nocobase/test": "0.9.1-alpha.2",
18
+ "@nocobase/test": "0.9.2-alpha.1",
19
19
  "@types/jsonwebtoken": "^8.5.8"
20
20
  },
21
- "gitHead": "d588a68eca4feed4642a4cb317301011266fe5c9"
21
+ "gitHead": "a4f103eb0144f07205aff7b2a6be8ea6aa1330df"
22
22
  }