@vonall/auth 0.4.0 → 0.5.0
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.
- package/CHANGELOG.md +12 -0
- package/dist/index.d.ts +1 -1
- package/dist/messages.d.ts +460 -16
- package/dist/messages.js +4 -14
- package/dist/remote/app_user.remote.d.ts +2 -2
- package/dist/server/service/einladung.service.d.ts +2 -1
- package/dist/server/service/einladung.service.js +2 -2
- package/dist/ui/AdminView.svelte +2 -1
- package/dist/ui/InvitationsTab.svelte +2 -1
- package/dist/ui/LoginForm.svelte +1 -1
- package/dist/ui/ResetPasswordForm.svelte +2 -2
- package/dist/util/signup.d.ts +2 -0
- package/dist/util/signup.js +2 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @vonall/auth
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#16](https://github.com/SebastianvonAllmen/vonall-libs/pull/16) [`b2b45e6`](https://github.com/SebastianvonAllmen/vonall-libs/commit/b2b45e653396341b0023777d0d8de1ddee62f50d) Thanks [@SebastianvonAllmen](https://github.com/SebastianvonAllmen)! - One messages helper: `@vonall/messages` exports `defineMessages({ en, de })`, and every package's `configure…Messages({ locale })` takes the app's locale as is ("de-CH", "en-GB"), the language derived from it. In development, reading a package's strings before configuring them throws. The `Locale` type is gone. `@vonall/auth`: the near-duplicate keys `invalidEmailDot`, `passwordsDontMatchDot` and `passwordTooShortDot` are merged into `invalidEmail`, `passwordsMismatch` and `passwordTooShort`; `inviteIntro` takes the number of days.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`b2b45e6`](https://github.com/SebastianvonAllmen/vonall-libs/commit/b2b45e653396341b0023777d0d8de1ddee62f50d)]:
|
|
12
|
+
- @vonall/messages@0.1.0
|
|
13
|
+
- @vonall/mail@0.2.0
|
|
14
|
+
|
|
3
15
|
## 0.4.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { configureAuthMessages, m, type AuthMessages
|
|
1
|
+
export { configureAuthMessages, m, type AuthMessages } from "./messages.js";
|
|
2
2
|
export { ac, adminRole, roles, userRole } from "./permissions.js";
|
|
3
3
|
export { emailSchema, MIN_PASSWORD_LENGTH, nameSchema, passwordSchema, SIGNUP_MODES, SIGNUP_STATES, type AppUserClient, type EinladungInfo, type OffeneEinladung, type SessionUser, type SignupMode, type SignupState, type UserInsert, type UserSelect, } from "./types.js";
|
|
4
4
|
export { isSessionNotFresh, isStale, reauthPath, SESSION_NOT_FRESH } from "./util/fresh.js";
|
package/dist/messages.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The package's strings, in English and German (Swiss spelling): what the server answers, what the mails say, and
|
|
3
|
-
* (from the UI release on) what the pages show. A Product calls configureAuthMessages once, from a module its root
|
|
4
|
-
* layout and its server wiring import, with its LOCALE and the few words it wants differently; code reads `m()`.
|
|
5
|
-
*/
|
|
6
1
|
export declare const en: {
|
|
7
2
|
needsEinladung: string;
|
|
8
3
|
noMail: string;
|
|
@@ -61,7 +56,6 @@ export declare const en: {
|
|
|
61
56
|
resetLinkNotSent: string;
|
|
62
57
|
resetLinkSent: string;
|
|
63
58
|
resetLinkNotRequested: string;
|
|
64
|
-
invalidEmailDot: string;
|
|
65
59
|
twoFactorTitle: string;
|
|
66
60
|
twoFactorEnterCode: string;
|
|
67
61
|
confirm: string;
|
|
@@ -78,7 +72,6 @@ export declare const en: {
|
|
|
78
72
|
inviteOnly: (app: string) => string;
|
|
79
73
|
alreadyHaveAccount: string;
|
|
80
74
|
repeatPassword: string;
|
|
81
|
-
passwordsDontMatchDot: string;
|
|
82
75
|
needsValidEinladung: string;
|
|
83
76
|
emailInUse: string;
|
|
84
77
|
signupFailed: string;
|
|
@@ -86,7 +79,6 @@ export declare const en: {
|
|
|
86
79
|
resetIntro: string;
|
|
87
80
|
resetNoToken: string;
|
|
88
81
|
resetLinkInvalid: string;
|
|
89
|
-
passwordTooShortDot: (min: number) => string;
|
|
90
82
|
newPassword: string;
|
|
91
83
|
confirmNewPassword: string;
|
|
92
84
|
savePassword: string;
|
|
@@ -192,7 +184,7 @@ export declare const en: {
|
|
|
192
184
|
providerNotLinked: (provider: string) => string;
|
|
193
185
|
providerNotUnlinked: (provider: string) => string;
|
|
194
186
|
inviteSomeone: string;
|
|
195
|
-
inviteIntro: string;
|
|
187
|
+
inviteIntro: (days: number) => string;
|
|
196
188
|
linkWord: string;
|
|
197
189
|
validUntil: (date: string) => string;
|
|
198
190
|
withdrawInvitation: string;
|
|
@@ -238,10 +230,462 @@ export declare const en: {
|
|
|
238
230
|
};
|
|
239
231
|
export type AuthMessages = typeof en;
|
|
240
232
|
export declare const de: AuthMessages;
|
|
241
|
-
export
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
233
|
+
export declare const m: () => {
|
|
234
|
+
needsEinladung: string;
|
|
235
|
+
noMail: string;
|
|
236
|
+
onlyAdminsInvite: string;
|
|
237
|
+
einladungUnbekannt: string;
|
|
238
|
+
einladungAbgelaufen: string;
|
|
239
|
+
einladungAngenommen: string;
|
|
240
|
+
unauthorized: string;
|
|
241
|
+
forbidden: string;
|
|
242
|
+
ownRole: string;
|
|
243
|
+
ownAccount: string;
|
|
244
|
+
passwordsMismatch: string;
|
|
245
|
+
mailFailed: string;
|
|
246
|
+
invalidEmail: string;
|
|
247
|
+
passwordTooShort: (min: number) => string;
|
|
248
|
+
nameRequired: string;
|
|
249
|
+
nameTooLong: (max: number) => string;
|
|
250
|
+
hello: (name: string) => string;
|
|
251
|
+
resetSubject: (app: string) => string;
|
|
252
|
+
resetText: (name: string, app: string, link: string) => string;
|
|
253
|
+
resetButton: string;
|
|
254
|
+
resetBody: (app: string) => string;
|
|
255
|
+
resetNotYou: string;
|
|
256
|
+
verifySubject: (app: string) => string;
|
|
257
|
+
verifyText: (name: string, app: string, link: string) => string;
|
|
258
|
+
verifyButton: string;
|
|
259
|
+
verifyBody: (app: string) => string;
|
|
260
|
+
verifyNotYou: string;
|
|
261
|
+
einladungSubject: (inviter: string, app: string) => string;
|
|
262
|
+
einladungText: (inviter: string, app: string, link: string, validUntil: string) => string;
|
|
263
|
+
einladungTitle: (app: string) => string;
|
|
264
|
+
einladungButton: string;
|
|
265
|
+
einladungHello: string;
|
|
266
|
+
einladungBody: (inviter: string, app: string) => string;
|
|
267
|
+
einladungValid: (validUntil: string) => string;
|
|
268
|
+
welcomeBack: string;
|
|
269
|
+
logInTo: (app: string) => string;
|
|
270
|
+
forgotPassword: string;
|
|
271
|
+
forgotIntro: string;
|
|
272
|
+
email: string;
|
|
273
|
+
emailPlaceholder: string;
|
|
274
|
+
password: string;
|
|
275
|
+
sendTheLink: string;
|
|
276
|
+
backToLogin: string;
|
|
277
|
+
orWithEmail: string;
|
|
278
|
+
logIn: string;
|
|
279
|
+
noAccountYet: string;
|
|
280
|
+
signUp: string;
|
|
281
|
+
continueWith: (provider: string) => string;
|
|
282
|
+
accountNotLinked: string;
|
|
283
|
+
noNewAccountInvite: string;
|
|
284
|
+
noNewAccountOpen: string;
|
|
285
|
+
loginTooOld: string;
|
|
286
|
+
confirmEmailFirst: string;
|
|
287
|
+
loginFailed: string;
|
|
288
|
+
resetLinkNotSent: string;
|
|
289
|
+
resetLinkSent: string;
|
|
290
|
+
resetLinkNotRequested: string;
|
|
291
|
+
twoFactorTitle: string;
|
|
292
|
+
twoFactorEnterCode: string;
|
|
293
|
+
confirm: string;
|
|
294
|
+
cancel: string;
|
|
295
|
+
invalidCode: string;
|
|
296
|
+
wrongCode: string;
|
|
297
|
+
codeNotVerified: string;
|
|
298
|
+
createAccount: string;
|
|
299
|
+
invitesYouTo: (inviter: string, app: string) => string;
|
|
300
|
+
signUpWith: (providers: string) => string;
|
|
301
|
+
or: string;
|
|
302
|
+
almostDone: (email: string, app: string) => string;
|
|
303
|
+
accountReady: string;
|
|
304
|
+
inviteOnly: (app: string) => string;
|
|
305
|
+
alreadyHaveAccount: string;
|
|
306
|
+
repeatPassword: string;
|
|
307
|
+
needsValidEinladung: string;
|
|
308
|
+
emailInUse: string;
|
|
309
|
+
signupFailed: string;
|
|
310
|
+
resetTitle: string;
|
|
311
|
+
resetIntro: string;
|
|
312
|
+
resetNoToken: string;
|
|
313
|
+
resetLinkInvalid: string;
|
|
314
|
+
newPassword: string;
|
|
315
|
+
confirmNewPassword: string;
|
|
316
|
+
savePassword: string;
|
|
317
|
+
passwordNotReset: string;
|
|
318
|
+
passwordWasReset: string;
|
|
319
|
+
somethingWentWrong: string;
|
|
320
|
+
invitationTitle: string;
|
|
321
|
+
invitationTo: (app: string) => string;
|
|
322
|
+
invitesYou: (inviter: string) => string;
|
|
323
|
+
askForNewLink: string;
|
|
324
|
+
toStartPage: string;
|
|
325
|
+
alreadyHaveAccountNoInvite: string;
|
|
326
|
+
openApp: (app: string) => string;
|
|
327
|
+
iHaveAnAccount: string;
|
|
328
|
+
settingsTitle: string;
|
|
329
|
+
backToOverview: string;
|
|
330
|
+
user: string;
|
|
331
|
+
profile: string;
|
|
332
|
+
memberSince: (since: string) => string;
|
|
333
|
+
tabProfile: string;
|
|
334
|
+
tabProfileHint: string;
|
|
335
|
+
tabSecurity: string;
|
|
336
|
+
tabSecurityHint: string;
|
|
337
|
+
tabSessions: string;
|
|
338
|
+
tabSessionsHint: string;
|
|
339
|
+
tabLinks: string;
|
|
340
|
+
tabLinksHint: string;
|
|
341
|
+
tabInvitations: string;
|
|
342
|
+
tabInvitationsHint: string;
|
|
343
|
+
tabDeletion: string;
|
|
344
|
+
tabDeletionHint: string;
|
|
345
|
+
name: string;
|
|
346
|
+
yourName: string;
|
|
347
|
+
save: string;
|
|
348
|
+
saving: string;
|
|
349
|
+
profileUpdated: string;
|
|
350
|
+
profileNotUpdated: string;
|
|
351
|
+
loadingSecurity: string;
|
|
352
|
+
changePassword: string;
|
|
353
|
+
changing: string;
|
|
354
|
+
passwordChanged: string;
|
|
355
|
+
passwordNotChanged: string;
|
|
356
|
+
currentPassword: string;
|
|
357
|
+
confirmNewPasswordShort: string;
|
|
358
|
+
setPassword: string;
|
|
359
|
+
setPasswordIntro: string;
|
|
360
|
+
setPasswordButton: string;
|
|
361
|
+
passwordSet: string;
|
|
362
|
+
passwordNotSet: string;
|
|
363
|
+
twoFactorHeading: string;
|
|
364
|
+
twoFactorIntro: string;
|
|
365
|
+
on: string;
|
|
366
|
+
off: string;
|
|
367
|
+
twoFactorProtects: string;
|
|
368
|
+
yourPassword: string;
|
|
369
|
+
turningOff: string;
|
|
370
|
+
turnOff: string;
|
|
371
|
+
turnOff2fa: string;
|
|
372
|
+
scanQr: string;
|
|
373
|
+
qrAlt: string;
|
|
374
|
+
scanWithApp: string;
|
|
375
|
+
saveBackupCodes: string;
|
|
376
|
+
backupCodesIntro: string;
|
|
377
|
+
copyBackupCodes: string;
|
|
378
|
+
backupCodesCopied: string;
|
|
379
|
+
confirmSetup: string;
|
|
380
|
+
enterCodeFromApp: string;
|
|
381
|
+
checking: string;
|
|
382
|
+
turnOn2fa: string;
|
|
383
|
+
setup2faIntro: string;
|
|
384
|
+
starting: string;
|
|
385
|
+
start2faSetup: string;
|
|
386
|
+
enterPasswordOn: string;
|
|
387
|
+
enterPasswordOff: string;
|
|
388
|
+
twoFactorNotOn: string;
|
|
389
|
+
twoFactorNotOff: string;
|
|
390
|
+
twoFactorIsOn: string;
|
|
391
|
+
twoFactorIsOff: string;
|
|
392
|
+
setupNotStarted: string;
|
|
393
|
+
activeSessions: string;
|
|
394
|
+
devicesLoggedIn: string;
|
|
395
|
+
endAllOthers: string;
|
|
396
|
+
noActiveSessions: string;
|
|
397
|
+
unknownBrowser: string;
|
|
398
|
+
thisSession: string;
|
|
399
|
+
noIpAddress: string;
|
|
400
|
+
lastActive: (when: string) => string;
|
|
401
|
+
unknown: string;
|
|
402
|
+
sessionEnded: string;
|
|
403
|
+
sessionNotEnded: string;
|
|
404
|
+
otherSessionsEnded: string;
|
|
405
|
+
otherSessionsNotEnded: string;
|
|
406
|
+
linkedAccounts: string;
|
|
407
|
+
linkedIntro: string;
|
|
408
|
+
linked: string;
|
|
409
|
+
notLinked: string;
|
|
410
|
+
unlink: string;
|
|
411
|
+
link: string;
|
|
412
|
+
noSocialLogin: string;
|
|
413
|
+
autoLinkNote: string;
|
|
414
|
+
providerLinked: (provider: string) => string;
|
|
415
|
+
providerUnlinked: (provider: string) => string;
|
|
416
|
+
providerNotLinked: (provider: string) => string;
|
|
417
|
+
providerNotUnlinked: (provider: string) => string;
|
|
418
|
+
inviteSomeone: string;
|
|
419
|
+
inviteIntro: (days: number) => string;
|
|
420
|
+
linkWord: string;
|
|
421
|
+
validUntil: (date: string) => string;
|
|
422
|
+
withdrawInvitation: string;
|
|
423
|
+
invitationWithdrawn: string;
|
|
424
|
+
invitationNotWithdrawn: string;
|
|
425
|
+
emailOptional: string;
|
|
426
|
+
creating: string;
|
|
427
|
+
createInvitation: string;
|
|
428
|
+
copy: string;
|
|
429
|
+
share: string;
|
|
430
|
+
linkShownOnce: string;
|
|
431
|
+
invitationText: (app: string, link: string) => string;
|
|
432
|
+
shareYourself: (error: string) => string;
|
|
433
|
+
invitationSentTo: (email: string) => string;
|
|
434
|
+
invitationNotCreated: string;
|
|
435
|
+
linkCopied: string;
|
|
436
|
+
copyLinkFailed: string;
|
|
437
|
+
deleteForGood: string;
|
|
438
|
+
cannotBeUndone: string;
|
|
439
|
+
deletionText: string;
|
|
440
|
+
deletionAgents: string;
|
|
441
|
+
deletionNoLogin: string;
|
|
442
|
+
typeToContinue: string;
|
|
443
|
+
type: string;
|
|
444
|
+
deleteWord: string;
|
|
445
|
+
deleting: string;
|
|
446
|
+
deletePermanently: string;
|
|
447
|
+
accountDeleted: string;
|
|
448
|
+
accountNotDeleted: string;
|
|
449
|
+
administration: string;
|
|
450
|
+
accounts: string;
|
|
451
|
+
since: (date: string) => string;
|
|
452
|
+
you: string;
|
|
453
|
+
roleOf: (name: string) => string;
|
|
454
|
+
roleChanged: string;
|
|
455
|
+
deleteAccountOf: (name: string) => string;
|
|
456
|
+
confirmDeleteAccount: (name: string) => string;
|
|
457
|
+
accountDeletedAdmin: string;
|
|
458
|
+
invitations: string;
|
|
459
|
+
noOpenInvitations: string;
|
|
460
|
+
by: (inviter: string) => string;
|
|
461
|
+
didntWork: string;
|
|
462
|
+
}, configureAuthMessages: import("@vonall/messages").Configure<{
|
|
463
|
+
needsEinladung: string;
|
|
464
|
+
noMail: string;
|
|
465
|
+
onlyAdminsInvite: string;
|
|
466
|
+
einladungUnbekannt: string;
|
|
467
|
+
einladungAbgelaufen: string;
|
|
468
|
+
einladungAngenommen: string;
|
|
469
|
+
unauthorized: string;
|
|
470
|
+
forbidden: string;
|
|
471
|
+
ownRole: string;
|
|
472
|
+
ownAccount: string;
|
|
473
|
+
passwordsMismatch: string;
|
|
474
|
+
mailFailed: string;
|
|
475
|
+
invalidEmail: string;
|
|
476
|
+
passwordTooShort: (min: number) => string;
|
|
477
|
+
nameRequired: string;
|
|
478
|
+
nameTooLong: (max: number) => string;
|
|
479
|
+
hello: (name: string) => string;
|
|
480
|
+
resetSubject: (app: string) => string;
|
|
481
|
+
resetText: (name: string, app: string, link: string) => string;
|
|
482
|
+
resetButton: string;
|
|
483
|
+
resetBody: (app: string) => string;
|
|
484
|
+
resetNotYou: string;
|
|
485
|
+
verifySubject: (app: string) => string;
|
|
486
|
+
verifyText: (name: string, app: string, link: string) => string;
|
|
487
|
+
verifyButton: string;
|
|
488
|
+
verifyBody: (app: string) => string;
|
|
489
|
+
verifyNotYou: string;
|
|
490
|
+
einladungSubject: (inviter: string, app: string) => string;
|
|
491
|
+
einladungText: (inviter: string, app: string, link: string, validUntil: string) => string;
|
|
492
|
+
einladungTitle: (app: string) => string;
|
|
493
|
+
einladungButton: string;
|
|
494
|
+
einladungHello: string;
|
|
495
|
+
einladungBody: (inviter: string, app: string) => string;
|
|
496
|
+
einladungValid: (validUntil: string) => string;
|
|
497
|
+
welcomeBack: string;
|
|
498
|
+
logInTo: (app: string) => string;
|
|
499
|
+
forgotPassword: string;
|
|
500
|
+
forgotIntro: string;
|
|
501
|
+
email: string;
|
|
502
|
+
emailPlaceholder: string;
|
|
503
|
+
password: string;
|
|
504
|
+
sendTheLink: string;
|
|
505
|
+
backToLogin: string;
|
|
506
|
+
orWithEmail: string;
|
|
507
|
+
logIn: string;
|
|
508
|
+
noAccountYet: string;
|
|
509
|
+
signUp: string;
|
|
510
|
+
continueWith: (provider: string) => string;
|
|
511
|
+
accountNotLinked: string;
|
|
512
|
+
noNewAccountInvite: string;
|
|
513
|
+
noNewAccountOpen: string;
|
|
514
|
+
loginTooOld: string;
|
|
515
|
+
confirmEmailFirst: string;
|
|
516
|
+
loginFailed: string;
|
|
517
|
+
resetLinkNotSent: string;
|
|
518
|
+
resetLinkSent: string;
|
|
519
|
+
resetLinkNotRequested: string;
|
|
520
|
+
twoFactorTitle: string;
|
|
521
|
+
twoFactorEnterCode: string;
|
|
522
|
+
confirm: string;
|
|
523
|
+
cancel: string;
|
|
524
|
+
invalidCode: string;
|
|
525
|
+
wrongCode: string;
|
|
526
|
+
codeNotVerified: string;
|
|
527
|
+
createAccount: string;
|
|
528
|
+
invitesYouTo: (inviter: string, app: string) => string;
|
|
529
|
+
signUpWith: (providers: string) => string;
|
|
530
|
+
or: string;
|
|
531
|
+
almostDone: (email: string, app: string) => string;
|
|
532
|
+
accountReady: string;
|
|
533
|
+
inviteOnly: (app: string) => string;
|
|
534
|
+
alreadyHaveAccount: string;
|
|
535
|
+
repeatPassword: string;
|
|
536
|
+
needsValidEinladung: string;
|
|
537
|
+
emailInUse: string;
|
|
538
|
+
signupFailed: string;
|
|
539
|
+
resetTitle: string;
|
|
540
|
+
resetIntro: string;
|
|
541
|
+
resetNoToken: string;
|
|
542
|
+
resetLinkInvalid: string;
|
|
543
|
+
newPassword: string;
|
|
544
|
+
confirmNewPassword: string;
|
|
545
|
+
savePassword: string;
|
|
546
|
+
passwordNotReset: string;
|
|
547
|
+
passwordWasReset: string;
|
|
548
|
+
somethingWentWrong: string;
|
|
549
|
+
invitationTitle: string;
|
|
550
|
+
invitationTo: (app: string) => string;
|
|
551
|
+
invitesYou: (inviter: string) => string;
|
|
552
|
+
askForNewLink: string;
|
|
553
|
+
toStartPage: string;
|
|
554
|
+
alreadyHaveAccountNoInvite: string;
|
|
555
|
+
openApp: (app: string) => string;
|
|
556
|
+
iHaveAnAccount: string;
|
|
557
|
+
settingsTitle: string;
|
|
558
|
+
backToOverview: string;
|
|
559
|
+
user: string;
|
|
560
|
+
profile: string;
|
|
561
|
+
memberSince: (since: string) => string;
|
|
562
|
+
tabProfile: string;
|
|
563
|
+
tabProfileHint: string;
|
|
564
|
+
tabSecurity: string;
|
|
565
|
+
tabSecurityHint: string;
|
|
566
|
+
tabSessions: string;
|
|
567
|
+
tabSessionsHint: string;
|
|
568
|
+
tabLinks: string;
|
|
569
|
+
tabLinksHint: string;
|
|
570
|
+
tabInvitations: string;
|
|
571
|
+
tabInvitationsHint: string;
|
|
572
|
+
tabDeletion: string;
|
|
573
|
+
tabDeletionHint: string;
|
|
574
|
+
name: string;
|
|
575
|
+
yourName: string;
|
|
576
|
+
save: string;
|
|
577
|
+
saving: string;
|
|
578
|
+
profileUpdated: string;
|
|
579
|
+
profileNotUpdated: string;
|
|
580
|
+
loadingSecurity: string;
|
|
581
|
+
changePassword: string;
|
|
582
|
+
changing: string;
|
|
583
|
+
passwordChanged: string;
|
|
584
|
+
passwordNotChanged: string;
|
|
585
|
+
currentPassword: string;
|
|
586
|
+
confirmNewPasswordShort: string;
|
|
587
|
+
setPassword: string;
|
|
588
|
+
setPasswordIntro: string;
|
|
589
|
+
setPasswordButton: string;
|
|
590
|
+
passwordSet: string;
|
|
591
|
+
passwordNotSet: string;
|
|
592
|
+
twoFactorHeading: string;
|
|
593
|
+
twoFactorIntro: string;
|
|
594
|
+
on: string;
|
|
595
|
+
off: string;
|
|
596
|
+
twoFactorProtects: string;
|
|
597
|
+
yourPassword: string;
|
|
598
|
+
turningOff: string;
|
|
599
|
+
turnOff: string;
|
|
600
|
+
turnOff2fa: string;
|
|
601
|
+
scanQr: string;
|
|
602
|
+
qrAlt: string;
|
|
603
|
+
scanWithApp: string;
|
|
604
|
+
saveBackupCodes: string;
|
|
605
|
+
backupCodesIntro: string;
|
|
606
|
+
copyBackupCodes: string;
|
|
607
|
+
backupCodesCopied: string;
|
|
608
|
+
confirmSetup: string;
|
|
609
|
+
enterCodeFromApp: string;
|
|
610
|
+
checking: string;
|
|
611
|
+
turnOn2fa: string;
|
|
612
|
+
setup2faIntro: string;
|
|
613
|
+
starting: string;
|
|
614
|
+
start2faSetup: string;
|
|
615
|
+
enterPasswordOn: string;
|
|
616
|
+
enterPasswordOff: string;
|
|
617
|
+
twoFactorNotOn: string;
|
|
618
|
+
twoFactorNotOff: string;
|
|
619
|
+
twoFactorIsOn: string;
|
|
620
|
+
twoFactorIsOff: string;
|
|
621
|
+
setupNotStarted: string;
|
|
622
|
+
activeSessions: string;
|
|
623
|
+
devicesLoggedIn: string;
|
|
624
|
+
endAllOthers: string;
|
|
625
|
+
noActiveSessions: string;
|
|
626
|
+
unknownBrowser: string;
|
|
627
|
+
thisSession: string;
|
|
628
|
+
noIpAddress: string;
|
|
629
|
+
lastActive: (when: string) => string;
|
|
630
|
+
unknown: string;
|
|
631
|
+
sessionEnded: string;
|
|
632
|
+
sessionNotEnded: string;
|
|
633
|
+
otherSessionsEnded: string;
|
|
634
|
+
otherSessionsNotEnded: string;
|
|
635
|
+
linkedAccounts: string;
|
|
636
|
+
linkedIntro: string;
|
|
637
|
+
linked: string;
|
|
638
|
+
notLinked: string;
|
|
639
|
+
unlink: string;
|
|
640
|
+
link: string;
|
|
641
|
+
noSocialLogin: string;
|
|
642
|
+
autoLinkNote: string;
|
|
643
|
+
providerLinked: (provider: string) => string;
|
|
644
|
+
providerUnlinked: (provider: string) => string;
|
|
645
|
+
providerNotLinked: (provider: string) => string;
|
|
646
|
+
providerNotUnlinked: (provider: string) => string;
|
|
647
|
+
inviteSomeone: string;
|
|
648
|
+
inviteIntro: (days: number) => string;
|
|
649
|
+
linkWord: string;
|
|
650
|
+
validUntil: (date: string) => string;
|
|
651
|
+
withdrawInvitation: string;
|
|
652
|
+
invitationWithdrawn: string;
|
|
653
|
+
invitationNotWithdrawn: string;
|
|
654
|
+
emailOptional: string;
|
|
655
|
+
creating: string;
|
|
656
|
+
createInvitation: string;
|
|
657
|
+
copy: string;
|
|
658
|
+
share: string;
|
|
659
|
+
linkShownOnce: string;
|
|
660
|
+
invitationText: (app: string, link: string) => string;
|
|
661
|
+
shareYourself: (error: string) => string;
|
|
662
|
+
invitationSentTo: (email: string) => string;
|
|
663
|
+
invitationNotCreated: string;
|
|
664
|
+
linkCopied: string;
|
|
665
|
+
copyLinkFailed: string;
|
|
666
|
+
deleteForGood: string;
|
|
667
|
+
cannotBeUndone: string;
|
|
668
|
+
deletionText: string;
|
|
669
|
+
deletionAgents: string;
|
|
670
|
+
deletionNoLogin: string;
|
|
671
|
+
typeToContinue: string;
|
|
672
|
+
type: string;
|
|
673
|
+
deleteWord: string;
|
|
674
|
+
deleting: string;
|
|
675
|
+
deletePermanently: string;
|
|
676
|
+
accountDeleted: string;
|
|
677
|
+
accountNotDeleted: string;
|
|
678
|
+
administration: string;
|
|
679
|
+
accounts: string;
|
|
680
|
+
since: (date: string) => string;
|
|
681
|
+
you: string;
|
|
682
|
+
roleOf: (name: string) => string;
|
|
683
|
+
roleChanged: string;
|
|
684
|
+
deleteAccountOf: (name: string) => string;
|
|
685
|
+
confirmDeleteAccount: (name: string) => string;
|
|
686
|
+
accountDeletedAdmin: string;
|
|
687
|
+
invitations: string;
|
|
688
|
+
noOpenInvitations: string;
|
|
689
|
+
by: (inviter: string) => string;
|
|
690
|
+
didntWork: string;
|
|
691
|
+
}>;
|
package/dist/messages.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* (from the UI release on) what the pages show. A Product calls configureAuthMessages once, from a module its root
|
|
4
4
|
* layout and its server wiring import, with its LOCALE and the few words it wants differently; code reads `m()`.
|
|
5
5
|
*/
|
|
6
|
+
import { defineMessages } from "@vonall/messages";
|
|
6
7
|
export const en = {
|
|
7
8
|
// Signup
|
|
8
9
|
needsEinladung: "Signing up needs an invitation",
|
|
@@ -67,7 +68,6 @@ export const en = {
|
|
|
67
68
|
resetLinkNotSent: "The reset link could not be sent.",
|
|
68
69
|
resetLinkSent: "If an account with this email address exists, a link to reset the password has been sent.",
|
|
69
70
|
resetLinkNotRequested: "The reset link could not be requested.",
|
|
70
|
-
invalidEmailDot: "Please enter a valid email address.",
|
|
71
71
|
// Two-factor on login
|
|
72
72
|
twoFactorTitle: "Two-factor authentication",
|
|
73
73
|
twoFactorEnterCode: "Enter the 6-digit code from your authenticator app.",
|
|
@@ -86,7 +86,6 @@ export const en = {
|
|
|
86
86
|
inviteOnly: (app) => `${app} is invite only. Ask someone who already has an account for an invitation link and open it on this device.`,
|
|
87
87
|
alreadyHaveAccount: "Already have an account?",
|
|
88
88
|
repeatPassword: "Repeat the password",
|
|
89
|
-
passwordsDontMatchDot: "The passwords don't match.",
|
|
90
89
|
needsValidEinladung: "Signing up needs a valid invitation.",
|
|
91
90
|
emailInUse: "This email address is already in use.",
|
|
92
91
|
signupFailed: "Signing up failed.",
|
|
@@ -95,7 +94,6 @@ export const en = {
|
|
|
95
94
|
resetIntro: "Enter your new password",
|
|
96
95
|
resetNoToken: "No valid token found. Please request a new link to reset your password.",
|
|
97
96
|
resetLinkInvalid: "The reset link is invalid or incomplete.",
|
|
98
|
-
passwordTooShortDot: (min) => `The password needs at least ${min} characters.`,
|
|
99
97
|
newPassword: "New password",
|
|
100
98
|
confirmNewPassword: "Confirm the new password",
|
|
101
99
|
savePassword: "Save the password",
|
|
@@ -207,7 +205,7 @@ export const en = {
|
|
|
207
205
|
providerNotUnlinked: (provider) => `${provider} could not be unlinked`,
|
|
208
206
|
// Invitations
|
|
209
207
|
inviteSomeone: "Invite someone",
|
|
210
|
-
inviteIntro:
|
|
208
|
+
inviteIntro: (days) => `An invitation link works once and for ${days} days. Whoever opens it can create an account.`,
|
|
211
209
|
linkWord: "Link",
|
|
212
210
|
validUntil: (date) => `valid until ${date}`,
|
|
213
211
|
withdrawInvitation: "Withdraw invitation",
|
|
@@ -311,7 +309,6 @@ export const de = {
|
|
|
311
309
|
resetLinkNotSent: "Der Link zum Zurücksetzen konnte nicht verschickt werden.",
|
|
312
310
|
resetLinkSent: "Wenn es ein Konto mit dieser E-Mail-Adresse gibt, ist ein Link zum Zurücksetzen des Passworts unterwegs.",
|
|
313
311
|
resetLinkNotRequested: "Der Link zum Zurücksetzen konnte nicht angefordert werden.",
|
|
314
|
-
invalidEmailDot: "Bitte gib eine gültige E-Mail-Adresse ein.",
|
|
315
312
|
twoFactorTitle: "Zwei-Faktor-Authentisierung",
|
|
316
313
|
twoFactorEnterCode: "Gib den 6-stelligen Code aus deiner Authenticator-App ein.",
|
|
317
314
|
confirm: "Bestätigen",
|
|
@@ -328,7 +325,6 @@ export const de = {
|
|
|
328
325
|
inviteOnly: (app) => `${app} gibt es nur auf Einladung. Frag jemanden, der schon ein Konto hat, nach einem Einladungslink und öffne ihn auf diesem Gerät.`,
|
|
329
326
|
alreadyHaveAccount: "Schon ein Konto?",
|
|
330
327
|
repeatPassword: "Passwort wiederholen",
|
|
331
|
-
passwordsDontMatchDot: "Die Passwörter stimmen nicht überein.",
|
|
332
328
|
needsValidEinladung: "Zum Registrieren braucht es eine gültige Einladung.",
|
|
333
329
|
emailInUse: "Diese E-Mail-Adresse wird schon verwendet.",
|
|
334
330
|
signupFailed: "Die Registrierung hat nicht geklappt.",
|
|
@@ -336,7 +332,6 @@ export const de = {
|
|
|
336
332
|
resetIntro: "Gib dein neues Passwort ein",
|
|
337
333
|
resetNoToken: "Kein gültiger Link. Bitte fordere einen neuen Link zum Zurücksetzen an.",
|
|
338
334
|
resetLinkInvalid: "Der Link zum Zurücksetzen ist ungültig oder unvollständig.",
|
|
339
|
-
passwordTooShortDot: (min) => `Das Passwort braucht mindestens ${min} Zeichen.`,
|
|
340
335
|
newPassword: "Neues Passwort",
|
|
341
336
|
confirmNewPassword: "Neues Passwort bestätigen",
|
|
342
337
|
savePassword: "Passwort speichern",
|
|
@@ -442,7 +437,7 @@ export const de = {
|
|
|
442
437
|
providerNotLinked: (provider) => `${provider} konnte nicht verknüpft werden`,
|
|
443
438
|
providerNotUnlinked: (provider) => `${provider} konnte nicht getrennt werden`,
|
|
444
439
|
inviteSomeone: "Jemanden einladen",
|
|
445
|
-
inviteIntro:
|
|
440
|
+
inviteIntro: (days) => `Ein Einladungslink funktioniert einmal und ${days} Tage lang. Wer ihn öffnet, kann ein Konto erstellen.`,
|
|
446
441
|
linkWord: "Link",
|
|
447
442
|
validUntil: (date) => `gültig bis ${date}`,
|
|
448
443
|
withdrawInvitation: "Einladung zurückziehen",
|
|
@@ -486,9 +481,4 @@ export const de = {
|
|
|
486
481
|
by: (inviter) => `von ${inviter}`,
|
|
487
482
|
didntWork: "Das hat nicht geklappt.",
|
|
488
483
|
};
|
|
489
|
-
|
|
490
|
-
export function configureAuthMessages({ locale, overrides }) {
|
|
491
|
-
current = { ...(locale === "de" ? de : en), ...overrides };
|
|
492
|
-
}
|
|
493
|
-
/** The configured messages. */
|
|
494
|
-
export const m = () => current;
|
|
484
|
+
export const { m, configure: configureAuthMessages } = defineMessages({ en, de });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** The Admin option: every account. */
|
|
2
2
|
export declare const getAllUsers: import("$app/server").RemoteQueryFunction<void, {
|
|
3
|
-
id: string;
|
|
4
|
-
name: string;
|
|
5
3
|
email: string;
|
|
4
|
+
name: string;
|
|
5
|
+
id: string;
|
|
6
6
|
image: string | null;
|
|
7
7
|
emailVerified: boolean;
|
|
8
8
|
createdAt: Date;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Result } from "neverthrow";
|
|
2
2
|
import type { EinladungInfo, SignupMode, SignupState } from "../../types.js";
|
|
3
|
-
|
|
3
|
+
import { EINLADUNG_GUELTIG_TAGE } from "../../util/signup.js";
|
|
4
|
+
export { EINLADUNG_GUELTIG_TAGE };
|
|
4
5
|
/** The cookie that carries an Einladung's token from its link through signup (email, Google or GitHub). */
|
|
5
6
|
export declare const EINLADUNG_COOKIE = "einladung";
|
|
6
7
|
export type EinladungError = {
|
|
@@ -8,8 +8,8 @@ import { m } from "../../messages.js";
|
|
|
8
8
|
import { registry } from "../registry.js";
|
|
9
9
|
import { EinladungRepo } from "../repositories/EinladungRepo.js";
|
|
10
10
|
import { UserRepo } from "../repositories/UserRepo.js";
|
|
11
|
-
import { signupState } from "../../util/signup.js";
|
|
12
|
-
export
|
|
11
|
+
import { EINLADUNG_GUELTIG_TAGE, signupState } from "../../util/signup.js";
|
|
12
|
+
export { EINLADUNG_GUELTIG_TAGE };
|
|
13
13
|
/** The cookie that carries an Einladung's token from its link through signup (email, Google or GitHub). */
|
|
14
14
|
export const EINLADUNG_COOKIE = "einladung";
|
|
15
15
|
const hash = (token) => createHash("sha256").update(token).digest("hex");
|
package/dist/ui/AdminView.svelte
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Trash2, X } from "@lucide/svelte";
|
|
3
3
|
import { toast } from "svelte-sonner";
|
|
4
4
|
import { m } from "../messages.js";
|
|
5
|
+
import { EINLADUNG_GUELTIG_TAGE } from "../util/signup.js";
|
|
5
6
|
import { deleteUser, getAllUsers, setUserRole } from "../remote/app_user.remote.js";
|
|
6
7
|
import { adminWithdrawEinladung, getAlleEinladungen } from "../remote/einladung.remote.js";
|
|
7
8
|
import { authUi } from "./context.js";
|
|
@@ -68,7 +69,7 @@
|
|
|
68
69
|
|
|
69
70
|
<section class="panel grid gap-3 p-5">
|
|
70
71
|
<span class="section-kicker">{m().invitations}</span>
|
|
71
|
-
<p class="text-sm text-muted-foreground">{m().inviteIntro}</p>
|
|
72
|
+
<p class="text-sm text-muted-foreground">{m().inviteIntro(EINLADUNG_GUELTIG_TAGE)}</p>
|
|
72
73
|
<EinladungErstellen />
|
|
73
74
|
{#if einladungen.length === 0}
|
|
74
75
|
<p class="text-sm text-muted-foreground">{m().noOpenInvitations}</p>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { toast } from "svelte-sonner";
|
|
4
4
|
import * as Tabs from "../components/ui/tabs/index.js";
|
|
5
5
|
import { m } from "../messages.js";
|
|
6
|
+
import { EINLADUNG_GUELTIG_TAGE } from "../util/signup.js";
|
|
6
7
|
import { getOffeneEinladungen, withdrawEinladung } from "../remote/einladung.remote.js";
|
|
7
8
|
import { authUi } from "./context.js";
|
|
8
9
|
import EinladungErstellen from "./EinladungErstellen.svelte";
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
<Tabs.Content value="invitations" class="panel mt-6 grid gap-4 p-6 md:p-8">
|
|
27
28
|
<div class="space-y-1">
|
|
28
29
|
<h3 class="text-lg font-medium">{m().inviteSomeone}</h3>
|
|
29
|
-
<p class="text-sm text-muted-foreground">{m().inviteIntro}</p>
|
|
30
|
+
<p class="text-sm text-muted-foreground">{m().inviteIntro(EINLADUNG_GUELTIG_TAGE)}</p>
|
|
30
31
|
</div>
|
|
31
32
|
|
|
32
33
|
<EinladungErstellen />
|
package/dist/ui/LoginForm.svelte
CHANGED
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
async function requestPasswordReset(e: SubmitEvent) {
|
|
55
55
|
e.preventDefault();
|
|
56
56
|
if (!forgotPasswordEmail || !forgotPasswordEmail.includes("@")) {
|
|
57
|
-
toast.error(m().
|
|
57
|
+
toast.error(m().invalidEmail);
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
sendingResetLink = true;
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
if (password.length < MIN_PASSWORD_LENGTH) {
|
|
33
|
-
toast.error(m().
|
|
33
|
+
toast.error(m().passwordTooShort(MIN_PASSWORD_LENGTH));
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
if (password !== confirmPassword) {
|
|
37
|
-
toast.error(m().
|
|
37
|
+
toast.error(m().passwordsMismatch);
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
40
|
loading = true;
|
package/dist/util/signup.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { SignupMode, SignupState } from "../types.js";
|
|
2
|
+
/** How long an Einladung's link works. */
|
|
3
|
+
export declare const EINLADUNG_GUELTIG_TAGE = 14;
|
|
2
4
|
/** Whether a user is an admin. Works without the admin option too: the user then has no role and nobody is. */
|
|
3
5
|
export declare function isAdmin(user: object | null | undefined): boolean;
|
|
4
6
|
/** Whether a user may create Einladungen in this signup mode. */
|
package/dist/util/signup.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** How long an Einladung's link works. */
|
|
2
|
+
export const EINLADUNG_GUELTIG_TAGE = 14;
|
|
1
3
|
/** Whether a user is an admin. Works without the admin option too: the user then has no role and nobody is. */
|
|
2
4
|
export function isAdmin(user) {
|
|
3
5
|
return Boolean(user && "role" in user && user.role === "admin");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonall/auth",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Accounts for a Web App Factory Product: better-auth with the hooks, the protected helpers, Einladungen, Konto, the auth pages and the settings; Admin as an option",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -102,7 +102,8 @@
|
|
|
102
102
|
"tailwind-merge": "^3.7.0",
|
|
103
103
|
"tailwind-variants": "^3.3.1",
|
|
104
104
|
"uqr": "^0.1.3",
|
|
105
|
-
"@vonall/
|
|
105
|
+
"@vonall/messages": "^0.1.0",
|
|
106
|
+
"@vonall/mail": "^0.2.0"
|
|
106
107
|
},
|
|
107
108
|
"scripts": {
|
|
108
109
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|