@bitblit/ratchet-warden-server 5.1.118 → 5.1.122-alpha

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 (36) hide show
  1. package/lib/server/provider/warden-default-user-decoration-provider.js +3 -1
  2. package/lib/server/provider/warden-default-user-decoration-provider.js.map +1 -1
  3. package/lib/server/provider/warden-dynamo-storage-provider-options.d.ts +7 -0
  4. package/lib/server/provider/warden-dynamo-storage-provider-options.js +7 -0
  5. package/lib/server/provider/warden-dynamo-storage-provider-options.js.map +1 -0
  6. package/lib/server/provider/warden-dynamo-storage-provider.d.ts +50 -0
  7. package/lib/server/provider/warden-dynamo-storage-provider.js +214 -0
  8. package/lib/server/provider/warden-dynamo-storage-provider.js.map +1 -0
  9. package/lib/server/provider/warden-mailer-and-expiring-code-ratchet-single-use-code-provider.d.ts +1 -1
  10. package/lib/server/provider/warden-mailer-and-expiring-code-ratchet-single-use-code-provider.js +5 -2
  11. package/lib/server/provider/warden-mailer-and-expiring-code-ratchet-single-use-code-provider.js.map +1 -1
  12. package/lib/server/provider/warden-s3-single-file-storage-provider.d.ts +1 -0
  13. package/lib/server/provider/warden-s3-single-file-storage-provider.js +8 -0
  14. package/lib/server/provider/warden-s3-single-file-storage-provider.js.map +1 -1
  15. package/lib/server/provider/warden-single-use-code-provider.d.ts +1 -1
  16. package/lib/server/provider/warden-storage-provider.d.ts +1 -0
  17. package/lib/server/provider/warden-third-party-authentication-provider.d.ts +7 -0
  18. package/lib/server/provider/warden-third-party-authentication-provider.js +2 -0
  19. package/lib/server/provider/warden-third-party-authentication-provider.js.map +1 -0
  20. package/lib/server/provider/warden-twilio-verify-single-use-code-provider.d.ts +1 -1
  21. package/lib/server/provider/warden-twilio-verify-single-use-code-provider.js +1 -1
  22. package/lib/server/provider/warden-twilio-verify-single-use-code-provider.js.map +1 -1
  23. package/lib/server/warden-authorizer.d.ts +35 -0
  24. package/lib/server/warden-authorizer.js +88 -0
  25. package/lib/server/warden-authorizer.js.map +1 -0
  26. package/lib/server/warden-entry-builder.d.ts +13 -0
  27. package/lib/server/warden-entry-builder.js +42 -0
  28. package/lib/server/warden-entry-builder.js.map +1 -0
  29. package/lib/server/warden-service-options.d.ts +2 -0
  30. package/lib/server/warden-service.d.ts +21 -13
  31. package/lib/server/warden-service.js +239 -140
  32. package/lib/server/warden-service.js.map +1 -1
  33. package/lib/server/warden-web-authn-export-token.d.ts +5 -0
  34. package/lib/server/warden-web-authn-export-token.js +2 -0
  35. package/lib/server/warden-web-authn-export-token.js.map +1 -0
  36. package/package.json +16 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warden-authorizer.js","sourceRoot":"","sources":["../../src/server/warden-authorizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { WardenEntry } from "@bitblit/ratchet-warden-common/common/model/warden-entry";
