@nymphjs/tilmeld 1.0.0-beta.14 → 1.0.0-beta.140

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 (105) hide show
  1. package/CHANGELOG.md +668 -0
  2. package/README.md +21 -5
  3. package/dist/AbleObject.d.ts +20 -2
  4. package/dist/AbleObject.js +25 -13
  5. package/dist/AbleObject.js.map +1 -1
  6. package/dist/Group.d.ts +190 -27
  7. package/dist/Group.js +827 -440
  8. package/dist/Group.js.map +1 -1
  9. package/dist/Group.testArtifacts.d.ts +3 -0
  10. package/dist/Group.testArtifacts.js +120 -0
  11. package/dist/Group.testArtifacts.js.map +1 -0
  12. package/dist/Tilmeld.d.ts +275 -14
  13. package/dist/Tilmeld.js +789 -310
  14. package/dist/Tilmeld.js.map +1 -1
  15. package/dist/Tilmeld.types.d.ts +9 -9
  16. package/dist/Tilmeld.types.js +1 -2
  17. package/dist/User.d.ts +410 -41
  18. package/dist/User.js +2042 -1057
  19. package/dist/User.js.map +1 -1
  20. package/dist/User.testArtifacts.d.ts +3 -0
  21. package/dist/User.testArtifacts.js +175 -0
  22. package/dist/User.testArtifacts.js.map +1 -0
  23. package/dist/conf/defaults.d.ts +1 -1
  24. package/dist/conf/defaults.js +215 -141
  25. package/dist/conf/defaults.js.map +1 -1
  26. package/dist/conf/index.d.ts +361 -2
  27. package/dist/conf/index.js +2 -8
  28. package/dist/conf/index.js.map +1 -1
  29. package/dist/decorators/index.d.ts +2 -0
  30. package/dist/decorators/index.js +3 -0
  31. package/dist/decorators/index.js.map +1 -0
  32. package/dist/decorators/requireAbility.d.ts +10 -0
  33. package/dist/decorators/requireAbility.js +21 -0
  34. package/dist/decorators/requireAbility.js.map +1 -0
  35. package/dist/decorators/requireAuthentication.d.ts +8 -0
  36. package/dist/decorators/requireAuthentication.js +16 -0
  37. package/dist/decorators/requireAuthentication.js.map +1 -0
  38. package/dist/enforceTilmeld.d.ts +3 -0
  39. package/dist/enforceTilmeld.js +18 -0
  40. package/dist/enforceTilmeld.js.map +1 -0
  41. package/dist/errors/AccessControlError.d.ts +2 -1
  42. package/dist/errors/AccessControlError.js +3 -6
  43. package/dist/errors/AccessControlError.js.map +1 -1
  44. package/dist/errors/BadDataError.d.ts +2 -1
  45. package/dist/errors/BadDataError.js +3 -6
  46. package/dist/errors/BadDataError.js.map +1 -1
  47. package/dist/errors/BadEmailError.d.ts +2 -1
  48. package/dist/errors/BadEmailError.js +3 -6
  49. package/dist/errors/BadEmailError.js.map +1 -1
  50. package/dist/errors/BadUsernameError.d.ts +2 -1
  51. package/dist/errors/BadUsernameError.js +3 -6
  52. package/dist/errors/BadUsernameError.js.map +1 -1
  53. package/dist/errors/CouldNotChangeDefaultPrimaryGroupError.js +1 -5
  54. package/dist/errors/CouldNotChangeDefaultPrimaryGroupError.js.map +1 -1
  55. package/dist/errors/EmailChangeRateLimitExceededError.js +1 -5
  56. package/dist/errors/EmailChangeRateLimitExceededError.js.map +1 -1
  57. package/dist/errors/index.d.ts +6 -6
  58. package/dist/errors/index.js +6 -22
  59. package/dist/errors/index.js.map +1 -1
  60. package/dist/index.d.ts +10 -14
  61. package/dist/index.js +11 -35
  62. package/dist/index.js.map +1 -1
  63. package/dist/testArtifacts.d.ts +26 -0
  64. package/dist/testArtifacts.js +1346 -0
  65. package/dist/testArtifacts.js.map +1 -0
  66. package/dist/tilmeldJoiProps.d.ts +4 -5
  67. package/dist/tilmeldJoiProps.js +13 -18
  68. package/dist/tilmeldJoiProps.js.map +1 -1
  69. package/jest.config.js +31 -5
  70. package/package.json +49 -36
  71. package/src/AbleObject.ts +17 -11
  72. package/src/Group.testArtifacts.ts +159 -0
  73. package/src/Group.ts +712 -299
  74. package/src/Tilmeld.ts +666 -344
  75. package/src/Tilmeld.types.ts +9 -9
  76. package/src/User.testArtifacts.ts +226 -0
  77. package/src/User.ts +1984 -879
  78. package/src/conf/defaults.ts +205 -109
  79. package/src/conf/index.ts +381 -2
  80. package/src/decorators/index.ts +2 -0
  81. package/src/decorators/requireAbility.ts +26 -0
  82. package/src/decorators/requireAuthentication.ts +19 -0
  83. package/src/enforceTilmeld.ts +20 -0
  84. package/src/errors/AccessControlError.ts +4 -2
  85. package/src/errors/BadDataError.ts +4 -2
  86. package/src/errors/BadEmailError.ts +4 -2
  87. package/src/errors/BadUsernameError.ts +4 -2
  88. package/src/errors/index.ts +6 -6
  89. package/src/index.ts +11 -14
  90. package/src/testArtifacts.ts +2148 -0
  91. package/src/tilmeldJoiProps.ts +9 -24
  92. package/tsconfig.json +6 -3
  93. package/typedoc.json +4 -0
  94. package/dist/Group.test.d.ts +0 -1
  95. package/dist/Group.test.js +0 -48
  96. package/dist/Group.test.js.map +0 -1
  97. package/dist/User.test.d.ts +0 -1
  98. package/dist/User.test.js +0 -51
  99. package/dist/User.test.js.map +0 -1
  100. package/dist/conf/d.d.ts +0 -55
  101. package/dist/conf/d.js +0 -3
  102. package/dist/conf/d.js.map +0 -1
  103. package/src/Group.test.ts +0 -58
  104. package/src/User.test.ts +0 -61
  105. package/src/conf/d.ts +0 -303
