@steedos/accounts 3.0.4-beta.2 → 3.0.4-beta.4

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.
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
4
  var lodash_1 = require("lodash");
5
- var two_factor_1 = require("@accounts/two-factor");
6
5
  var server_1 = require("../server");
7
6
  var utils_1 = require("./utils");
8
7
  var errors_1 = require("./errors");
@@ -10,8 +9,8 @@ var objectql_1 = require("@steedos/objectql");
10
9
  var EFFECTIVE_TIME = 10;
11
10
  var CODE_LENGTH = 6;
12
11
  var MAX_FAILURE_COUNT = 10;
13
- var _ = require('underscore');
14
- var moment = require('moment');
12
+ var _ = require("underscore");
13
+ var moment = require("moment");
15
14
  var defaultOptions = {
16
15
  verifyEmailTokenExpiration: 259200000,
17
16
  passwordResetTokenExpiration: 259200000,
@@ -36,8 +35,10 @@ var defaultOptions = {
36
35
  };
37
36
  var getPathFragmentPrefix = function () {
38
37
  var config = (0, objectql_1.getSteedosConfig)().email;
39
- var defaultPathPrefix = 'accounts/a/#';
40
- var pathFragmentPrefix = config && config.pathFragmentPrefix ? config.pathFragmentPrefix : defaultPathPrefix;
38
+ var defaultPathPrefix = "accounts/a/#";
39
+ var pathFragmentPrefix = config && config.pathFragmentPrefix
40
+ ? config.pathFragmentPrefix
41
+ : defaultPathPrefix;
41
42
  if (pathFragmentPrefix && !/\/$/.test(pathFragmentPrefix)) {
42
43
  pathFragmentPrefix += "/";
43
44
  }
@@ -46,9 +47,8 @@ var getPathFragmentPrefix = function () {
46
47
  var AccountsPassword = (function () {
47
48
  function AccountsPassword(options) {
48
49
  if (options === void 0) { options = {}; }
49
- this.serviceName = 'password';
50
+ this.serviceName = "password";
50
51
  this.options = tslib_1.__assign(tslib_1.__assign({}, defaultOptions), options);
51
- this.twoFactor = new two_factor_1.TwoFactor(options.twoFactor);
52
52
  }
53
53
  AccountsPassword.prototype.setStore = function (store) {
54
54
  this.db = store;
@@ -60,7 +60,7 @@ var AccountsPassword = (function () {
60
60
  switch (_a.label) {
61
61
  case 0:
62
62
  user = params.user, password = params.password, token = params.token, locale = params.locale;
63
- passwordUnencrypted = params['password-unencrypted'];
63
+ passwordUnencrypted = params["password-unencrypted"];
64
64
  isHashPassword = true;
65
65
  if (passwordUnencrypted && !password) {
66
66
  password = passwordUnencrypted;
@@ -129,7 +129,8 @@ var AccountsPassword = (function () {
129
129
  }
130
130
  verificationTokens = (0, utils_1.getUserVerificationTokens)(user);
131
131
  tokenRecord = (0, lodash_1.find)(verificationTokens, function (t) { return t.token === token; });
132
- if (!tokenRecord || this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)) {
132
+ if (!tokenRecord ||
133
+ this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)) {
133
134
  throw new Error(this.options.errors.verifyEmailLinkExpired);
134
135
  }
135
136
  emailRecord = (0, lodash_1.find)(user.emails, function (e) { return e.address === tokenRecord.address; });
@@ -165,7 +166,7 @@ var AccountsPassword = (function () {
165
166
  resetTokens = (0, utils_1.getUserResetTokens)(user);
166
167
  resetTokenRecord = (0, lodash_1.find)(resetTokens, function (t) { return t.token === token; });
167
168
  if (!resetTokenRecord ||
168
- this.isTokenExpired(resetTokenRecord, resetTokenRecord.reason === 'enroll'
169
+ this.isTokenExpired(resetTokenRecord, resetTokenRecord.reason === "enroll"
169
170
  ? this.options.passwordEnrollTokenExpiration
170
171
  : this.options.passwordResetTokenExpiration)) {
171
172
  throw new Error(this.options.errors.resetPasswordLinkExpired);
@@ -181,7 +182,7 @@ var AccountsPassword = (function () {
181
182
  case 3:
182
183
  _a.sent();
183
184
  this.server.getHooks().emit(server_1.ServerHooks.ResetPasswordSuccess, user);
184
- if (!(resetTokenRecord.reason === 'enroll')) return [3, 5];
185
+ if (!(resetTokenRecord.reason === "enroll")) return [3, 5];
185
186
  return [4, this.db.verifyEmail(user.id, resetTokenRecord.address)];
186
187
  case 4:
187
188
  _a.sent();
@@ -196,7 +197,7 @@ var AccountsPassword = (function () {
196
197
  if (!this.options.notifyUserAfterPasswordChanged) return [3, 9];
197
198
  address = user.emails && user.emails[0].address;
198
199
  if (!address) return [3, 9];
199
- passwordChangedMail = this.server.prepareMail(address, '', this.server.sanitizeUser(user), '', this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
200
+ passwordChangedMail = this.server.prepareMail(address, "", this.server.sanitizeUser(user), "", this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
200
201
  return [4, this.server.options.sendMail(passwordChangedMail)];
201
202
  case 8:
202
203
  _a.sent();
@@ -322,7 +323,7 @@ var AccountsPassword = (function () {
322
323
  case 4:
323
324
  verify = _a.sent();
324
325
  if (verify) {
325
- throw new Error('最近 ' + userProfile.password_history + ' 次密码不能相同');
326
+ throw new Error("最近 " + userProfile.password_history + " 次密码不能相同");
326
327
  }
327
328
  _a.label = 5;
328
329
  case 5:
@@ -344,7 +345,7 @@ var AccountsPassword = (function () {
344
345
  if (!this.options.notifyUserAfterPasswordChanged) return [3, 12];
345
346
  address = user.emails && user.emails[0].address;
346
347
  if (!address) return [3, 12];
347
- passwordChangedMail = this.server.prepareMail(address, '', this.server.sanitizeUser(user), '', this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
348
+ passwordChangedMail = this.server.prepareMail(address, "", this.server.sanitizeUser(user), "", this.server.options.emailTemplates.passwordChanged, this.server.options.emailTemplates.from);
348
349
  return [4, this.server.options.sendMail(passwordChangedMail)];
349
350
  case 11:
350
351
  _a.sent();
@@ -379,7 +380,7 @@ var AccountsPassword = (function () {
379
380
  return [4, this.db.addEmailVerificationToken(user.id, address, token, code)];
380
381
  case 2:
381
382
  _a.sent();
382
- resetPasswordMail = this.server.prepareMail(address, code, this.server.sanitizeUser(user), getPathFragmentPrefix() + 'verify-email', this.server.options.emailTemplates.verifyEmail, this.server.options.emailTemplates.from);
383
+ resetPasswordMail = this.server.prepareMail(address, code, this.server.sanitizeUser(user), getPathFragmentPrefix() + "verify-email", this.server.options.emailTemplates.verifyEmail, this.server.options.emailTemplates.from);
383
384
  return [4, this.server.options.sendMail(resetPasswordMail)];
384
385
  case 3:
385
386
  _a.sent();
@@ -407,10 +408,10 @@ var AccountsPassword = (function () {
407
408
  throw new Error(this.options.errors.userNotFound);
408
409
  }
409
410
  token = (0, server_1.generateRandomToken)();
410
- return [4, this.db.addResetPasswordToken(user.id, address, token, 'reset')];
411
+ return [4, this.db.addResetPasswordToken(user.id, address, token, "reset")];
411
412
  case 2:
412
413
  _a.sent();
413
- resetPasswordMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + 'reset-password', this.server.options.emailTemplates.resetPassword, this.server.options.emailTemplates.from);
414
+ resetPasswordMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + "reset-password", this.server.options.emailTemplates.resetPassword, this.server.options.emailTemplates.from);
414
415
  return [4, this.server.options.sendMail(resetPasswordMail)];
415
416
  case 3:
416
417
  _a.sent();
@@ -435,10 +436,10 @@ var AccountsPassword = (function () {
435
436
  throw new Error(this.options.errors.userNotFound);
436
437
  }
437
438
  token = (0, server_1.generateRandomToken)();
438
- return [4, this.db.addResetPasswordToken(user.id, address, token, 'enroll')];
439
+ return [4, this.db.addResetPasswordToken(user.id, address, token, "enroll")];
439
440
  case 2:
440
441
  _a.sent();
441
- enrollmentMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + 'enroll-account', this.server.options.emailTemplates.enrollAccount, this.server.options.emailTemplates.from);
442
+ enrollmentMail = this.server.prepareMail(address, token, this.server.sanitizeUser(user), getPathFragmentPrefix() + "enroll-account", this.server.options.emailTemplates.enrollAccount, this.server.options.emailTemplates.from);
442
443
  return [4, this.server.options.sendMail(enrollmentMail)];
443
444
  case 3:
444
445
  _a.sent();
@@ -530,7 +531,9 @@ var AccountsPassword = (function () {
530
531
  return tslib_1.__generator(this, function (_a) {
531
532
  switch (_a.label) {
532
533
  case 0:
533
- if (this.options.sendVerificationEmailAfterSignup && user.email && !user.email_verified)
534
+ if (this.options.sendVerificationEmailAfterSignup &&
535
+ user.email &&
536
+ !user.email_verified)
534
537
  this.sendVerificationEmail(user.email);
535
538
  return [4, this.db.findUserById(userId_1)];
536
539
  case 1:
@@ -571,7 +574,7 @@ var AccountsPassword = (function () {
571
574
  return tslib_1.__generator(this, function (_b) {
572
575
  switch (_b.label) {
573
576
  case 0:
574
- _a = typeof user == 'string'
577
+ _a = typeof user == "string"
575
578
  ? this.toMobileAndEmail({ user: user })
576
579
  : this.toMobileAndEmail(tslib_1.__assign({}, user)), username = _a.username, email = _a.email, id = _a.id, mobile = _a.mobile;
577
580
  foundUser = null;
@@ -610,7 +613,7 @@ var AccountsPassword = (function () {
610
613
  return tslib_1.__generator(this, function (_b) {
611
614
  switch (_b.label) {
612
615
  case 0:
613
- _a = typeof user == 'string'
616
+ _a = typeof user == "string"
614
617
  ? this.toMobileAndEmail({ user: user })
615
618
  : this.toMobileAndEmail(tslib_1.__assign({}, user)), username = _a.username, email = _a.email, id = _a.id, mobile = _a.mobile;
616
619
  foundUser = null;
@@ -655,11 +658,11 @@ var AccountsPassword = (function () {
655
658
  login_failed_lockout_time = foundUser.login_failed_lockout_time;
656
659
  if (locked) {
657
660
  if (!login_failed_lockout_time) {
658
- throw new Error('账户已锁定,请联系管理员');
661
+ throw new Error("账户已锁定,请联系管理员");
659
662
  }
660
663
  else {
661
664
  if (moment(login_failed_lockout_time).isAfter(new Date())) {
662
- throw new Error('账户已锁定,请联系管理员');
665
+ throw new Error("账户已锁定,请联系管理员");
663
666
  }
664
667
  }
665
668
  }
@@ -681,12 +684,17 @@ var AccountsPassword = (function () {
681
684
  case 11:
682
685
  userProfile = _b.sent();
683
686
  login_failed_lockout_time = foundUser.login_failed_lockout_time;
684
- if (!(userProfile.lockout_interval != 0 && moment(login_failed_lockout_time).isBefore(new Date()))) return [3, 13];
685
- return [4, this.db.updateUser(foundUser.id, { $set: { login_failed_number: 1 } })];
687
+ if (!(userProfile.lockout_interval != 0 &&
688
+ moment(login_failed_lockout_time).isBefore(new Date()))) return [3, 13];
689
+ return [4, this.db.updateUser(foundUser.id, {
690
+ $set: { login_failed_number: 1 },
691
+ })];
686
692
  case 12:
687
693
  _b.sent();
688
694
  return [3, 15];
689
- case 13: return [4, this.db.updateUser(foundUser.id, { $inc: { login_failed_number: 1 } })];
695
+ case 13: return [4, this.db.updateUser(foundUser.id, {
696
+ $inc: { login_failed_number: 1 },
697
+ })];
690
698
  case 14:
691
699
  _b.sent();
692
700
  _b.label = 15;
@@ -700,16 +708,24 @@ var AccountsPassword = (function () {
700
708
  login_failed_lockout_time_1 = null;
701
709
  }
702
710
  else {
703
- login_failed_lockout_time_1 = new Date(moment().add(userProfile.lockout_interval, 'm'));
711
+ login_failed_lockout_time_1 = new Date(moment().add(userProfile.lockout_interval, "m"));
704
712
  }
705
- return [4, this.db.updateUser(foundUser.id, { $set: { lockout: true, login_failed_lockout_time: login_failed_lockout_time_1 } })];
713
+ return [4, this.db.updateUser(foundUser.id, {
714
+ $set: {
715
+ lockout: true,
716
+ login_failed_lockout_time: login_failed_lockout_time_1,
717
+ },
718
+ })];
706
719
  case 17:
707
720
  _b.sent();
708
721
  _b.label = 18;
709
722
  case 18: throw new Error(this.server.options.ambiguousErrorMessages
710
723
  ? this.options.errors.invalidCredentials
711
724
  : this.options.errors.incorrectPassword);
712
- case 19: return [4, this.db.updateUser(foundUser.id, { $set: { lockout: false, login_failed_number: 0 }, $unset: { login_failed_lockout_time: 1 } })];
725
+ case 19: return [4, this.db.updateUser(foundUser.id, {
726
+ $set: { lockout: false, login_failed_number: 0 },
727
+ $unset: { login_failed_lockout_time: 1 },
728
+ })];
713
729
  case 20:
714
730
  _b.sent();
715
731
  _b.label = 21;
@@ -745,7 +761,9 @@ var AccountsPassword = (function () {
745
761
  var hashAlgorithm, hashedPassword;
746
762
  return tslib_1.__generator(this, function (_a) {
747
763
  hashAlgorithm = this.options.passwordHashAlgorithm;
748
- hashedPassword = hashAlgorithm ? (0, utils_1.hashPassword)(password, hashAlgorithm) : password;
764
+ hashedPassword = hashAlgorithm
765
+ ? (0, utils_1.hashPassword)(password, hashAlgorithm)
766
+ : password;
749
767
  return [2, (0, utils_1.bcryptPassword)(hashedPassword)];
750
768
  });
751
769
  });
@@ -770,22 +788,28 @@ var AccountsPassword = (function () {
770
788
  case 0:
771
789
  code = (0, server_1.generateRandomCode)();
772
790
  if (!user.email) return [3, 3];
773
- return [4, this.db.addVerificationCode(user, code, { MAX_FAILURE_COUNT: MAX_FAILURE_COUNT, EFFECTIVE_TIME: EFFECTIVE_TIME })];
791
+ return [4, this.db.addVerificationCode(user, code, {
792
+ MAX_FAILURE_COUNT: MAX_FAILURE_COUNT,
793
+ EFFECTIVE_TIME: EFFECTIVE_TIME,
794
+ })];
774
795
  case 1:
775
796
  result = _a.sent();
776
- verificationCodeMail = this.server.prepareMail(user.email, result.code, null, getPathFragmentPrefix() + 'verify-email', this.server.options.emailTemplates.verificationCode, this.server.options.emailTemplates.from);
797
+ verificationCodeMail = this.server.prepareMail(user.email, result.code, null, getPathFragmentPrefix() + "verify-email", this.server.options.emailTemplates.verificationCode, this.server.options.emailTemplates.from);
777
798
  return [4, this.server.options.sendMail(verificationCodeMail)];
778
799
  case 2:
779
800
  _a.sent();
780
801
  return [2, result.owner];
781
802
  case 3:
782
803
  if (!user.mobile) return [3, 6];
783
- return [4, this.db.addVerificationCode(user, code, { MAX_FAILURE_COUNT: MAX_FAILURE_COUNT, EFFECTIVE_TIME: EFFECTIVE_TIME })];
804
+ return [4, this.db.addVerificationCode(user, code, {
805
+ MAX_FAILURE_COUNT: MAX_FAILURE_COUNT,
806
+ EFFECTIVE_TIME: EFFECTIVE_TIME,
807
+ })];
784
808
  case 4:
785
809
  result = _a.sent();
786
810
  sms = {
787
811
  mobile: user.mobile,
788
- message: "\u60A8\u7684\u9A8C\u8BC1\u7801\u4E3A\uFF1A".concat(result.code, "\uFF0C\u8BE5\u9A8C\u8BC1\u7801").concat(EFFECTIVE_TIME, "\u5206\u949F\u5185\u6709\u6548\uFF0C\u8BF7\u52FF\u6CC4\u6F0F\u4E8E\u4ED6\u4EBA\uFF01")
812
+ message: "\u60A8\u7684\u9A8C\u8BC1\u7801\u4E3A\uFF1A".concat(result.code, "\uFF0C\u8BE5\u9A8C\u8BC1\u7801").concat(EFFECTIVE_TIME, "\u5206\u949F\u5185\u6709\u6548\uFF0C\u8BF7\u52FF\u6CC4\u6F0F\u4E8E\u4ED6\u4EBA\uFF01"),
789
813
  };
790
814
  return [4, this.server.options.sendSMS(sms)];
791
815
  case 5:
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-password.js","sourceRoot":"","sources":["../../src/password/accounts-password.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts-password.js","sourceRoot":"","sources":["../../src/password/accounts-password.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/accounts",
3
- "version": "3.0.4-beta.2",
3
+ "version": "3.0.4-beta.4",
4
4
  "main": "lib/index.js",
5
5
  "files": [
6
6
  "/package.json",
@@ -23,14 +23,11 @@
23
23
  "pubNext": "npm publish --tag next --registry https://registry.npmjs.org"
24
24
  },
25
25
  "dependencies": {
26
- "@accounts/mongo": "^0.19.0",
27
- "@accounts/server": "^0.19.0",
28
- "@accounts/two-factor": "^0.20.1",
29
26
  "@accounts/types": "0.20.1",
30
27
  "@babel/runtime": "^7.12.18",
31
- "@steedos/auth": "3.0.4-beta.2",
32
- "@steedos/objectql": "3.0.4-beta.2",
33
- "@steedos/utils": "3.0.4-beta.2",
28
+ "@steedos/auth": "3.0.4-beta.4",
29
+ "@steedos/objectql": "3.0.4-beta.4",
30
+ "@steedos/utils": "3.0.4-beta.4",
34
31
  "app-root-path": "^2.2.1",
35
32
  "bcryptjs": "^3.0.3",
36
33
  "body-parser": "^2.2.1",
@@ -44,20 +41,20 @@
44
41
  "express": "^5.1.0",
45
42
  "ismobilejs": "^1.1.1",
46
43
  "js-yaml": "^3.14.2",
47
- "jsonwebtoken": "^9.0.1",
44
+ "jsonwebtoken": "^9.0.3",
48
45
  "lodash": "^4.17.21",
49
46
  "mem": "^5.1.1",
50
47
  "mongodb": "^3.7.3",
51
48
  "nodemailer": "^7.0.11",
52
49
  "pug": "^3.0.2",
53
- "request-ip": "^2.2.0",
50
+ "request-ip": "^3.3.0",
54
51
  "string-random": "^0.1.3",
55
52
  "tslib": "^2.4.0",
56
53
  "url-join": "^4.0.1",
57
- "validator": "^13.6.0"
54
+ "validator": "^13.15.23"
58
55
  },
59
56
  "publishConfig": {
60
57
  "access": "public"
61
58
  },
62
- "gitHead": "4e3a235078fdb5a531de35dbc45c549c56c61715"
59
+ "gitHead": "7d70c1a7edd59204b3413bbcfd462a17e6c34faf"
63
60
  }
@@ -1,4 +1,13 @@
1
- import { trim, isEmpty, pick, isString, isPlainObject, find, includes, defer } from 'lodash';
1
+ import {
2
+ trim,
3
+ isEmpty,
4
+ pick,
5
+ isString,
6
+ isPlainObject,
7
+ find,
8
+ includes,
9
+ defer,
10
+ } from "lodash";
2
11
  import {
3
12
  User,
4
13
  LoginUserIdentity,
@@ -9,9 +18,13 @@ import {
9
18
  HashAlgorithm,
10
19
  ConnectionInformations,
11
20
  LoginResult,
12
- } from '../types';
13
- import { TwoFactor, AccountsTwoFactorOptions, getUserTwoFactorService } from '@accounts/two-factor';
14
- import { AccountsServer, ServerHooks, generateRandomToken, generateRandomCode } from '../server';
21
+ } from "../types";
22
+ import {
23
+ AccountsServer,
24
+ ServerHooks,
25
+ generateRandomToken,
26
+ generateRandomCode,
27
+ } from "../server";
15
28
  import {
16
29
  getUserResetTokens,
17
30
  getUserVerificationTokens,
@@ -19,20 +32,24 @@ import {
19
32
  bcryptPassword,
20
33
  verifyPassword,
21
34
  isEmail,
22
- } from './utils';
23
- import { PasswordCreateUserType, PasswordLoginType, PasswordType, ErrorMessages } from './types';
24
- import { errors } from './errors';
25
- import { getSteedosConfig, getObject } from '@steedos/objectql';
35
+ } from "./utils";
36
+ import {
37
+ PasswordCreateUserType,
38
+ PasswordLoginType,
39
+ PasswordType,
40
+ ErrorMessages,
41
+ } from "./types";
42
+ import { errors } from "./errors";
43
+ import { getSteedosConfig, getObject } from "@steedos/objectql";
26
44
  const EFFECTIVE_TIME = 10; //10分钟
27
45
  const CODE_LENGTH = 6;
28
46
  const MAX_FAILURE_COUNT = 10;
29
- const _ = require('underscore');
30
- const moment = require('moment');
47
+ const _ = require("underscore");
48
+ const moment = require("moment");
31
49
  export interface AccountsPasswordOptions {
32
50
  /**
33
51
  * Two factor options passed down to the @accounts/two-factor service.
34
52
  */
35
- twoFactor?: AccountsTwoFactorOptions;
36
53
  passwordHashAlgorithm?: HashAlgorithm;
37
54
  /**
38
55
  * The number of milliseconds from when a link to verify the user email is sent until token expires and user can't verify his email with the link anymore.
@@ -84,7 +101,7 @@ export interface AccountsPasswordOptions {
84
101
  * By default we only allow `username`, `email` and `password` fields.
85
102
  */
86
103
  validateNewUser?: (
87
- user: PasswordCreateUserType
104
+ user: PasswordCreateUserType,
88
105
  ) => Promise<PasswordCreateUserType> | PasswordCreateUserType;
89
106
  /**
90
107
  * Function that check if the email is a valid email.
@@ -122,36 +139,38 @@ const defaultOptions = {
122
139
  },
123
140
  validateUsername(username?: string): boolean {
124
141
  const usernameRegex = /^[a-zA-Z][a-zA-Z0-9]*$/;
125
- const isValid = username && !isEmpty(trim(username)) && usernameRegex.test(username);
142
+ const isValid =
143
+ username && !isEmpty(trim(username)) && usernameRegex.test(username);
126
144
  return Boolean(isValid);
127
145
  },
128
146
  errors,
129
147
  sendVerificationEmailAfterSignup: false,
130
148
  };
131
149
 
132
- const getPathFragmentPrefix = function(){
150
+ const getPathFragmentPrefix = function () {
133
151
  const config = getSteedosConfig().email;
134
- const defaultPathPrefix = 'accounts/a/#';
135
- let pathFragmentPrefix = config && config.pathFragmentPrefix ? config.pathFragmentPrefix : defaultPathPrefix;
136
- if(pathFragmentPrefix && !/\/$/.test(pathFragmentPrefix)){
152
+ const defaultPathPrefix = "accounts/a/#";
153
+ let pathFragmentPrefix =
154
+ config && config.pathFragmentPrefix
155
+ ? config.pathFragmentPrefix
156
+ : defaultPathPrefix;
157
+ if (pathFragmentPrefix && !/\/$/.test(pathFragmentPrefix)) {
137
158
  pathFragmentPrefix += "/";
138
159
  }
139
160
  return pathFragmentPrefix;
140
- }
161
+ };
141
162
 
142
163
  // interface MyDatabaseInterface extends DatabaseInterface{
143
164
  // updateUser?(userId: string, options: any): Promise<void>;
144
165
  // }
145
166
  export default class AccountsPassword implements AuthenticationService {
146
- public serviceName = 'password';
167
+ public serviceName = "password";
147
168
  public server!: AccountsServer;
148
- public twoFactor: TwoFactor;
149
169
  private options: AccountsPasswordOptions & typeof defaultOptions;
150
170
  private db!: DatabaseInterface;
151
171
 
152
172
  constructor(options: AccountsPasswordOptions = {}) {
153
173
  this.options = { ...defaultOptions, ...options };
154
- this.twoFactor = new TwoFactor(options.twoFactor);
155
174
  }
156
175
 
157
176
  public setStore(store: DatabaseInterface) {
@@ -162,14 +181,14 @@ export default class AccountsPassword implements AuthenticationService {
162
181
  public async authenticate(params: any): Promise<User> {
163
182
  let { user, password, token, locale } = params;
164
183
 
165
- const passwordUnencrypted = params['password-unencrypted'];
184
+ const passwordUnencrypted = params["password-unencrypted"];
166
185
  let isHashPassword = true;
167
- if(passwordUnencrypted && !password ){
186
+ if (passwordUnencrypted && !password) {
168
187
  password = passwordUnencrypted;
169
188
  isHashPassword = false;
170
189
  }
171
190
 
172
- if(user && token){
191
+ if (user && token) {
173
192
  return await this.codeAuthenticator(user, token, locale);
174
193
  }
175
194
 
@@ -181,7 +200,11 @@ export default class AccountsPassword implements AuthenticationService {
181
200
  throw new Error(this.options.errors.matchFailed);
182
201
  }
183
202
 
184
- const foundUser = await this.passwordAuthenticator(user, password, isHashPassword);
203
+ const foundUser = await this.passwordAuthenticator(
204
+ user,
205
+ password,
206
+ isHashPassword,
207
+ );
185
208
 
186
209
  // // If user activated two factor authentication try with the code
187
210
  // if (getUserTwoFactorService(foundUser)) {
@@ -232,7 +255,11 @@ export default class AccountsPassword implements AuthenticationService {
232
255
  * Defaults to false.
233
256
  * @returns {Promise<void>} - Return a Promise.
234
257
  */
235
- public addEmail(userId: string, newEmail: string, verified: boolean): Promise<void> {
258
+ public addEmail(
259
+ userId: string,
260
+ newEmail: string,
261
+ verified: boolean,
262
+ ): Promise<void> {
236
263
  if (!this.options.validateEmail(newEmail)) {
237
264
  throw new Error(this.options.errors.invalidEmail);
238
265
  }
@@ -266,12 +293,21 @@ export default class AccountsPassword implements AuthenticationService {
266
293
  }
267
294
 
268
295
  const verificationTokens = getUserVerificationTokens(user);
269
- const tokenRecord = find(verificationTokens, (t: TokenRecord) => t.token === token);
270
- if (!tokenRecord || this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)) {
296
+ const tokenRecord = find(
297
+ verificationTokens,
298
+ (t: TokenRecord) => t.token === token,
299
+ );
300
+ if (
301
+ !tokenRecord ||
302
+ this.isTokenExpired(tokenRecord, this.options.verifyEmailTokenExpiration)
303
+ ) {
271
304
  throw new Error(this.options.errors.verifyEmailLinkExpired);
272
305
  }
273
306
 
274
- const emailRecord = find(user.emails, (e: EmailRecord) => e.address === tokenRecord.address);
307
+ const emailRecord = find(
308
+ user.emails,
309
+ (e: EmailRecord) => e.address === tokenRecord.address,
310
+ );
275
311
  if (!emailRecord) {
276
312
  throw new Error(this.options.errors.verifyEmailLinkUnknownAddress);
277
313
  }
@@ -287,7 +323,7 @@ export default class AccountsPassword implements AuthenticationService {
287
323
  public async resetPassword(
288
324
  token: string,
289
325
  newPassword: PasswordType,
290
- infos: ConnectionInformations
326
+ infos: ConnectionInformations,
291
327
  ): Promise<LoginResult | null> {
292
328
  if (!token || !isString(token)) {
293
329
  throw new Error(this.options.errors.invalidToken);
@@ -302,15 +338,15 @@ export default class AccountsPassword implements AuthenticationService {
302
338
  }
303
339
 
304
340
  const resetTokens = getUserResetTokens(user);
305
- const resetTokenRecord = find(resetTokens, t => t.token === token);
341
+ const resetTokenRecord = find(resetTokens, (t) => t.token === token);
306
342
 
307
343
  if (
308
344
  !resetTokenRecord ||
309
345
  this.isTokenExpired(
310
346
  resetTokenRecord,
311
- resetTokenRecord.reason === 'enroll'
347
+ resetTokenRecord.reason === "enroll"
312
348
  ? this.options.passwordEnrollTokenExpiration
313
- : this.options.passwordResetTokenExpiration
349
+ : this.options.passwordResetTokenExpiration,
314
350
  )
315
351
  ) {
316
352
  throw new Error(this.options.errors.resetPasswordLinkExpired);
@@ -320,7 +356,7 @@ export default class AccountsPassword implements AuthenticationService {
320
356
  if (
321
357
  !includes(
322
358
  emails.map((email: EmailRecord) => email.address),
323
- resetTokenRecord.address
359
+ resetTokenRecord.address,
324
360
  )
325
361
  ) {
326
362
  throw new Error(this.options.errors.resetPasswordLinkUnknownAddress);
@@ -328,12 +364,17 @@ export default class AccountsPassword implements AuthenticationService {
328
364
 
329
365
  const password = await this.hashAndBcryptPassword(newPassword);
330
366
  // Change the user password and remove the old token
331
- await this.db.setResetPassword(user.id, resetTokenRecord.address, password, token);
367
+ await this.db.setResetPassword(
368
+ user.id,
369
+ resetTokenRecord.address,
370
+ password,
371
+ token,
372
+ );
332
373
 
333
374
  this.server.getHooks().emit(ServerHooks.ResetPasswordSuccess, user);
334
375
 
335
376
  // If user clicked on an enrollment link we can verify his email
336
- if (resetTokenRecord.reason === 'enroll') {
377
+ if (resetTokenRecord.reason === "enroll") {
337
378
  await this.db.verifyEmail(user.id, resetTokenRecord.address);
338
379
  }
339
380
 
@@ -347,11 +388,11 @@ export default class AccountsPassword implements AuthenticationService {
347
388
  if (address) {
348
389
  const passwordChangedMail = this.server.prepareMail(
349
390
  address,
350
- '',
391
+ "",
351
392
  this.server.sanitizeUser(user),
352
- '',
393
+ "",
353
394
  this.server.options.emailTemplates.passwordChanged,
354
- this.server.options.emailTemplates.from
395
+ this.server.options.emailTemplates.from,
355
396
  );
356
397
  await this.server.options.sendMail(passwordChangedMail);
357
398
  }
@@ -363,7 +404,7 @@ export default class AccountsPassword implements AuthenticationService {
363
404
  return null;
364
405
  }
365
406
 
366
- public async getUserProfile(userId){
407
+ public async getUserProfile(userId) {
367
408
  const spaceId = getSteedosConfig().tenant._id;
368
409
  let password_history = 3;
369
410
  let max_login_attempts = 10;
@@ -445,24 +486,32 @@ export default class AccountsPassword implements AuthenticationService {
445
486
  public async changePassword(
446
487
  userId: string,
447
488
  oldPassword: string,
448
- newPassword: string
489
+ newPassword: string,
449
490
  ): Promise<void> {
450
491
  if (!this.options.validatePassword(newPassword)) {
451
492
  throw new Error(this.options.errors.invalidPassword);
452
493
  }
453
494
 
454
- const user: any = await this.passwordAuthenticator({ id: userId }, oldPassword);
495
+ const user: any = await this.passwordAuthenticator(
496
+ { id: userId },
497
+ oldPassword,
498
+ );
455
499
  const saas = getSteedosConfig().tenant.saas;
456
- if(!saas){
457
- const passwordHistory = user.services.password_history || []
500
+ if (!saas) {
501
+ const passwordHistory = user.services.password_history || [];
458
502
 
459
503
  const userProfile = await this.getUserProfile(userId);
460
-
461
- const validPasswordHistory = _.last(passwordHistory, userProfile.password_history);
504
+
505
+ const validPasswordHistory = _.last(
506
+ passwordHistory,
507
+ userProfile.password_history,
508
+ );
462
509
  for (const item of validPasswordHistory) {
463
- var verify = await verifyPassword(newPassword, item)
464
- if(verify){
465
- throw new Error('最近 ' + userProfile.password_history + ' 次密码不能相同');
510
+ var verify = await verifyPassword(newPassword, item);
511
+ if (verify) {
512
+ throw new Error(
513
+ "最近 " + userProfile.password_history + " 次密码不能相同",
514
+ );
466
515
  }
467
516
  }
468
517
  }
@@ -481,11 +530,11 @@ export default class AccountsPassword implements AuthenticationService {
481
530
  if (address) {
482
531
  const passwordChangedMail = this.server.prepareMail(
483
532
  address,
484
- '',
533
+ "",
485
534
  this.server.sanitizeUser(user),
486
- '',
535
+ "",
487
536
  this.server.options.emailTemplates.passwordChanged,
488
- this.server.options.emailTemplates.from
537
+ this.server.options.emailTemplates.from,
489
538
  );
490
539
  await this.server.options.sendMail(passwordChangedMail);
491
540
  }
@@ -515,8 +564,7 @@ export default class AccountsPassword implements AuthenticationService {
515
564
  }
516
565
 
517
566
  //Do not send an email if the address is already verified
518
- if (user.email_verified)
519
- return
567
+ if (user.email_verified) return;
520
568
 
521
569
  const code = generateRandomCode();
522
570
  const token = generateRandomToken();
@@ -526,9 +574,9 @@ export default class AccountsPassword implements AuthenticationService {
526
574
  address,
527
575
  code,
528
576
  this.server.sanitizeUser(user),
529
- getPathFragmentPrefix() + 'verify-email',
577
+ getPathFragmentPrefix() + "verify-email",
530
578
  this.server.options.emailTemplates.verifyEmail,
531
- this.server.options.emailTemplates.from
579
+ this.server.options.emailTemplates.from,
532
580
  );
533
581
 
534
582
  await this.server.options.sendMail(resetPasswordMail);
@@ -555,15 +603,15 @@ export default class AccountsPassword implements AuthenticationService {
555
603
  throw new Error(this.options.errors.userNotFound);
556
604
  }
557
605
  const token = generateRandomToken();
558
- await this.db.addResetPasswordToken(user.id, address, token, 'reset');
606
+ await this.db.addResetPasswordToken(user.id, address, token, "reset");
559
607
 
560
608
  const resetPasswordMail = this.server.prepareMail(
561
609
  address,
562
610
  token,
563
611
  this.server.sanitizeUser(user),
564
- getPathFragmentPrefix() + 'reset-password',
612
+ getPathFragmentPrefix() + "reset-password",
565
613
  this.server.options.emailTemplates.resetPassword,
566
- this.server.options.emailTemplates.from
614
+ this.server.options.emailTemplates.from,
567
615
  );
568
616
 
569
617
  await this.server.options.sendMail(resetPasswordMail);
@@ -587,15 +635,15 @@ export default class AccountsPassword implements AuthenticationService {
587
635
  throw new Error(this.options.errors.userNotFound);
588
636
  }
589
637
  const token = generateRandomToken();
590
- await this.db.addResetPasswordToken(user.id, address, token, 'enroll');
638
+ await this.db.addResetPasswordToken(user.id, address, token, "enroll");
591
639
 
592
640
  const enrollmentMail = this.server.prepareMail(
593
641
  address,
594
642
  token,
595
643
  this.server.sanitizeUser(user),
596
- getPathFragmentPrefix() + 'enroll-account',
644
+ getPathFragmentPrefix() + "enroll-account",
597
645
  this.server.options.emailTemplates.enrollAccount,
598
- this.server.options.emailTemplates.from
646
+ this.server.options.emailTemplates.from,
599
647
  );
600
648
 
601
649
  await this.server.options.sendMail(enrollmentMail);
@@ -631,7 +679,7 @@ export default class AccountsPassword implements AuthenticationService {
631
679
  throw new Error(this.options.errors.emailAlreadyExists);
632
680
  }
633
681
 
634
- if(!user.password && !user.verifyCode){
682
+ if (!user.password && !user.verifyCode) {
635
683
  throw new Error(this.options.errors.invalidVerifyParam);
636
684
  }
637
685
 
@@ -640,7 +688,7 @@ export default class AccountsPassword implements AuthenticationService {
640
688
  throw new Error(this.options.errors.invalidPassword);
641
689
  }
642
690
  // user.password = await this.hashAndBcryptPassword(user.password);
643
- user.password = await await bcryptPassword((user.password as any));
691
+ user.password = await await bcryptPassword(user.password as any);
644
692
  }
645
693
 
646
694
  if (user.verifyCode) {
@@ -649,12 +697,10 @@ export default class AccountsPassword implements AuthenticationService {
649
697
  throw new Error(this.options.errors.invalidVerifyCode);
650
698
  }
651
699
  delete user.verifyCode;
652
- if (user.email)
653
- user.email_verified = true
654
- if (user.mobile)
655
- user.mobile_verified = true
700
+ if (user.email) user.email_verified = true;
701
+ if (user.mobile) user.mobile_verified = true;
656
702
  }
657
-
703
+
658
704
  // // If user does not provide the validate function only allow some fields
659
705
  // user = this.options.validateNewUser
660
706
  // ? await this.options.validateNewUser(user)
@@ -669,7 +715,11 @@ export default class AccountsPassword implements AuthenticationService {
669
715
  try {
670
716
  const userId = await this.db.createUser(user);
671
717
  defer(async () => {
672
- if (this.options.sendVerificationEmailAfterSignup && user.email && !user.email_verified)
718
+ if (
719
+ this.options.sendVerificationEmailAfterSignup &&
720
+ user.email &&
721
+ !user.email_verified
722
+ )
673
723
  this.sendVerificationEmail(user.email);
674
724
 
675
725
  const userRecord = (await this.db.findUserById(userId)) as User;
@@ -687,14 +737,15 @@ export default class AccountsPassword implements AuthenticationService {
687
737
  return Number(tokenRecord.when) + expiryDate < Date.now();
688
738
  }
689
739
 
690
- public async verifyUserPasswordByEmail(email, password){
691
- return await this.passwordAuthenticator({email: email}, password);
740
+ public async verifyUserPasswordByEmail(email, password) {
741
+ return await this.passwordAuthenticator({ email: email }, password);
692
742
  }
693
743
 
694
- public async foundUser(user: string | LoginUserIdentity,){
695
- const { username, email, id, mobile } = typeof user == 'string'
696
- ? this.toMobileAndEmail({ user })
697
- : this.toMobileAndEmail({ ...user });
744
+ public async foundUser(user: string | LoginUserIdentity) {
745
+ const { username, email, id, mobile } =
746
+ typeof user == "string"
747
+ ? this.toMobileAndEmail({ user })
748
+ : this.toMobileAndEmail({ ...user });
698
749
 
699
750
  let foundUser: any | null = null;
700
751
 
@@ -717,11 +768,12 @@ export default class AccountsPassword implements AuthenticationService {
717
768
  public async passwordAuthenticator(
718
769
  user: string | LoginUserIdentity,
719
770
  password: PasswordType,
720
- isHashPassword = true
771
+ isHashPassword = true,
721
772
  ): Promise<User> {
722
- const { username, email, id, mobile } = typeof user == 'string'
723
- ? this.toMobileAndEmail({ user })
724
- : this.toMobileAndEmail({ ...user });
773
+ const { username, email, id, mobile } =
774
+ typeof user == "string"
775
+ ? this.toMobileAndEmail({ user })
776
+ : this.toMobileAndEmail({ ...user });
725
777
 
726
778
  let foundUser: any | null = null;
727
779
 
@@ -743,7 +795,7 @@ export default class AccountsPassword implements AuthenticationService {
743
795
  throw new Error(
744
796
  this.server.options.ambiguousErrorMessages
745
797
  ? this.options.errors.invalidCredentials
746
- : this.options.errors.userNotFound
798
+ : this.options.errors.userNotFound,
747
799
  );
748
800
  }
749
801
 
@@ -752,76 +804,94 @@ export default class AccountsPassword implements AuthenticationService {
752
804
  throw new Error(this.options.errors.noPasswordSet);
753
805
  }
754
806
  const saas = getSteedosConfig().tenant.saas;
755
- if(!saas){
807
+ if (!saas) {
756
808
  const locked = foundUser.lockout;
757
809
  const login_failed_lockout_time = foundUser.login_failed_lockout_time;
758
- if(locked){
759
- if(!login_failed_lockout_time){
760
- throw new Error('账户已锁定,请联系管理员');
761
- }else{
762
- if(moment(login_failed_lockout_time).isAfter(new Date())){
763
- throw new Error('账户已锁定,请联系管理员');
810
+ if (locked) {
811
+ if (!login_failed_lockout_time) {
812
+ throw new Error("账户已锁定,请联系管理员");
813
+ } else {
814
+ if (moment(login_failed_lockout_time).isAfter(new Date())) {
815
+ throw new Error("账户已锁定,请联系管理员");
764
816
  }
765
817
  }
766
818
  }
767
819
  }
768
820
  const hashAlgorithm = this.options.passwordHashAlgorithm;
769
821
  let pass = null;
770
- if(isHashPassword){
822
+ if (isHashPassword) {
771
823
  pass = password;
772
- }else{
824
+ } else {
773
825
  pass = hashAlgorithm ? hashPassword(password, hashAlgorithm) : password;
774
826
  }
775
827
  const isPasswordValid = await verifyPassword(pass, hash);
776
828
 
777
829
  if (!isPasswordValid) {
778
- if(!saas){
830
+ if (!saas) {
779
831
  const userProfile = await this.getUserProfile(foundUser.id);
780
832
  const login_failed_lockout_time = foundUser.login_failed_lockout_time;
781
833
  // 重置密码错误次数
782
- if(userProfile.lockout_interval !=0 && moment(login_failed_lockout_time).isBefore(new Date())){
783
- await this.db.updateUser(foundUser.id, {$set: {login_failed_number: 1}});
784
- }else{
785
- await this.db.updateUser(foundUser.id, {$inc: {login_failed_number: 1}});
834
+ if (
835
+ userProfile.lockout_interval != 0 &&
836
+ moment(login_failed_lockout_time).isBefore(new Date())
837
+ ) {
838
+ await this.db.updateUser(foundUser.id, {
839
+ $set: { login_failed_number: 1 },
840
+ });
841
+ } else {
842
+ await this.db.updateUser(foundUser.id, {
843
+ $inc: { login_failed_number: 1 },
844
+ });
786
845
  }
787
846
 
788
847
  const user: any = await this.db.findUserById(foundUser.id);
789
- if(user.login_failed_number >= userProfile.max_login_attempts){
848
+ if (user.login_failed_number >= userProfile.max_login_attempts) {
790
849
  let lockout_interval = userProfile.lockout_interval;
791
850
  let login_failed_lockout_time = null;
792
- if(lockout_interval === 0){
851
+ if (lockout_interval === 0) {
793
852
  login_failed_lockout_time = null;
794
- }else{
795
- login_failed_lockout_time = new Date(moment().add(userProfile.lockout_interval, 'm'))
853
+ } else {
854
+ login_failed_lockout_time = new Date(
855
+ moment().add(userProfile.lockout_interval, "m"),
856
+ );
796
857
  }
797
- await this.db.updateUser(foundUser.id, {$set: {lockout: true, login_failed_lockout_time: login_failed_lockout_time}});
858
+ await this.db.updateUser(foundUser.id, {
859
+ $set: {
860
+ lockout: true,
861
+ login_failed_lockout_time: login_failed_lockout_time,
862
+ },
863
+ });
798
864
  }
799
865
  }
800
866
  throw new Error(
801
867
  this.server.options.ambiguousErrorMessages
802
868
  ? this.options.errors.invalidCredentials
803
- : this.options.errors.incorrectPassword
869
+ : this.options.errors.incorrectPassword,
804
870
  );
805
- }else{
806
- await this.db.updateUser(foundUser.id, {$set: {lockout: false, login_failed_number: 0}, $unset: {login_failed_lockout_time: 1}});
871
+ } else {
872
+ await this.db.updateUser(foundUser.id, {
873
+ $set: { lockout: false, login_failed_number: 0 },
874
+ $unset: { login_failed_lockout_time: 1 },
875
+ });
807
876
  }
808
877
 
809
878
  return foundUser;
810
879
  }
811
880
 
812
- private async codeAuthenticator(
813
- user, token, locale
814
- ): Promise<User> {
881
+ private async codeAuthenticator(user, token, locale): Promise<User> {
815
882
  const { username, email, mobile, id } = isString(user)
816
883
  ? this.toMobileAndEmail({ user })
817
884
  : this.toMobileAndEmail({ ...user });
818
-
819
- let foundUser = await this.db.findUserByVerificationCode({email: email, mobile: mobile}, token);
885
+
886
+ let foundUser = await this.db.findUserByVerificationCode(
887
+ { email: email, mobile: mobile },
888
+ token,
889
+ );
820
890
  if (!foundUser) {
821
891
  throw new Error(
822
892
  this.server.options.ambiguousErrorMessages
823
893
  ? this.options.errors.invalidCode
824
- : this.options.errors.userNotFound
894
+ : this.options.errors.userNotFound,
825
895
  );
826
896
  }
827
897
  return foundUser;
@@ -829,7 +899,9 @@ export default class AccountsPassword implements AuthenticationService {
829
899
 
830
900
  private async hashAndBcryptPassword(password: PasswordType): Promise<string> {
831
901
  const hashAlgorithm = this.options.passwordHashAlgorithm;
832
- const hashedPassword: any = hashAlgorithm ? hashPassword(password, hashAlgorithm) : password;
902
+ const hashedPassword: any = hashAlgorithm
903
+ ? hashPassword(password, hashAlgorithm)
904
+ : password;
833
905
  return bcryptPassword(hashedPassword);
834
906
  }
835
907
 
@@ -850,7 +922,6 @@ export default class AccountsPassword implements AuthenticationService {
850
922
  return { username, email, mobile, id };
851
923
  }
852
924
 
853
-
854
925
  /**
855
926
  * @description Send an email with a link the user can use verify their email address.
856
927
  * @param {string} [address] - Which address of the user's to send the email to.
@@ -860,31 +931,34 @@ export default class AccountsPassword implements AuthenticationService {
860
931
  * @returns {Promise<void>} - Return a Promise.
861
932
  */
862
933
  public async sendVerificationCode(user: any): Promise<void> {
863
-
864
-
865
934
  const code = generateRandomCode();
866
935
 
867
936
  if (user.email) {
868
- const result: any = await this.db.addVerificationCode(user, code, {MAX_FAILURE_COUNT, EFFECTIVE_TIME});
937
+ const result: any = await this.db.addVerificationCode(user, code, {
938
+ MAX_FAILURE_COUNT,
939
+ EFFECTIVE_TIME,
940
+ });
869
941
  const verificationCodeMail = this.server.prepareMail(
870
942
  user.email,
871
943
  result.code,
872
944
  null,
873
- getPathFragmentPrefix() + 'verify-email',
945
+ getPathFragmentPrefix() + "verify-email",
874
946
  this.server.options.emailTemplates.verificationCode,
875
- this.server.options.emailTemplates.from
947
+ this.server.options.emailTemplates.from,
876
948
  );
877
949
  await this.server.options.sendMail(verificationCodeMail);
878
- return result.owner
950
+ return result.owner;
879
951
  } else if (user.mobile) {
880
- const result: any = await this.db.addVerificationCode(user, code, {MAX_FAILURE_COUNT, EFFECTIVE_TIME});
952
+ const result: any = await this.db.addVerificationCode(user, code, {
953
+ MAX_FAILURE_COUNT,
954
+ EFFECTIVE_TIME,
955
+ });
881
956
  const sms = {
882
957
  mobile: user.mobile,
883
- message: `您的验证码为:${result.code},该验证码${EFFECTIVE_TIME}分钟内有效,请勿泄漏于他人!`
884
- }
958
+ message: `您的验证码为:${result.code},该验证码${EFFECTIVE_TIME}分钟内有效,请勿泄漏于他人!`,
959
+ };
885
960
  await this.server.options.sendSMS(sms);
886
- return result.owner
961
+ return result.owner;
887
962
  }
888
-
889
963
  }
890
964
  }
@@ -1,9 +1,5 @@
1
-
2
- import { User } from './user';
3
- import { DatabaseInterface } from './database-interface';
4
-
5
- // TODO : Fix circular dependency for better type checking
6
- // import AccountsServer from '@accounts/server';
1
+ import { User } from "./user";
2
+ import { DatabaseInterface } from "./database-interface";
7
3
 
8
4
  export interface AuthenticationService {
9
5
  server: any;