2
+ import { WardenContact } from "@bitblit/ratchet-warden-common/common/model/warden-contact";
3
+ import { WardenThirdPartyAuthentication } from "@bitblit/ratchet-warden-common/common/model/warden-third-party-authentication";
4
+ export declare class WardenEntryBuilder {
5
+ private readonly _entry;
6
+ constructor(label?: string);
7
+ withTags(tags: string[]): WardenEntryBuilder;
8
+ withThirdPartyAuthentication(thirdPartyAuthenticators: [WardenThirdPartyAuthentication]): WardenEntryBuilder;
9
+ withLabel(label: string): WardenEntryBuilder;
10
+ withLabelFromContact(contact: WardenContact): WardenEntryBuilder;
11
+ withContacts(contacts: [WardenContact]): WardenEntryBuilder;
12
+ get entry(): WardenEntry;
13
+ }
@@ -0,0 +1,42 @@
1
+ import { StringRatchet } from "@bitblit/ratchet-common/lang/string-ratchet";
2
+ export class WardenEntryBuilder {
3
+ _entry;
4
+ constructor(label) {
5
+ const guid = StringRatchet.createShortUid();
6
+ const now = Date.now();
7
+ this._entry = {
8
+ userId: guid,
9
+ userLabel: label || 'User ' + guid,
10
+ contactMethods: [],
11
+ tags: [],
12
+ webAuthnAuthenticators: [],
13
+ thirdPartyAuthenticators: [],
14
+ createdEpochMS: now,
15
+ updatedEpochMS: now,
16
+ };
17
+ }
18
+ withTags(tags) {
19
+ this._entry.tags = tags ?? [];
20
+ return this;
21
+ }
22
+ withThirdPartyAuthentication(thirdPartyAuthenticators) {
23
+ this._entry.thirdPartyAuthenticators = thirdPartyAuthenticators ?? [];
24
+ return this;
25
+ }
26
+ withLabel(label) {
27
+ this._entry.userLabel = label;
28
+ return this;
29
+ }
30
+ withLabelFromContact(contact) {
31
+ this._entry.userLabel = contact.value;
32
+ return this;
33
+ }
34
+ withContacts(contacts) {
35
+ this._entry.contactMethods = contacts ?? [];
36
+ return this;
37
+ }
38
+ get entry() {
39
+ return this._entry;
40
+ }
41
+ }
42
+ //# sourceMappingURL=warden-entry-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warden-entry-builder.js","sourceRoot":"","sources":["../../src/server/warden-entry-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAM5E,MAAM,OAAO,kBAAkB;IAEZ,MAAM,CAAc;IAErC,YAAY,KAAc;QACxB,MAAM,IAAI,GAAW,aAAa,CAAC,cAAc,EAAE,CAAC;QACpD,MAAM,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,KAAK,IAAI,OAAO,GAAC,IAAI;YAChC,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,EAAE;YACR,sBAAsB,EAAE,EAAE;YAC1B,wBAAwB,EAAE,EAAE;YAC5B,cAAc,EAAE,GAAG;YACnB,cAAc,EAAE,GAAG;SACpB,CAAC;IACJ,CAAC;IAEM,QAAQ,CAAC,IAAc;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,4BAA4B,CAAC,wBAA0D;QAC5F,IAAI,CAAC,MAAM,CAAC,wBAAwB,GAAG,wBAAwB,IAAI,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS,CAAC,KAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,oBAAoB,CAAC,OAAsB;QAChD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,QAAyB;QAC3C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CAEF"}
@@ -4,6 +4,7 @@ import { WardenUserDecorationProvider } from './provider/warden-user-decoration-
4
4
  import { WardenEventProcessingProvider } from './provider/warden-event-processing-provider.js';
5
5
  import { WardenSingleUseCodeProvider } from './provider/warden-single-use-code-provider.js';
6
6
  import { WardenSendMagicLinkCommandValidator } from './provider/warden-send-magic-link-command-validator.js';
