@adaptivestone/framework 5.0.0-beta.17 → 5.0.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/commands/GenerateTypes.d.ts +2 -2
  3. package/dist/commands/GenerateTypes.js +22 -8
  4. package/dist/commands/GenerateTypes.js.map +1 -1
  5. package/dist/helpers/appInstance.d.ts +3 -0
  6. package/dist/helpers/appInstance.js +8 -0
  7. package/dist/helpers/appInstance.js.map +1 -0
  8. package/dist/helpers/crypto.d.ts +3 -0
  9. package/dist/helpers/crypto.js +14 -0
  10. package/dist/helpers/crypto.js.map +1 -0
  11. package/dist/helpers/redis/clearNamespace.d.ts +1 -2
  12. package/dist/helpers/redis/clearNamespace.js +2 -3
  13. package/dist/helpers/redis/clearNamespace.js.map +1 -1
  14. package/dist/models/Lock.d.ts +84 -57
  15. package/dist/models/Lock.js +87 -82
  16. package/dist/models/Lock.js.map +1 -1
  17. package/dist/models/Migration.d.ts +6 -9
  18. package/dist/models/Migration.js +3 -4
  19. package/dist/models/Migration.js.map +1 -1
  20. package/dist/models/Sequence.d.ts +22 -18
  21. package/dist/models/Sequence.js +24 -7
  22. package/dist/models/Sequence.js.map +1 -1
  23. package/dist/models/User.d.ts +2347 -153
  24. package/dist/models/User.js +203 -173
  25. package/dist/models/User.js.map +1 -1
  26. package/dist/models/UserOld.d.ts +179 -0
  27. package/dist/models/UserOld.js +230 -0
  28. package/dist/models/UserOld.js.map +1 -0
  29. package/dist/modules/AbstractModel.d.ts +1 -1
  30. package/dist/modules/AbstractModel.js +1 -31
  31. package/dist/modules/AbstractModel.js.map +1 -1
  32. package/dist/modules/BaseModel.d.ts +49 -0
  33. package/dist/modules/BaseModel.js +31 -0
  34. package/dist/modules/BaseModel.js.map +1 -0
  35. package/dist/server.d.ts +5 -3
  36. package/dist/server.js +44 -3
  37. package/dist/server.js.map +1 -1
  38. package/dist/tests/setupVitest.js +1 -1
  39. package/dist/tests/setupVitest.js.map +1 -1
  40. package/genTypes.d.ts +3 -2
  41. package/package.json +1 -1