@@ -1,18 +1,14 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = __importDefault(require("path"));
7
- const url_1 = require("url");
8
- const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
9
- const email_templates_1 = __importDefault(require("email-templates"));
10
- const joi_1 = __importDefault(require("joi"));
11
- const guid_1 = require("@nymphjs/guid");
12
- const nymph_1 = require("@nymphjs/nymph");
13
- const User_1 = __importDefault(require("../User"));
14
- const Group_1 = __importDefault(require("../Group"));
15
- exports.default = {
1
+ import path from 'node:path';
2
+ import { URL, fileURLToPath } from 'node:url';
3
+ import jwt from 'jsonwebtoken';
4
+ import Email from 'email-templates';
5
+ import Joi from 'joi';
6
+ import { nanoid } from '@nymphjs/guid';
7
+ import { nymphJoiProps } from '@nymphjs/nymph';
8
+ import { User } from '../User.js';
9
+ import { Group } from '../Group.js';
10
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
+ export default {
16
12
  appName: 'My Nymph App',
17
13
  appUrl: 'http://localhost:8080/',
18
14
  cookieDomain: 'localhost',
@@ -20,6 +16,7 @@ exports.default = {
20
16
  setupPath: '/tilmeld',
21
17
  createAdmin: true,
22
18
  emailUsernames: true,
19
+ domainSupport: false,
23
20
  allowRegistration: true,
24
21
  allowUsernameChange: true,
25
22
  enableUserSearch: false,
@@ -47,21 +44,35 @@ exports.default = {
47
44
  validRegexNotice: 'Usernames and groupnames must begin and end with a letter or number.',
48
45
  validEmailRegex: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
49
46
  validEmailRegexNotice: 'Email must be a correctly formatted address.',
47
+ validDomainRegex: /^(((?!-))(xn--|_)?[a-z0-9\-]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9][a-z0-9\-]{0,60}|[a-z0-9\-]{1,30}\.[a-z]{2,})$/,
48
+ validDomainRegexNotice: 'Domain must be a correctly formatted domain name.',
49
+ minUsernameLength: 1,
50
50
  maxUsernameLength: 128,
51
51
  jwtSecret: '',
52
- jwtExpire: 60 * 60 * 24 * 7 * 8,
53
- jwtRenew: 60 * 60 * 24 * 7 * 2,
54
- jwtBuilder: (config, user) => {
52
+ jwtExpire: 60 * 60 * 24 * 7 * 24, // 24 weeks(ish) (6 months)
53
+ jwtSwitchExpire: 60 * 60 * 6, // 6 hours
54
+ jwtRenew: 60 * 60 * 24 * 7 * 12, // 12 weeks(ish) (3 months)
55
+ jwtBuilder: (config, user, switchToken, switchForUser) => {
55
56
  const secret = config.jwtSecret;
56
57
  if (secret === '') {
57
58
  throw new Error('JWT secret is not configured.');
58
59
  }
59
- return jsonwebtoken_1.default.sign({
60
+ if (switchToken && (!switchForUser || switchForUser.guid == null)) {
61
+ throw new Error("Issuing a switch token requires providing the user it's for.");
62
+ }
63
+ return jwt.sign({
60
64
  iss: config.appUrl,
61
- nbf: Date.now() / 1000,
65
+ sub: switchForUser ? switchForUser.guid : user.guid,
66
+ nbf: Math.floor(Date.now() / 1000),
67
+ exp: Math.floor(Date.now() / 1000) +
68
+ (switchToken ? config.jwtSwitchExpire : config.jwtExpire),
69
+ // TODO: remove this guid claim in favor of sub claim
70
+ // this needs to be done long enough after Nov 1 2026, when sub added
71
+ // also don't forget to change how switchForUser guid is stored.
62
72
  guid: user.guid,
63
- xsrfToken: 'TILMELDXSRF-' + (0, guid_1.nanoid)(),
64
- }, secret, { expiresIn: config.jwtExpire });
73
+ xsrfToken: 'TILMELDXSRF-' + nanoid(),
74
+ ...(switchToken ? { switch: true } : {}),
75
+ }, secret);
65
76
  },
66
77
  jwtExtract: (config, token, xsrfToken) => {
67
78
  const secret = config.jwtSecret;
@@ -69,33 +80,37 @@ exports.default = {
69
80
  throw new Error('JWT secret is not configured.');
70
81
  }
71
82
  try {
72
- const payload = jsonwebtoken_1.default.verify(token, secret, {
83
+ const payload = jwt.verify(token, secret, {
73
84
  issuer: config.appUrl,
74
- clockTolerance: 10,
85
+ clockTolerance: 60,
75
86
  });
76
87
  if (typeof payload === 'string') {
77
88
  return null;
78
89
  }
79
- const { guid, xsrfToken: jwtXsrfToken, exp } = payload;
90
+ const { sub, guid, xsrfToken: jwtXsrfToken, switch: switchBool, exp, nbf, } = payload;
80
91
  if (xsrfToken != null && xsrfToken !== jwtXsrfToken) {
81
92
  return null;
82
93
  }
83
94
  if (typeof guid !== 'string' || guid.length !== 24) {
84
95
  return null;
85
96
  }
97
+ if (nbf == null) {
98
+ return null;
99
+ }
100
+ const issued = new Date(nbf * 1000);
86
101
  if (exp == null) {
87
102
  return null;
88
103
  }
89
104
  const expire = new Date(exp * 1000);
90
- return { guid, expire };
105
+ return { sub, guid, issued, expire, switch: switchBool };
91
106
  }
92
107
  catch (e) {
93
108
  return null;
94
109
  }
95
110
  },
96
- emailTemplateDir: path_1.default.join(__dirname, '..', '..', 'emails'),
111
+ emailTemplateDir: path.join(__dirname, '..', '..', 'emails'),
97
112
  configEmail: async (tilmeld, _options, _user) => {
98
- const appUrl = new url_1.URL(tilmeld.config.appUrl);
113
+ const appUrl = new URL(tilmeld.config.appUrl);
99
114
  return {
100
115
  message: {
101
116
  from: {
@@ -103,23 +118,29 @@ exports.default = {
103
118
  address: `noreply@${appUrl.hostname}`,
104
119
  },
105
120
  },
121
+ preview: {
122
+ openSimulator: false,
123
+ },
106
124
  };
107
125
  },
108
126
  sendEmail: async (tilmeld, options, user) => {
109
- const email = new email_templates_1.default(await tilmeld.config.configEmail(tilmeld, options, user));
127
+ const email = new Email(await tilmeld.config.configEmail(tilmeld, options, user));
110
128
  try {
111
129
  const result = await email.send({
112
130
  ...options,
113
- template: path_1.default.join(tilmeld.config.emailTemplateDir, options.template ?? '.'),
131
+ template: path.join(tilmeld.config.emailTemplateDir, options.template ?? '.'),
114
132
  locals: {
133
+ // System
115
134
  siteName: tilmeld.config.appName,
116
135
  siteLink: tilmeld.config.appUrl,
136
+ // Recipient
117
137
  toUsername: user.username ?? '',
118
138
  toName: user.name ?? '',
119
139
  toFirstName: user.nameFirst ?? '',
120
140
  toLastName: user.nameLast ?? '',
121
141
  toEmail: user.email ?? '',
122
142
  toPhone: user.phone ?? '',
143
+ // Current User with Tilmeld.
123
144
  ...(tilmeld.User.current()
124
145
  ? {
125
146
  username: tilmeld.User.current(true).username,
@@ -135,28 +156,63 @@ exports.default = {
135
156
  return !!result;
136
157
  }
137
158
  catch (e) {
159
+ tilmeld.nymph.config.debugError('tilmeld', `Failed to send email: ${e}`);
138
160
  return false;
139
161
  }
140
162
  },
141
163
  userRegisteredRecipient: null,
142
- validatorGroup: (group) => {
143
- joi_1.default.attempt(group.$getValidatable(), joi_1.default.object().keys({
144
- ...nymph_1.nymphJoiProps,
145
- groupname: joi_1.default.string().trim(false).required(),
146
- enabled: joi_1.default.boolean().required(),
147
- email: joi_1.default.string()
148
- .trim(false)
149
- .email({ minDomainSegments: 1, tlds: false })
150
- .required(),
151
- name: joi_1.default.string()
152
- .trim(false)
153
- .pattern(/[\x01-\x1F\x7F]/, {
154
- name: 'control characters',
155
- invert: true,
156
- })
157
- .max(512)
158
- .required(),
159
- avatar: joi_1.default.string()
164
+ failedLoginAttempt: (_user, _data) => {
165
+ // Wait 3-5 seconds to return a failure. This rate limits failed login
166
+ // attempts.
167
+ return new Promise((resolve) => setTimeout(resolve, Math.random() * 2000 + 3000));
168
+ },
169
+ validatorGroup: (tilmeld, group) => {
170
+ const nameFields = tilmeld.config.userFields.includes('name')
171
+ ? {
172
+ name: Joi.string()
173
+ .trim(false)
174
+ .pattern(/[\x01-\x1F\x7F]/, {
175
+ name: 'control characters',
176
+ invert: true,
177
+ })
178
+ .max(512)
179
+ .required(),
180
+ }
181
+ : {};
182
+ const emailFields = tilmeld.config.userFields.includes('email')
183
+ ? {
184
+ email: Joi.string()
185
+ .trim(false)
186
+ .email({ minDomainSegments: 1, tlds: false })
187
+ .required(),
188
+ }
189
+ : {};
190
+ const phoneFields = tilmeld.config.userFields.includes('phone')
191
+ ? {
192
+ phone: Joi.string()
193
+ .trim(false)
194
+ .pattern(/^[0-9]+$/, 'numbers'),
195
+ }
196
+ : {};
197
+ for (let ability of group.abilities ?? []) {
198
+ if (ability.startsWith('system/')) {
199
+ throw new Error('Invalid Group: Groups cannot have system abilities.');
200
+ }
201
+ if (ability === 'tilmeld/admin') {
202
+ throw new Error('Invalid Group: Groups cannot have Tilmeld admin ability.');
203
+ }
204
+ if (ability === 'tilmeld/switch') {
205
+ throw new Error('Invalid Group: Groups cannot have Tilmeld switch ability.');
206
+ }
207
+ }
208
+ Joi.attempt(group.$getValidatable(), Joi.object().keys({
209
+ ...nymphJoiProps,
210
+ ...nameFields,
211
+ ...emailFields,
212
+ ...phoneFields,
213
+ groupname: Joi.string().trim(false).required(),
214
+ enabled: Joi.boolean().required(),
215
+ avatar: Joi.string()
160
216
  .trim(false)
161
217
  .uri()
162
218
  .pattern(/[\x01-\x1F\x7F]/, {
@@ -164,62 +220,113 @@ exports.default = {
164
220
  invert: true,
165
221
  })
166
222
  .max(1024),
167
- phone: joi_1.default.string()
168
- .trim(false)
169
- .pattern(/^[0-9]+$/, 'numbers'),
170
- parent: joi_1.default.object().instance(Group_1.default),
171
- user: joi_1.default.object().instance(User_1.default),
172
- abilities: joi_1.default.array().items(joi_1.default.string()
223
+ parent: Joi.object().instance(Group),
224
+ user: Joi.object().instance(User),
225
+ abilities: Joi.array().items(Joi.string()
173
226
  .pattern(/[\x01-\x1F\x7F]/, {
174
227
  name: 'control characters',
175
228
  invert: true,
176
229
  })
177
230
  .max(256)),
178
- defaultPrimary: joi_1.default.boolean(),
179
- defaultSecondary: joi_1.default.boolean(),
180
- unverifiedSecondary: joi_1.default.boolean(),
231
+ defaultPrimary: Joi.boolean(),
232
+ defaultSecondary: Joi.boolean(),
233
+ unverifiedSecondary: Joi.boolean(),
181
234
  }), 'Invalid Group: ');
182
235
  },
183
- validatorUser: (user) => {
184
- joi_1.default.attempt(user.$getValidatable(), joi_1.default.object().keys({
185
- ...nymph_1.nymphJoiProps,
186
- username: joi_1.default.string().trim(false).required(),
187
- enabled: joi_1.default.boolean().required(),
188
- email: joi_1.default.string()
189
- .trim(false)
190
- .email({ minDomainSegments: 1, tlds: false })
191
- .required(),
192
- nameFirst: joi_1.default.string()
193
- .trim(false)
194
- .pattern(/[\x01-\x1F\x7F]/, {
195
- name: 'control characters',
196
- invert: true,
197
- })
198
- .max(512)
199
- .required(),
200
- nameMiddle: joi_1.default.string()
201
- .trim(false)
202
- .pattern(/[\x01-\x1F\x7F]/, {
203
- name: 'control characters',
204
- invert: true,
205
- })
206
- .max(512),
207
- nameLast: joi_1.default.string()
208
- .trim(false)
209
- .pattern(/[\x01-\x1F\x7F]/, {
210
- name: 'control characters',
211
- invert: true,
212
- })
213
- .max(512),
214
- name: joi_1.default.string()
215
- .trim(false)
216
- .pattern(/[\x01-\x1F\x7F]/, {
217
- name: 'control characters',
218
- invert: true,
219
- })
220
- .max(512)
221
- .required(),
222
- avatar: joi_1.default.string()
236
+ validatorUser: (tilmeld, user) => {
237
+ const nameFields = tilmeld.config.userFields.includes('name')
238
+ ? {
239
+ nameFirst: Joi.string()
240
+ .trim(false)
241
+ .pattern(/[\x01-\x1F\x7F]/, {
242
+ name: 'control characters',
243
+ invert: true,
244
+ })
245
+ .max(512)
246
+ .required(),
247
+ nameMiddle: Joi.string()
248
+ .trim(false)
249
+ .pattern(/[\x01-\x1F\x7F]/, {
250
+ name: 'control characters',
251
+ invert: true,
252
+ })
253
+ .max(512),
254
+ nameLast: Joi.string()
255
+ .trim(false)
256
+ .pattern(/[\x01-\x1F\x7F]/, {
257
+ name: 'control characters',
258
+ invert: true,
259
+ })
260
+ .max(512),
261
+ name: Joi.string()
262
+ .trim(false)
263
+ .pattern(/[\x01-\x1F\x7F]/, {
264
+ name: 'control characters',
265
+ invert: true,
266
+ })
267
+ .max(512)
268
+ .required(),
269
+ }
270
+ : {};
271
+ const emailFields = tilmeld.config.userFields.includes('email')
272
+ ? {
273
+ email: Joi.string()
274
+ .trim(false)
275
+ .email({ minDomainSegments: 1, tlds: false })
276
+ .required(),
277
+ secret: Joi.string()
278
+ .trim(false)
279
+ .pattern(/[\x01-\x1F\x7F]/, {
280
+ name: 'control characters',
281
+ invert: true,
282
+ })
283
+ .length(21),
284
+ emailChangeDate: Joi.number(),
285
+ newEmailSecret: Joi.string()
286
+ .trim(false)
287
+ .pattern(/[\x01-\x1F\x7F]/, {
288
+ name: 'control characters',
289
+ invert: true,
290
+ })
291
+ .length(21),
292
+ newEmailAddress: Joi.string()
293
+ .trim(false)
294
+ .email({ minDomainSegments: 1, tlds: false }),
295
+ cancelEmailSecret: Joi.string()
296
+ .trim(false)
297
+ .pattern(/[\x01-\x1F\x7F]/, {
298
+ name: 'control characters',
299
+ invert: true,
300
+ })
301
+ .length(21),
302
+ cancelEmailAddress: Joi.string()
303
+ .trim(false)
304
+ .email({ minDomainSegments: 1, tlds: false }),
305
+ recoverSecret: Joi.string()
306
+ .trim(false)
307
+ .pattern(/[\x01-\x1F\x7F]/, {
308
+ name: 'control characters',
309
+ invert: true,
310
+ })
311
+ .length(10),
312
+ recoverSecretDate: Joi.number(),
313
+ }
314
+ : {};
315
+ const phoneFields = tilmeld.config.userFields.includes('phone')
316
+ ? {
317
+ phone: Joi.string()
318
+ .trim(false)
319
+ .pattern(/^[0-9]+$/, 'numbers'),
320
+ }
321
+ : {};
322
+ Joi.attempt(user.$getValidatable(), Joi.object().keys({
323
+ ...nymphJoiProps,
324
+ ...nameFields,
325
+ ...emailFields,
326
+ ...phoneFields,
327
+ username: Joi.string().trim(false).required(),
328
+ enabled: Joi.boolean().required(),
329
+ avatar: Joi.string()
223
330
  .trim(false)
224
331
  .uri()
225
332
  .pattern(/[\x01-\x1F\x7F]/, {
@@ -227,56 +334,23 @@ exports.default = {
227
334
  invert: true,
228
335
  })
229
336
  .max(1024),
230
- phone: joi_1.default.string()
231
- .trim(false)
232
- .pattern(/^[0-9]+$/, 'numbers'),
233
- group: joi_1.default.object().instance(Group_1.default),
234
- groups: joi_1.default.array().items(joi_1.default.object().instance(Group_1.default)).required(),
235
- abilities: joi_1.default.array().items(joi_1.default.string()
337
+ group: Joi.object().instance(Group),
338
+ groups: Joi.array().items(Joi.object().instance(Group)).required(),
339
+ abilities: Joi.array().items(Joi.string()
236
340
  .pattern(/[\x01-\x1F\x7F]/, {
237
341
  name: 'control characters',
238
342
  invert: true,
239
343
  })
240
344
  .max(256)),
241
- inheritAbilities: joi_1.default.boolean(),
242
- secret: joi_1.default.string()
243
- .trim(false)
244
- .pattern(/[\x01-\x1F\x7F]/, {
245
- name: 'control characters',
246
- invert: true,
247
- })
248
- .length(21),
249
- emailChangeDate: joi_1.default.number(),
250
- newEmailSecret: joi_1.default.string()
345
+ inheritAbilities: Joi.boolean(),
346
+ salt: Joi.string().trim(false),
347
+ password: Joi.string().trim(false).required(),
348
+ revokeTokenDate: Joi.number(),
349
+ totpSecret: Joi.string()
251
350
  .trim(false)
252
- .pattern(/[\x01-\x1F\x7F]/, {
253
- name: 'control characters',
254
- invert: true,
255
- })
256
- .length(21),
257
- newEmailAddress: joi_1.default.string()
258
- .trim(false)
259
- .email({ minDomainSegments: 1, tlds: false }),
260
- cancelEmailSecret: joi_1.default.string()
261
- .trim(false)
262
- .pattern(/[\x01-\x1F\x7F]/, {
263
- name: 'control characters',
264
- invert: true,
265
- })
266
- .length(21),
267
- cancelEmailAddress: joi_1.default.string()
268
- .trim(false)
269
- .email({ minDomainSegments: 1, tlds: false }),
270
- recoverSecret: joi_1.default.string()
271
- .trim(false)
272
- .pattern(/[\x01-\x1F\x7F]/, {
273
- name: 'control characters',
274
- invert: true,
275
- })
276
- .length(10),
277
- recoverSecretDate: joi_1.default.number(),
278
- salt: joi_1.default.string().trim(false),
279
- password: joi_1.default.string().trim(false).required(),
351
+ .min(24)
352
+ .max(40)
353
+ .pattern(/^[A-Z234567]+$/, 'base32 encoded unpadded'),
280
354
  }), 'Invalid User: ');
281
355
  },
282
356
  };
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/conf/defaults.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,6BAA0B;AAC1B,gEAA+B;AAC/B,sEAAoC;AACpC,8CAAsB;AACtB,wCAAuC;AACvC,0CAA+C;AAG/C,mDAA2B;AAC3B,qDAA6B;AAE7B,kBAAe;IACb,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,wBAAwB;IAChC,YAAY,EAAE,WAAW;IACzB,UAAU,EAAE,GAAG;IACf,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,iBAAiB,EAAE,KAAK;IACxB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,EAAE;IACtB,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IACtC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,wBAAwB;IACxC,oBAAoB,EAAE,wBAAwB;IAC9C,oBAAoB,EAAE,wBAAwB;IAC9C,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,OAAO;IACvB,UAAU,EAAE,IAAI;IAChB,mBAAmB,EAAE,UAAU;IAC/B,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,UAAU,EACR,mEAAmE;IACrE,gBAAgB,EACd,2FAA2F;IAC7F,UAAU,EAAE,4BAA4B;IACxC,gBAAgB,EACd,sEAAsE;IACxE,eAAe,EACb,uIAAuI;IACzI,qBAAqB,EAAE,8CAA8C;IACrE,iBAAiB,EAAE,GAAG;IACtB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAC/B,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAChC,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QAED,OAAO,sBAAG,CAAC,IAAI,CACb;YACE,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,cAAc,GAAG,IAAA,aAAM,GAAE;SACrC,EACD,MAAM,EACN,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAChC,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAU,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAChC,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QAED,IAAI;YACF,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;gBACxC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,EAAE;aACnB,CAAC,CAAC;YAEH,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,OAAO,IAAI,CAAC;aACb;YAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;YAEvD,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,YAAY,EAAE;gBACnD,OAAO,IAAI,CAAC;aACb;YAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YAED,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,OAAO,IAAI,CAAC;aACb;YAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACzB;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IACD,gBAAgB,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;IAC5D,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,SAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;oBAC5B,OAAO,EAAE,WAAW,MAAM,CAAC,QAAQ,EAAE;iBACtC;aACF;SACF,CAAC;IACJ,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,IAAI,yBAAK,CACrB,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CACzD,CAAC;QACF,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;gBAC9B,GAAG,OAAO;gBACV,QAAQ,EAAE,cAAI,CAAC,IAAI,CACjB,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAC/B,OAAO,CAAC,QAAQ,IAAI,GAAG,CACxB;gBACD,MAAM,EAAE;oBAEN,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;oBAChC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;oBAE/B,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBAC/B,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;oBACvB,WAAW,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBACjC,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACzB,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBAEzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;wBACxB,CAAC,CAAC;4BACE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ;4BAC7C,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;4BACrC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS;4BAC/C,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ;4BAC7C,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;yBACxC;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,OAAO,CAAC,MAAM;iBAClB;aACF,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,MAAM,CAAC;SACjB;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,uBAAuB,EAAE,IAAI;IAC7B,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;QACxB,aAAG,CAAC,OAAO,CACT,KAAK,CAAC,eAAe,EAAE,EACvB,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAChB,GAAG,qBAAa;YAChB,SAAS,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC9C,OAAO,EAAE,aAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACjC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE;iBAChB,IAAI,CAAC,KAAK,CAAC;iBACX,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBAC5C,QAAQ,EAAE;YACb,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE;iBACf,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;YACb,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE;iBACjB,IAAI,CAAC,KAAK,CAAC;iBACX,GAAG,EAAE;iBACL,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE;iBAChB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;YACjC,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC;YACpC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAI,CAAC;YACjC,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC1B,aAAG,CAAC,MAAM,EAAE;iBACT,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC,CACZ;YACD,cAAc,EAAE,aAAG,CAAC,OAAO,EAAE;YAC7B,gBAAgB,EAAE,aAAG,CAAC,OAAO,EAAE;YAC/B,mBAAmB,EAAE,aAAG,CAAC,OAAO,EAAE;SACnC,CAAC,EACF,iBAAiB,CAClB,CAAC;IACJ,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QACtB,aAAG,CAAC,OAAO,CACT,IAAI,CAAC,eAAe,EAAE,EACtB,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAChB,GAAG,qBAAa;YAChB,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC7C,OAAO,EAAE,aAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACjC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE;iBAChB,IAAI,CAAC,KAAK,CAAC;iBACX,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBAC5C,QAAQ,EAAE;YACb,SAAS,EAAE,aAAG,CAAC,MAAM,EAAE;iBACpB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;YACb,UAAU,EAAE,aAAG,CAAC,MAAM,EAAE;iBACrB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC;YACX,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE;iBACnB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC;YACX,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE;iBACf,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;YACb,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE;iBACjB,IAAI,CAAC,KAAK,CAAC;iBACX,GAAG,EAAE;iBACL,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE;iBAChB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;YACjC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC;YACnC,MAAM,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;YAClE,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAC1B,aAAG,CAAC,MAAM,EAAE;iBACT,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,GAAG,CAAC,GAAG,CAAC,CACZ;YACD,gBAAgB,EAAE,aAAG,CAAC,OAAO,EAAE;YAC/B,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE;iBACjB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,MAAM,CAAC,EAAE,CAAC;YACb,eAAe,EAAE,aAAG,CAAC,MAAM,EAAE;YAC7B,cAAc,EAAE,aAAG,CAAC,MAAM,EAAE;iBACzB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,MAAM,CAAC,EAAE,CAAC;YACb,eAAe,EAAE,aAAG,CAAC,MAAM,EAAE;iBAC1B,IAAI,CAAC,KAAK,CAAC;iBACX,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC/C,iBAAiB,EAAE,aAAG,CAAC,MAAM,EAAE;iBAC5B,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,MAAM,CAAC,EAAE,CAAC;YACb,kBAAkB,EAAE,aAAG,CAAC,MAAM,EAAE;iBAC7B,IAAI,CAAC,KAAK,CAAC;iBACX,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC/C,aAAa,EAAE,aAAG,CAAC,MAAM,EAAE;iBACxB,IAAI,CAAC,KAAK,CAAC;iBACX,OAAO,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC;iBACD,MAAM,CAAC,EAAE,CAAC;YACb,iBAAiB,EAAE,aAAG,CAAC,MAAM,EAAE;YAC/B,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;SAC9C,CAAC,EACF,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACQ,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/conf/defaults.ts"],"names":[],"mappings":"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"}