7
+ import { WardenThirdPartyAuthenticationProvider } from "./provider/warden-third-party-authentication-provider.js";
7
8
  export interface WardenServiceOptions {
8
9
  relyingPartyName: string;
9
10
  allowedOrigins: string[];
@@ -13,4 +14,5 @@ export interface WardenServiceOptions {
13
14
  userDecorationProvider?: WardenUserDecorationProvider<any>;
14
15
  eventProcessor?: WardenEventProcessingProvider;
15
16
  sendMagicLinkCommandValidator?: WardenSendMagicLinkCommandValidator;
17
+ thirdPartyAuthenticationProviders?: WardenThirdPartyAuthenticationProvider[];
16
18
  }
@@ -1,34 +1,42 @@
1
- import { AuthenticationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON } from '@simplewebauthn/server';
2
- import { WardenServiceOptions } from './warden-service-options.js';
3
- import { WardenContact } from '@bitblit/ratchet-warden-common/common/model/warden-contact';
4
- import { WardenCustomTemplateDescriptor } from '@bitblit/ratchet-warden-common/common/command/warden-custom-template-descriptor';
5
- import { WardenEntry } from '@bitblit/ratchet-warden-common/common/model/warden-entry';
6
- import { WardenLoginRequest } from '@bitblit/ratchet-warden-common/common/model/warden-login-request';
7
- import { WardenCommand } from '@bitblit/ratchet-warden-common/common/command/warden-command';
8
- import { WardenCommandResponse } from '@bitblit/ratchet-warden-common/common/command/warden-command-response';
9
- import { WardenStoreRegistrationResponse } from '@bitblit/ratchet-warden-common/common/model/warden-store-registration-response';
10
- import { WardenSingleUseCodeProvider } from './provider/warden-single-use-code-provider.js';
1
+ import { AuthenticationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON } from "@simplewebauthn/server";
2
+ import { WardenServiceOptions } from "./warden-service-options.js";
3
+ import { WardenContact } from "@bitblit/ratchet-warden-common/common/model/warden-contact";
4
+ import { WardenCustomTemplateDescriptor } from "@bitblit/ratchet-warden-common/common/command/warden-custom-template-descriptor";
5
+ import { WardenEntry } from "@bitblit/ratchet-warden-common/common/model/warden-entry";
6
+ import { WardenLoginRequest } from "@bitblit/ratchet-warden-common/common/model/warden-login-request";
7
+ import { WardenCommand } from "@bitblit/ratchet-warden-common/common/command/warden-command";
8
+ import { WardenCommandResponse } from "@bitblit/ratchet-warden-common/common/command/warden-command-response";
9
+ import { WardenStoreRegistrationResponse } from "@bitblit/ratchet-warden-common/common/model/warden-store-registration-response";
10
+ import { WardenSingleUseCodeProvider } from "./provider/warden-single-use-code-provider.js";
11
+ import { WardenThirdPartyAuthentication } from "@bitblit/ratchet-warden-common/common/model/warden-third-party-authentication";
12
+ import { WardenAuthorizer } from "./warden-authorizer.ts";
11
13
  export declare class WardenService {
12
14
  private inOptions;
13
15
  private opts;
16
+ private cacheAuthorizer;
14
17
  constructor(inOptions: WardenServiceOptions);
18
+ get authorizer(): WardenAuthorizer;
15
19
  get options(): WardenServiceOptions;
16
20
  findEntryByContact(contact: WardenContact): Promise<WardenEntry>;
17
21
  findEntryById(userId: string): Promise<WardenEntry>;
18
22
  processCommandStringToString(cmdString: string, origin: string, loggedInUserId: string): Promise<string>;
19
23
  processCommandToResponse(cmd: WardenCommand, origin: string, loggedInUserId: string): Promise<WardenCommandResponse>;
24
+ exportWebAuthnRegistrationEntry(origin: string, userId: string): Promise<string>;
25
+ importWebAuthnRegistrationEntry(token: string, userId: string): Promise<boolean>;
20
26
  urlIsOnAllowedOrigin(url: string): boolean;
21
27
  singleUseCodeProvider(contact: WardenContact, requireMagicLinkSupport: boolean, returnNullIfNoProviders?: boolean): WardenSingleUseCodeProvider;
22
28
  sendMagicLink(contact: WardenContact, overrideDestinationContact: WardenContact, relyingPartyName: string, landingUrl: string, metaIn?: Record<string, string>, ttlSeconds?: number, customTemplate?: WardenCustomTemplateDescriptor): Promise<boolean>;
23
- createAccount(contact: WardenContact, sendCode?: boolean, label?: string, tags?: string[]): Promise<string>;
29
+ createAccountByThirdParty(thirdParty: WardenThirdPartyAuthentication, origin: string, inLabel?: string): Promise<WardenEntry>;
30
+ createAccount(contact: WardenContact, origin: string, sendCode?: boolean, label?: string, tags?: string[]): Promise<WardenEntry>;
31
+ saveNewUser(newUser: WardenEntry): Promise<WardenEntry>;
24
32
  addContactMethodToUser(userId: string, contact: WardenContact): Promise<boolean>;
25
33
  removeContactMethodFromUser(userId: string, contact: WardenContact): Promise<WardenEntry>;
26
34
  generateWebAuthnRegistrationChallengeForLoggedInUser(userId: string, origin: string): Promise<PublicKeyCredentialCreationOptionsJSON>;
27
35
  storeAuthnRegistration(userId: string, origin: string, applicationName: string, deviceLabel: string, data: RegistrationResponseJSON): Promise<WardenStoreRegistrationResponse>;
28
36
  generateWebAuthnAuthenticationChallengeForUserId(userId: string, origin: string): Promise<PublicKeyCredentialRequestOptionsJSON>;
29
37
  generateWebAuthnAuthenticationChallenge(user: WardenEntry, origin: string): Promise<PublicKeyCredentialRequestOptionsJSON>;
30
- sendExpiringValidationToken(request: WardenContact): Promise<boolean>;
31
- processLogin(request: WardenLoginRequest, origin: string): Promise<boolean>;
38
+ sendExpiringValidationToken(request: WardenContact, origin: string): Promise<boolean>;
39
+ processLogin(request: WardenLoginRequest, origin: string): Promise<WardenEntry | null>;
32
40
  loginWithWebAuthnRequest(user: WardenEntry, origin: string, data: AuthenticationResponseJSON): Promise<boolean>;
33
41
  removeSingleWebAuthnRegistration(userId: string, key: string): Promise<WardenEntry>;
34
42
  removeUser(userId: string): Promise<boolean>;