@@ -1,26 +1,15 @@
1
- import { scrypt } from 'node:crypto';
2
- import { promisify } from 'node:util';
3
- import AbstractModel from "../modules/AbstractModel.js";
4
- const scryptAsync = promisify(scrypt);
5
- class User extends AbstractModel {
6
- hashRounds;
7
- saltSecret;
8
- constructor(app) {
9
- super(app);
10
- const authConfig = this.app.getConfig('auth');
11
- this.hashRounds = authConfig.hashRounds;
12
- this.saltSecret = authConfig.saltSecret;
13
- }
14
- initHooks() {
15
- this.mongooseSchema.pre('save', async function userPreSaveHook() {
1
+ import { BaseModel } from "../modules/BaseModel.js";
2
+ import { scryptAsyncWithSaltAsString } from "../helpers/crypto.js";
3
+ import { appInstance } from "../helpers/appInstance.js";
4
+ class User extends BaseModel {
5
+ static initHooks(schema) {
6
+ schema.pre('save', async function userPreSaveHook() {
16
7
  if (this.isModified('password')) {
17
- // @ts-ignore
18
- this.password = await this.constructor.hashPassword(this.password);
8
+ this.password = await scryptAsyncWithSaltAsString(this.password);
19
9
  }
20
10
  });
21
11
  }
22
- // eslint-disable-next-line class-methods-use-this
23
- get modelSchema() {
12
+ static get modelSchema() {
24
13
  return {
25
14
  avatar: {
26
15
  type: String,
@@ -64,181 +53,222 @@ class User extends AbstractModel {
64
53
  languages: [String],
65
54
  };
66
55
  }
67
- static async getUserByEmailAndPassword(email, password) {
68
- const data = await this.findOne({ email: String(email) });
69
- if (!data) {
70
- return false;
71
- }
72
- const hashedPasswords = await this.hashPassword(password);
73
- if (data.password !== hashedPasswords) {
74
- return false;
75
- }
76
- return data;
77
- }
78
- async generateToken() {
79
- const timestamp = new Date();
80
- timestamp.setDate(timestamp.getDate() + 30);
81
- const data = await scryptAsync(this.email + Date.now(),
82
- // @ts-ignore
83
- this.getSuper().saltSecret,
84
- // @ts-ignore
85
- this.getSuper().hashRounds);
86
- const token = data.toString('base64url');
87
- this.sessionTokens.push({ token, valid: timestamp });
88
- await this.save();
89
- return { token, valid: timestamp };
90
- }
91
- getPublic() {
56
+ static get modelStatics() {
92
57
  return {
93
- avatar: this.avatar,
94
- name: this.name,
95
- email: this.email,
96
- id: this.id,
97
- isVerified: this.isVerified,
98
- permissions: this.permissions,
99
- locale: this.locale,
58
+ /**
59
+ * Get user by email and password
60
+ * @param {string} email
61
+ * @param {string} password
62
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
63
+ */
64
+ getUserByEmailAndPassword: async function getUserByEmailAndPassword(email, password) {
65
+ const data = await this.findOne({ email: String(email) });
66
+ if (!data) {
67
+ return false;
68
+ }
69
+ const hashedPasswords = await scryptAsyncWithSaltAsString(password);
70
+ if (data.password !== hashedPasswords) {
71
+ return false;
72
+ }
73
+ return data;
74
+ },
75
+ /**
76
+ * Get user by token
77
+ * @param {string}
78
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
79
+ */
80
+ getUserByToken: async function getUserByToken(token) {
81
+ const data = await this.findOne({
82
+ 'sessionTokens.token': String(token),
83
+ });
84
+ return data || false;
85
+ },
86
+ /**
87
+ * Get user by email
88
+ * @param {string}
89
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
90
+ */
91
+ getUserByEmail: async function getUserByEmail(email) {
92
+ const data = await this.findOne({ email: String(email) });
93
+ if (!data) {
94
+ return false;
95
+ }
96
+ return data;
97
+ },
98
+ /**
99
+ * Get user by password recovery token
100
+ * @param {string} passwordRecoveryToken
101
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
102
+ */
103
+ getUserByPasswordRecoveryToken: async function getUserByPasswordRecoveryToken(passwordRecoveryToken) {
104
+ const data = await this.findOne({
105
+ passwordRecoveryTokens: {
106
+ $elemMatch: { token: String(passwordRecoveryToken) },
107
+ },
108
+ });
109
+ if (!data) {
110
+ return Promise.reject(new Error('User not exists'));
111
+ }
112
+ // TODO token expiration and remove that token
113
+ data.passwordRecoveryTokens?.pop();
114
+ const result = await data.save();
115
+ return result;
116
+ },
117
+ /**
118
+ * Get user by verification token
119
+ * @param {string} verificationToken
120
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
121
+ */
122
+ getUserByVerificationToken: async function getUserByVerificationToken(verificationToken) {
123
+ const data = await this.findOne({
124
+ verificationTokens: {
125
+ $elemMatch: { token: String(verificationToken) },
126
+ },
127
+ });
128
+ if (!data) {
129
+ return Promise.reject(new Error('User not exists'));
130
+ }
131
+ // TODO token expiration and remove that token
132
+ data.verificationTokens?.pop();
133
+ const result = await data.save();
134
+ return result;
135
+ },
136
+ // TODO
137
+ removeVerificationToken: async function removeVerificationToken(verificationToken) {
138
+ this.updateOne({
139
+ verificationTokens: {
140
+ $elemMatch: { token: String(verificationToken) },
141
+ },
142
+ }, { $pop: { verificationTokens: 1 } });
143
+ },
100
144
  };
101
145
  }
102
- static async hashPassword(password) {
103
- const data = await scryptAsync(String(password),
104
- // @ts-ignore
105
- this.getSuper().saltSecret,
106
- // @ts-ignore
107
- this.getSuper().hashRounds);
108
- return data.toString('base64url');
109
- }
110
- static async getUserByToken(token) {
111
- const data = await this.findOne({ 'sessionTokens.token': String(token) });
112
- return data || false;
113
- }
114
- static async getUserByEmail(email) {
115
- const data = await this.findOne({ email: String(email) });
116
- if (!data) {
117
- return false;
118
- }
119
- return data;
146
+ static get modelMethods() {
147
+ return {
148
+ /**
149
+ * Generate token for user
150
+ * @returns {Object}
151
+ */
152
+ generateToken: async function () {
153
+ const timestamp = new Date();
154
+ timestamp.setDate(timestamp.getDate() + 30);
155
+ const token = await scryptAsyncWithSaltAsString(this.email + Date.now());
156
+ this.sessionTokens?.push({ token, valid: timestamp });
157
+ await this.save();
158
+ return { token, valid: timestamp };
159
+ },
160
+ /**
161
+ * Send password recovery email
162
+ * @param {Object}
163
+ * @param {TFunction}
164
+ * @param {string} i18n.language
165
+ * @returns {Promise<boolean>}
166
+ */
167
+ sendPasswordRecoveryEmail: async function (i18n) {
168
+ const passwordRecoveryToken = await userHelpers.generateUserPasswordRecoveryToken(this);
169
+ let Mailer;
170
+ // speed optimisation
171
+ try {
172
+ // @ts-ignore
173
+ // eslint-disable-next-line import-x/no-unresolved
174
+ Mailer = (await import('@adaptivestone/framework-module-email'))
175
+ .default;
176
+ }
177
+ catch {
178
+ const error = 'Mailer not found. Please install @adaptivestone/framework-module-email in order to use it';
179
+ appInstance.logger?.error(error);
180
+ return false;
181
+ }
182
+ const mail = new Mailer(appInstance, 'recovery', {
183
+ link: `${i18n.language}/auth/recovery?password_recovery_token=${passwordRecoveryToken.token}`,
184
+ editor: this.name?.nick,
185
+ }, i18n);
186
+ return mail.send(this.email);
187
+ },
188
+ /**
189
+ * Send verification email
190
+ * @param {Object}
191
+ * @param {TFunction} i18n.t
192
+ * @param {string} i18n.language
193
+ * @returns {Promise<boolean>}
194
+ */
195
+ sendVerificationEmail: async function (i18n) {
196
+ const verificationToken = await userHelpers.generateUserVerificationToken(this);
197
+ // speed optimisation
198
+ let Mailer;
199
+ try {
200
+ // @ts-ignore
201
+ Mailer = (await import('@adaptivestone/framework-module-email'))
202
+ .default;
203
+ }
204
+ catch {
205
+ const error = 'Mailer not found. Please install @adaptivestone/framework-module-email in order to use it';
206
+ appInstance.logger?.error(error);
207
+ return false;
208
+ }
209
+ const mail = new Mailer(appInstance, 'verification', {
210
+ link: `${i18n.language}/auth/login?verification_token=${verificationToken.token}`,
211
+ editor: this.name?.nick,
212
+ }, i18n);
213
+ return mail.send(this.email);
214
+ } /**
215
+ * Get public user data
216
+ * @returns {Object}
217
+ */,
218
+ getPublic() {
219
+ return {
220
+ avatar: this.avatar,
221
+ name: this.name,
222
+ email: this.email,
223
+ id: this.id,
224
+ isVerified: this.isVerified,
225
+ permissions: this.permissions,
226
+ locale: this.locale,
227
+ };
228
+ },
229
+ };
120
230
  }
121
- static async generateUserPasswordRecoveryToken(userMongoose) {
231
+ }
232
+ export const userHelpers = {
233
+ /**
234
+ * Generate user verification token
235
+ * @param {InstanceType<UserModelLite>} userMongoose
236
+ * @returns {Promise<{ token: string; until: number }>}
237
+ */
238
+ generateUserVerificationToken: async function generateUserVerificationToken(userMongoose) {
122
239
  const date = new Date();
123
240
  date.setDate(date.getDate() + 14);
124
- const data = await scryptAsync(userMongoose.email + Date.now(),
125
- // @ts-ignore
126
- userMongoose.getSuper().saltSecret,
127
- // @ts-ignore
128
- userMongoose.getSuper().hashRounds);
129
- const token = data.toString('base64url');
130
- // if (err) {
241
+ const token = await scryptAsyncWithSaltAsString(userMongoose.email + Date.now());
242
+ // if (err) {
131
243
  // this.logger.error("Hash 2 error ", err);
132
244
  // reject(err);
133
245
  // return;
134
246
  // }
135
- userMongoose.passwordRecoveryTokens = [];
136
- userMongoose.passwordRecoveryTokens.push({
247
+ userMongoose.verificationTokens = [];
248
+ userMongoose.verificationTokens.push({
137
249
  until: date,
138
250
  token,
139
251
  });
140
252
  await userMongoose.save();
141
253
  return { token, until: date.getTime() };
142
- }
143
- static async getUserByPasswordRecoveryToken(passwordRecoveryToken) {
144
- const data = await this.findOne({
145
- passwordRecoveryTokens: {
146
- $elemMatch: { token: String(passwordRecoveryToken) },
147
- },
148
- });
149
- if (!data) {
150
- return Promise.reject(new Error('User not exists'));
151
- }
152
- // TODO token expiration and remove that token
153
- data.passwordRecoveryTokens.pop();
154
- const result = await data.save();
155
- return result;
156
- }
157
- async sendPasswordRecoveryEmail(i18n) {
158
- const passwordRecoveryToken = await User.generateUserPasswordRecoveryToken(this);
159
- let Mailer;
160
- // speed optimisation
161
- try {
162
- // @ts-ignore
163
- // eslint-disable-next-line import-x/no-unresolved
164
- Mailer = (await import('@adaptivestone/framework-module-email')).default;
165
- }
166
- catch {
167
- const error = 'Mailer not found. Please install @adaptivestone/framework-module-email in order to use it';
168
- this.getSuper().logger?.error(error);
169
- return false;
170
- }
171
- const mail = new Mailer(this.getSuper().app, 'recovery', {
172
- link: `${i18n.language}/auth/recovery?password_recovery_token=${passwordRecoveryToken.token}`,
173
- editor: this.name.nick,
174
- }, i18n);
175
- return mail.send(this.email);
176
- }
177
- static async generateUserVerificationToken(userMongoose) {
254
+ },
255
+ /**
256
+ * Get user by id
257
+ * @param {string}
258
+ * @returns {Promise<InstanceType<UserModelLite> | false>}
259
+ */
260
+ generateUserPasswordRecoveryToken: async function generateUserPasswordRecoveryToken(userMongoose) {
178
261
  const date = new Date();
179
262
  date.setDate(date.getDate() + 14);
180
- const data = await scryptAsync(userMongoose.email + Date.now(),
181
- // @ts-ignore
182
- userMongoose.getSuper().saltSecret,
183
- // @ts-ignore
184
- userMongoose.getSuper().hashRounds);
185
- const token = data.toString('base64url');
186
- // if (err) {
187
- // this.logger.error("Hash 2 error ", err);
188
- // reject(err);
189
- // return;
190
- // }
191
- userMongoose.verificationTokens = [];
192
- userMongoose.verificationTokens.push({
263
+ const token = await scryptAsyncWithSaltAsString(userMongoose.email + Date.now());
264
+ userMongoose.passwordRecoveryTokens = [];
265
+ userMongoose.passwordRecoveryTokens.push({
193
266
  until: date,
194
267
  token,
195
268
  });
196
269
  await userMongoose.save();
197
270
  return { token, until: date.getTime() };
198
- }
199
- static async getUserByVerificationToken(verificationToken) {
200
- const data = await this.findOne({
201
- verificationTokens: {
202
- $elemMatch: { token: String(verificationToken) },
203
- },
204
- });
205
- if (!data) {
206
- return Promise.reject(new Error('User not exists'));
207
- }
208
- // TODO token expiration and remove that token
209
- data.verificationTokens.pop();
210
- const result = await data.save();
211
- return result;
212
- }
213
- // async removeVerificationToken(verificationToken) {
214
- // this.mongooseModel.updateOne(
215
- // {
216
- // verificationTokens: {
217
- // $elemMatch: { token: String(verificationToken) },
218
- // },
219
- // },
220
- // { $pop: { verificationTokens: 1 } },
221
- // );
222
- // }
223
- async sendVerificationEmail(i18n) {
224
- const verificationToken = await User.generateUserVerificationToken(this);
225
- // speed optimisation
226
- let Mailer;
227
- try {
228
- // @ts-ignore
229
- Mailer = (await import('@adaptivestone/framework-module-email')).default;
230
- }
231
- catch {
232
- const error = 'Mailer not found. Please install @adaptivestone/framework-module-email in order to use it';
233
- this.getSuper().logger?.error(error);
234
- return false;
235
- }
236
- const mail = new Mailer(this.getSuper().app, 'verification', {
237
- link: `${i18n.language}/auth/login?verification_token=${verificationToken.token}`,
238
- editor: this.name.nick,
239
- }, i18n);
240
- return mail.send(this.email);
241
- }
242
- }
271
+ },
272
+ };
243
273
  export default User;
244
274
  //# sourceMappingURL=User.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import AbstractModel from '../modules/AbstractModel.ts';
2
+ import type { IApp } from '../server.ts';
3
+ import type { TFunction } from 'i18next';
4
+ import type { IAbstractModel, IAbstractModelMethods } from '../modules/AbstractModel.ts';
5
+ interface IUser {
6
+ avatar: string;
7
+ name: {
8
+ first: string;
9
+ last: string;
10
+ nick: string;
11
+ };
12
+ password: string;
13
+ email: string;
14
+ sessionTokens: {
15
+ token: string;
16
+ valid: Date;
17
+ }[];
18
+ verificationTokens: {
19
+ until: Date;
20
+ token: string;
21
+ }[];
22
+ passwordRecoveryTokens: {
23
+ until: Date;
24
+ token: string;
25
+ }[];
26
+ permissions: string[];
27
+ roles: string[];
28
+ isVerified: boolean;
29
+ locale: string;
30
+ languages: string[];
31
+ }
32
+ interface IStatic extends IAbstractModel<IUser, IAbstractModelMethods<IUser>> {
33
+ getUserByEmailAndPassword(email: string, password: string): Promise<InstanceType<UserOld['mongooseModel']> | false>;
34
+ hashPassword(password: string): Promise<string>;
35
+ getUserByToken(token: string): Promise<InstanceType<UserOld['mongooseModel']> | false>;
36
+ getUserByEmail(email: string): Promise<InstanceType<UserOld['mongooseModel']> | false>;
37
+ getUserByPasswordRecoveryToken(token: string): Promise<InstanceType<UserOld['mongooseModel']> | false>;
38
+ generateUserPasswordRecoveryToken(user: InstanceType<UserOld['mongooseModel']>): Promise<{
39
+ token: string;
40
+ until: Date;
41
+ }>;
42
+ getUserByVerificationToken(token: string): Promise<InstanceType<UserOld['mongooseModel']> | false>;
43
+ generateUserVerificationToken(user: InstanceType<UserOld['mongooseModel']>): Promise<{
44
+ token: string;
45
+ until: Date;
46
+ }>;
47
+ }
48
+ /**
49
+ * @deprecated use User Model instead of UserOld
50
+ */
51
+ declare class UserOld extends AbstractModel<IUser, IAbstractModelMethods<IUser>, IStatic> {
52
+ constructor(app: IApp);
53
+ initHooks(): void;
54
+ get modelSchema(): {
55
+ avatar: {
56
+ type: StringConstructor;
57
+ maxlength: number;
58
+ };
59
+ name: {
60
+ first: {
61
+ type: StringConstructor;
62
+ maxlength: number;
63
+ };
64
+ last: {
65
+ type: StringConstructor;
66
+ maxlength: number;
67
+ };
68
+ nick: {
69
+ minlength: number;
70
+ maxlength: number;
71
+ type: StringConstructor;
72
+ index: {
73
+ unique: boolean;
74
+ partialFilterExpression: {
75
+ 'name.nick': {
76
+ $type: string;
77
+ };
78
+ };
79
+ };
80
+ };
81
+ };
82
+ password: StringConstructor;
83
+ email: {
84
+ type: StringConstructor;
85
+ maxlength: number;
86
+ index: {
87
+ unique: boolean;
88
+ partialFilterExpression: {
89
+ email: {
90
+ $type: string;
91
+ };
92
+ };
93
+ };
94
+ };
95
+ sessionTokens: {
96
+ token: StringConstructor;
97
+ valid: DateConstructor;
98
+ }[];
99
+ verificationTokens: {
100
+ until: DateConstructor;
101
+ token: StringConstructor;
102
+ }[];
103
+ passwordRecoveryTokens: {
104
+ until: DateConstructor;
105
+ token: StringConstructor;
106
+ }[];
107
+ permissions: never[];
108
+ roles: never[];
109
+ isVerified: {
110
+ type: BooleanConstructor;
111
+ default: boolean;
112
+ };
113
+ locale: {
114
+ type: StringConstructor;
115
+ default: string;
116
+ };
117
+ languages: StringConstructor[];
118
+ };
119
+ static getUserByEmailAndPassword(this: UserOld['mongooseModel'], email: string, password: string): Promise<false | (import("mongoose").Document<unknown, {}, IUser, {}> & Omit<IUser & {
120
+ _id: import("mongoose").Types.ObjectId;
121
+ } & {
122
+ __v: number;
123
+ }, "getSuper"> & IAbstractModelMethods<IUser>)>;
124
+ generateToken(this: InstanceType<UserOld['mongooseModel']>): Promise<{
125
+ token: string;
126
+ valid: Date;
127
+ }>;
128
+ getPublic(this: InstanceType<UserOld['mongooseModel']>): {
129
+ avatar: string;
130
+ name: {
131
+ first: string;
132
+ last: string;
133
+ nick: string;
134
+ };
135
+ email: string;
136
+ id: any;
137
+ isVerified: boolean;
138
+ permissions: string[];
139
+ locale: string;
140
+ };
141
+ static hashPassword(this: UserOld['mongooseModel'], password: string): Promise<string>;
142
+ static getUserByToken(this: UserOld['mongooseModel'], token: string): Promise<false | (import("mongoose").Document<unknown, {}, IUser, {}> & Omit<IUser & {
143
+ _id: import("mongoose").Types.ObjectId;
144
+ } & {
145
+ __v: number;
146
+ }, "getSuper"> & IAbstractModelMethods<IUser>)>;
147
+ static getUserByEmail(this: UserOld['mongooseModel'], email: string): Promise<false | (import("mongoose").Document<unknown, {}, IUser, {}> & Omit<IUser & {
148
+ _id: import("mongoose").Types.ObjectId;
149
+ } & {
150
+ __v: number;
151
+ }, "getSuper"> & IAbstractModelMethods<IUser>)>;
152
+ static generateUserPasswordRecoveryToken(userMongoose: InstanceType<UserOld['mongooseModel']>): Promise<{
153
+ token: string;
154
+ until: number;
155
+ }>;
156
+ static getUserByPasswordRecoveryToken(this: UserOld['mongooseModel'], passwordRecoveryToken: string): Promise<import("mongoose").Document<unknown, {}, IUser, {}> & Omit<IUser & {
157
+ _id: import("mongoose").Types.ObjectId;
158
+ } & {
159
+ __v: number;
160
+ }, "getSuper"> & IAbstractModelMethods<IUser>>;
161
+ sendPasswordRecoveryEmail(this: InstanceType<UserOld['mongooseModel']>, i18n: {
162
+ t: TFunction;
163
+ language: string;
164
+ }): Promise<any>;
165
+ static generateUserVerificationToken(userMongoose: InstanceType<UserOld['mongooseModel']>): Promise<{
166
+ token: string;
167
+ until: number;
168
+ }>;
169
+ static getUserByVerificationToken(this: UserOld['mongooseModel'], verificationToken: string): Promise<import("mongoose").Document<unknown, {}, IUser, {}> & Omit<IUser & {
170
+ _id: import("mongoose").Types.ObjectId;
171
+ } & {
172
+ __v: number;
173
+ }, "getSuper"> & IAbstractModelMethods<IUser>>;
174
+ sendVerificationEmail(this: InstanceType<UserOld['mongooseModel']>, i18n: {
175
+ t: TFunction;
176
+ language: string;
177
+ }): Promise<any>;
178
+ }
179
+ export default UserOld;