@betterportal/auth-default 10.6.21 → 10.6.22

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 (128) hide show
  1. package/README.md +140 -10
  2. package/bsb-plugin.json +1 -1
  3. package/lib/account.d.ts +16 -0
  4. package/lib/account.d.ts.map +1 -0
  5. package/lib/account.js +274 -0
  6. package/lib/account.js.map +1 -0
  7. package/lib/accountUI.d.ts +5 -0
  8. package/lib/accountUI.d.ts.map +1 -0
  9. package/lib/accountUI.js +68 -0
  10. package/lib/accountUI.js.map +1 -0
  11. package/lib/bp-contracts/org.betterportal.auth.default.json +2031 -707
  12. package/lib/clientAddress.d.ts +10 -0
  13. package/lib/clientAddress.d.ts.map +1 -0
  14. package/lib/clientAddress.js +35 -0
  15. package/lib/clientAddress.js.map +1 -0
  16. package/lib/config.d.ts +3 -0
  17. package/lib/config.d.ts.map +1 -0
  18. package/lib/config.js +28 -0
  19. package/lib/config.js.map +1 -0
  20. package/lib/defaultAuthManifest.d.ts +7 -0
  21. package/lib/defaultAuthManifest.d.ts.map +1 -1
  22. package/lib/factors.d.ts +18 -0
  23. package/lib/factors.d.ts.map +1 -0
  24. package/lib/factors.js +95 -0
  25. package/lib/factors.js.map +1 -0
  26. package/lib/identity.d.ts +106 -0
  27. package/lib/identity.d.ts.map +1 -0
  28. package/lib/identity.js +315 -0
  29. package/lib/identity.js.map +1 -0
  30. package/lib/index.d.ts +4 -0
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +4 -0
  33. package/lib/index.js.map +1 -1
  34. package/lib/mail.d.ts +19 -0
  35. package/lib/mail.d.ts.map +1 -0
  36. package/lib/mail.js +102 -0
  37. package/lib/mail.js.map +1 -0
  38. package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.d.ts +435 -11
  39. package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.d.ts.map +1 -1
  40. package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.js +85 -0
  41. package/lib/plugins/service-betterportal-auth-default/.bp-generated/registry.js.map +1 -1
  42. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/GET.d.ts +34 -0
  43. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/GET.d.ts.map +1 -0
  44. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/GET.js +25 -0
  45. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/GET.js.map +1 -0
  46. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/POST.d.ts +42 -0
  47. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/POST.d.ts.map +1 -0
  48. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/POST.js +27 -0
  49. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/POST.js.map +1 -0
  50. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/GET.d.ts +2 -0
  51. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/GET.d.ts.map +1 -0
  52. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/GET.js +2 -0
  53. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/GET.js.map +1 -0
  54. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/POST.d.ts +2 -0
  55. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/POST.d.ts.map +1 -0
  56. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/POST.js +2 -0
  57. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/_renderer.bootstrap5/POST.js.map +1 -0
  58. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/index.d.ts +3 -0
  59. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/index.d.ts.map +1 -0
  60. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/index.js +3 -0
  61. package/lib/plugins/service-betterportal-auth-default/bp-routes/account/index.js.map +1 -0
  62. package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.d.ts.map +1 -1
  63. package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.js +11 -8
  64. package/lib/plugins/service-betterportal-auth-default/bp-routes/login/_renderer.bootstrap5/GET.js.map +1 -1
  65. package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.d.ts +3 -1
  66. package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.d.ts.map +1 -1
  67. package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.js +10 -23
  68. package/lib/plugins/service-betterportal-auth-default/bp-routes/refresh/POST.js.map +1 -1
  69. package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.d.ts.map +1 -1
  70. package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.js +2 -2
  71. package/lib/plugins/service-betterportal-auth-default/bp-routes/register/_renderer.bootstrap5/GET.js.map +1 -1
  72. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.d.ts +34 -0
  73. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.d.ts.map +1 -0
  74. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.js +26 -0
  75. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/GET.js.map +1 -0
  76. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/POST.d.ts +31 -0
  77. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/POST.d.ts.map +1 -0
  78. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/POST.js +23 -0
  79. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/POST.js.map +1 -0
  80. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.d.ts +3 -0
  81. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.d.ts.map +1 -0
  82. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.js +36 -0
  83. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/_renderer.bootstrap5/GET.js.map +1 -0
  84. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/index.d.ts +3 -0
  85. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/index.d.ts.map +1 -0
  86. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/index.js +3 -0
  87. package/lib/plugins/service-betterportal-auth-default/bp-routes/social/index.js.map +1 -0
  88. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.d.ts +32 -0
  89. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.d.ts.map +1 -0
  90. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.js +39 -0
  91. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/GET.js.map +1 -0
  92. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/POST.d.ts +41 -0
  93. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/POST.d.ts.map +1 -0
  94. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/POST.js +103 -0
  95. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/POST.js.map +1 -0
  96. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.d.ts +3 -0
  97. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.d.ts.map +1 -0
  98. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.js +19 -0
  99. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/_renderer.bootstrap5/GET.js.map +1 -0
  100. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/index.d.ts +3 -0
  101. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/index.d.ts.map +1 -0
  102. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/index.js +3 -0
  103. package/lib/plugins/service-betterportal-auth-default/bp-routes/users/index.js.map +1 -0
  104. package/lib/plugins/service-betterportal-auth-default/index.d.ts +41 -4
  105. package/lib/plugins/service-betterportal-auth-default/index.d.ts.map +1 -1
  106. package/lib/plugins/service-betterportal-auth-default/index.js +205 -9
  107. package/lib/plugins/service-betterportal-auth-default/index.js.map +1 -1
  108. package/lib/plugins/service-betterportal-auth-default/loginFlow.d.ts +17 -2
  109. package/lib/plugins/service-betterportal-auth-default/loginFlow.d.ts.map +1 -1
  110. package/lib/plugins/service-betterportal-auth-default/loginFlow.js +83 -62
  111. package/lib/plugins/service-betterportal-auth-default/loginFlow.js.map +1 -1
  112. package/lib/plugins/service-betterportal-auth-default/logoutFlow.js +1 -1
  113. package/lib/plugins/service-betterportal-auth-default/logoutFlow.js.map +1 -1
  114. package/lib/plugins/service-betterportal-auth-default/registrationFlow.d.ts +4 -2
  115. package/lib/plugins/service-betterportal-auth-default/registrationFlow.d.ts.map +1 -1
  116. package/lib/plugins/service-betterportal-auth-default/registrationFlow.js +15 -17
  117. package/lib/plugins/service-betterportal-auth-default/registrationFlow.js.map +1 -1
  118. package/lib/schemas/service-betterportal-auth-default.json +26 -2
  119. package/lib/schemas/service-betterportal-auth-default.plugin.json +27 -3
  120. package/lib/social.d.ts +40 -0
  121. package/lib/social.d.ts.map +1 -0
  122. package/lib/social.js +178 -0
  123. package/lib/social.js.map +1 -0
  124. package/lib/storage.d.ts +72 -0
  125. package/lib/storage.d.ts.map +1 -0
  126. package/lib/storage.js +427 -0
  127. package/lib/storage.js.map +1 -0
  128. package/package.json +13 -6
@@ -1,8 +1,12 @@
1
1
  import { type BSBServiceConstructor, type Observable } from "@bsb/base";
2
2
  import * as av from "anyvali";
3
3
  import { BPService, type BPServiceDefinition } from "@betterportal/plugin-bsb";
4
- import { type BpTokenIssuer, type JwtVerifier, type TenantAppValidation } from "@betterportal/framework";
5
- import { UserStore } from "../../userStore.js";
4
+ import { type BpTokenIssuer, type JwtVerifier, type JwtClaims, type ElevationRequirement, type TenantAppValidation } from "@betterportal/framework";
5
+ import type { BetterPortalEvent } from "@betterportal/framework/lib/runtime/h3.js";
6
+ import { type Scope } from "../../storage.js";
7
+ import { IdentityService, type IdentityPolicy } from "../../identity.js";
8
+ import { Factors } from "../../factors.js";
9
+ import { MailQueue } from "../../mail.js";
6
10
  declare const PluginConfigSchema: av.ObjectSchema<{
7
11
  host: av.StringSchema;
8
12
  port: av.IntSchema;
@@ -12,6 +16,10 @@ declare const PluginConfigSchema: av.ObjectSchema<{
12
16
  refreshTokenSeconds: av.IntSchema;
13
17
  keyStorePath: av.StringSchema;
14
18
  userStorePath: av.StringSchema;
19
+ mode: av.EnumSchema<readonly ["simple", "advanced"]>;
20
+ postgresUrl: av.StringSchema;
21
+ encryptionKey: av.StringSchema;
22
+ setupToken: av.StringSchema;
15
23
  betterportal: av.OptionalSchema<av.ObjectSchema<{
16
24
  bpConfigPath: av.OptionalSchema<av.StringSchema>;
17
25
  configApiToken: av.OptionalSchema<av.StringSchema>;
@@ -34,6 +42,10 @@ declare const Config: import("@bsb/base").BSBPluginConfigClass<av.ObjectSchema<{
34
42
  refreshTokenSeconds: av.IntSchema;
35
43
  keyStorePath: av.StringSchema;
36
44
  userStorePath: av.StringSchema;
45
+ mode: av.EnumSchema<readonly ["simple", "advanced"]>;
46
+ postgresUrl: av.StringSchema;
47
+ encryptionKey: av.StringSchema;
48
+ setupToken: av.StringSchema;
37
49
  betterportal: av.OptionalSchema<av.ObjectSchema<{
38
50
  bpConfigPath: av.OptionalSchema<av.StringSchema>;
39
51
  configApiToken: av.OptionalSchema<av.StringSchema>;
@@ -55,8 +67,15 @@ declare const EventSchemas: {
55
67
  readonly onBroadcast: {};
56
68
  };
57
69
  export interface AuthRuntime {
70
+ readonly clientAddress?: (event: BetterPortalEvent) => string | undefined;
58
71
  readonly tokenIssuer: BpTokenIssuer;
59
- readonly userStore: UserStore;
72
+ readonly identity: IdentityService;
73
+ readonly factors: Factors;
74
+ readonly mail: MailQueue;
75
+ readonly policy: (scope: Scope) => Promise<IdentityPolicy>;
76
+ readonly isManagement: (scope: Scope) => boolean;
77
+ readonly verifySetup: (token: string) => boolean;
78
+ readonly configuration: (scope: Scope) => Record<string, unknown>;
60
79
  readonly accessTokenSeconds: number;
61
80
  readonly refreshTokenSeconds: number;
62
81
  }
@@ -70,6 +89,10 @@ export declare class Plugin extends BPService<InstanceType<typeof Config>, typeo
70
89
  refreshTokenSeconds: av.IntSchema;
71
90
  keyStorePath: av.StringSchema;
72
91
  userStorePath: av.StringSchema;
92
+ mode: av.EnumSchema<readonly ["simple", "advanced"]>;
93
+ postgresUrl: av.StringSchema;
94
+ encryptionKey: av.StringSchema;
95
+ setupToken: av.StringSchema;
73
96
  betterportal: av.OptionalSchema<av.ObjectSchema<{
74
97
  bpConfigPath: av.OptionalSchema<av.StringSchema>;
75
98
  configApiToken: av.OptionalSchema<av.StringSchema>;
@@ -91,7 +114,11 @@ export declare class Plugin extends BPService<InstanceType<typeof Config>, typeo
91
114
  readonly onBroadcast: {};
92
115
  };
93
116
  private keyPair;
94
- private userStore;
117
+ private identity;
118
+ private factors;
119
+ private mail;
120
+ private setupSecret;
121
+ private mailTimer?;
95
122
  constructor(cfg: BSBServiceConstructor<InstanceType<typeof Config>, typeof EventSchemas>);
96
123
  protected definition(): BPServiceDefinition;
97
124
  init(obs: Observable): Promise<void>;
@@ -102,6 +129,16 @@ export declare class Plugin extends BPService<InstanceType<typeof Config>, typeo
102
129
  */
103
130
  protected getJwtVerifier(_tenantId: string, _appId: string): JwtVerifier | undefined;
104
131
  protected validateTenantApp(tenantId: string, appId: string): Promise<TenantAppValidation>;
132
+ dispose(): Promise<void>;
133
+ protected mutateServiceConfiguration<T>(tenantId: string, appId: string | undefined, values: Record<string, unknown>, write: () => T | Promise<T>): Promise<T>;
134
+ private isManagement;
135
+ private policy;
136
+ private mailConfiguration;
137
+ protected beginAuthElevation(claims: JwtClaims, requirement: ElevationRequirement, event: BetterPortalEvent, actionContext?: Record<string, string>): Promise<Record<string, unknown>>;
138
+ protected finishAuthElevation(claims: JwtClaims, body: Record<string, unknown>, _event: BetterPortalEvent): Promise<{
139
+ user: JwtClaims;
140
+ assurance: "confirmed" | "mfa";
141
+ }>;
105
142
  private tokenIssuer;
106
143
  }
107
144
  export type PluginFeature = Pick<Plugin, "runtime">;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG1B,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAEL,SAAS,EACT,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;EAUtB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;GASX,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;CAOhB,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,qBAAa,MAAO,SAAQ,SAAS,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IACrF,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;QAAU;IACvB,MAAM,CAAC,YAAY;;;;;;;MAAgB;IAEnC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAa;gBAElB,GAAG,EAAE,qBAAqB,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAIxF,SAAS,CAAC,UAAU,IAAI,mBAAmB;IAWrC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1C,IAAI,OAAO,IAAI,WAAW,CAOzB;IAED;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;cAIpE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQhG,OAAO,CAAC,WAAW;CASpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG1B,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,OAAO,EAEL,SAAS,EACT,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAa,eAAe,EAA6B,KAAK,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC1H,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAsD,MAAM,eAAe,CAAC;AAK9F,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GASX,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;CAOhB,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,qBAAa,MAAO,SAAQ,SAAS,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IACrF,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;QAAU;IACvB,MAAM,CAAC,YAAY;;;;;;;MAAgB;IAEnC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,SAAS,CAAC,CAAiC;gBAEvC,GAAG,EAAE,qBAAqB,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAIxF,SAAS,CAAC,UAAU,IAAI,mBAAmB;IAYrC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C1C,IAAI,OAAO,IAAI,WAAW,CAczB;IAED;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;cAIpE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS1F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;cAMd,0BAA0B,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiDpK,OAAO,CAAC,YAAY;YAKN,MAAM;IAcpB,OAAO,CAAC,iBAAiB;cAMT,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;cAchL,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,WAAW,GAAG,KAAK,CAAA;KAAE,CAAC;IAiB9K,OAAO,CAAC,WAAW;CASpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import { createConfigSchema, createEventSchemas } from "@bsb/base";
2
2
  import * as av from "anyvali";
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { randomBytes, createHash } from "node:crypto";
3
5
  import { resolve } from "node:path";
4
6
  import { BetterPortalConfigSchema, BPService } from "@betterportal/plugin-bsb";
5
- import { createBpTokenIssuer, loadOrGenerateKeyPair, publicKeyToJwk } from "@betterportal/framework";
6
- import { UserStore } from "../../userStore.js";
7
+ import { ServiceConfigWriteError, createBpTokenIssuer, loadOrGenerateKeyPair, publicKeyToJwk } from "@betterportal/framework";
8
+ import { atomicWrite, openAuthStorage } from "../../storage.js";
9
+ import { AuthError, IdentityService, SecretCipher, equalSecret } from "../../identity.js";
10
+ import { Factors } from "../../factors.js";
11
+ import { MailQueue, parseMailHeaders, validateMailUrl } from "../../mail.js";
12
+ import { clientAddress } from "../../clientAddress.js";
13
+ import { AuthConfigSchemas } from "../../config.js";
14
+ import { parseSocialConnections } from "../../social.js";
7
15
  const PluginConfigSchema = av.object({
8
16
  host: av.string().minLength(1).default("0.0.0.0"),
9
17
  port: av.int().min(1).default(80),
@@ -13,11 +21,15 @@ const PluginConfigSchema = av.object({
13
21
  refreshTokenSeconds: av.int().min(1).default(60 * 60 * 24 * 7),
14
22
  keyStorePath: av.string().minLength(1).default("./.bp-auth-state/keys.json"),
15
23
  userStorePath: av.string().minLength(1).default("./.bp-auth-state/users.json"),
24
+ mode: av.enum_(["simple", "advanced"]).default("simple"),
25
+ postgresUrl: av.string().default(""),
26
+ encryptionKey: av.string().default(""),
27
+ setupToken: av.string().default(""),
16
28
  betterportal: BetterPortalConfigSchema
17
29
  });
18
30
  const Config = createConfigSchema({
19
31
  name: "service-betterportal-auth-default",
20
- description: "Default BetterPortal v10 auth service: JWKS, login/logout/refresh, bcrypt user store",
32
+ description: "Default BetterPortal auth: app-scoped accounts, social sign-in, MFA and JWT sessions",
21
33
  tags: ["betterportal", "auth", "jwt", "jwks"],
22
34
  documentation: ["./README.md"],
23
35
  image: "./betterportal-logo.png"
@@ -34,7 +46,11 @@ export class Plugin extends BPService {
34
46
  static Config = Config;
35
47
  static EventSchemas = EventSchemas;
36
48
  keyPair;
37
- userStore;
49
+ identity;
50
+ factors;
51
+ mail;
52
+ setupSecret = "";
53
+ mailTimer;
38
54
  constructor(cfg) {
39
55
  super({ ...cfg, eventSchemas: EventSchemas });
40
56
  }
@@ -43,18 +59,51 @@ export class Plugin extends BPService {
43
59
  manifest: {
44
60
  pluginId: "org.betterportal.auth.default",
45
61
  title: "BetterPortal Default Auth",
46
- description: "JWT-issuing auth service (RS256 + JWKS + bcrypt user store).",
47
- capabilities: ["auth"]
62
+ description: "JWT-issuing auth service with isolated account directories, MFA and JSON/PostgreSQL storage.",
63
+ capabilities: ["auth"],
64
+ configSchemas: AuthConfigSchemas
48
65
  }
49
66
  };
50
67
  }
51
68
  async init(obs) {
52
69
  const cfg = this.config;
70
+ if (cfg.mode === "advanced" && !cfg.setupToken)
71
+ throw new Error("Advanced auth requires a setupToken shared by all replicas");
72
+ if (cfg.mode === "advanced" && !existsSync(resolve(cfg.keyStorePath)))
73
+ throw new Error("Advanced auth requires provisioned signing keys shared by its replicas");
53
74
  this.keyPair = loadOrGenerateKeyPair(resolve(cfg.keyStorePath));
54
- this.userStore = new UserStore(resolve(cfg.userStorePath));
55
75
  await super.init(obs);
76
+ const keyPath = `${resolve(cfg.userStorePath)}.crypto.json`;
77
+ const localKey = existsSync(keyPath) ? JSON.parse(readFileSync(keyPath, "utf8")).key : undefined;
78
+ if (cfg.mode === "advanced" && !cfg.encryptionKey)
79
+ throw new Error("Advanced auth requires a shared encryptionKey (base64, 32 bytes); use the existing crypto file key when migrating");
80
+ if (localKey && cfg.encryptionKey && localKey !== cfg.encryptionKey)
81
+ throw new Error("Encryption key differs from the Simple store key");
82
+ const encryptionKey = cfg.encryptionKey || localKey || randomBytes(32).toString("base64");
83
+ if (!localKey)
84
+ atomicWrite(keyPath, { key: encryptionKey });
85
+ const portal = this.getPortalConfig();
86
+ const appIds = {};
87
+ for (const app of portal?.apps ?? [])
88
+ (appIds[app.tenantId] ??= []).push(app.id);
89
+ const storage = await openAuthStorage({ mode: cfg.mode, path: cfg.userStorePath, connectionString: cfg.postgresUrl, installationId: createHash("sha256").update(cfg.issuer).digest("hex"), appIds });
90
+ this.identity = new IdentityService(storage, new SecretCipher(Buffer.from(encryptionKey, "base64")));
91
+ this.factors = new Factors(this.identity);
92
+ this.mail = new MailQueue(this.identity, scope => this.mailConfiguration(scope));
93
+ const setupPath = `${resolve(cfg.userStorePath)}.setup.json`;
94
+ if (cfg.setupToken)
95
+ this.setupSecret = cfg.setupToken;
96
+ else if (existsSync(setupPath))
97
+ this.setupSecret = JSON.parse(readFileSync(setupPath, "utf8")).token;
98
+ else {
99
+ this.setupSecret = randomBytes(32).toString("base64url");
100
+ atomicWrite(setupPath, { token: this.setupSecret });
101
+ }
102
+ this.mailTimer = setInterval(() => { void this.mail.drain().catch(() => obs.log.error("Auth mail delivery queue unavailable")); }, 15000);
103
+ this.mailTimer.unref();
56
104
  const jwk = publicKeyToJwk(this.keyPair.publicKeyPem, this.keyPair.kid);
57
105
  this.registerAsAuthProvider({
106
+ tokenIssuer: this.tokenIssuer(),
58
107
  issuer: cfg.issuer,
59
108
  audience: cfg.audience,
60
109
  jwksUri: `${cfg.issuer.replace(/\/+$/, "")}/.well-known/jwks.json`,
@@ -68,8 +117,15 @@ export class Plugin extends BPService {
68
117
  }
69
118
  get runtime() {
70
119
  return {
120
+ clientAddress: event => clientAddress(event, this.bp),
71
121
  tokenIssuer: this.tokenIssuer(),
72
- userStore: this.userStore,
122
+ identity: this.identity,
123
+ factors: this.factors,
124
+ mail: this.mail,
125
+ policy: scope => this.policy(scope),
126
+ isManagement: scope => this.isManagement(scope),
127
+ verifySetup: token => !!this.setupSecret && equalSecret(this.setupSecret, token),
128
+ configuration: scope => this.effectiveServiceConfig(scope.tenantId, scope.appId),
73
129
  accessTokenSeconds: this.config.accessTokenSeconds,
74
130
  refreshTokenSeconds: this.config.refreshTokenSeconds
75
131
  };
@@ -82,13 +138,153 @@ export class Plugin extends BPService {
82
138
  return this.tokenIssuer().verifier("access");
83
139
  }
84
140
  async validateTenantApp(tenantId, appId) {
141
+ if (!this.identity)
142
+ return { allowed: false, reason: "Auth storage is initializing" };
85
143
  if (await this.validateConfigScope(tenantId, appId))
86
- return { allowed: true };
144
+ return this.config.mode === "simple" ? super.validateTenantApp(tenantId, appId) : { allowed: true };
87
145
  return {
88
146
  allowed: false,
89
147
  reason: `Default auth service is not activated for tenant ${tenantId} app ${appId}.`
90
148
  };
91
149
  }
150
+ async dispose() {
151
+ if (this.mailTimer)
152
+ clearInterval(this.mailTimer);
153
+ await super.dispose();
154
+ if (this.identity)
155
+ await this.identity.storage.close();
156
+ }
157
+ async mutateServiceConfiguration(tenantId, appId, values, write) {
158
+ if (!this.identity)
159
+ throw new ServiceConfigWriteError("Auth storage is initializing.", 503);
160
+ return this.identity.storage.transaction({ tenantId, appId: "" }, async (tx) => {
161
+ if (Object.hasOwn(values, "mailUrl") && values.mailUrl !== undefined && values.mailUrl !== "") {
162
+ try {
163
+ validateMailUrl(values.mailUrl);
164
+ }
165
+ catch (error) {
166
+ if (!(error instanceof AuthError))
167
+ throw error;
168
+ throw new ServiceConfigWriteError(error.message, 400);
169
+ }
170
+ }
171
+ if (Object.hasOwn(values, "mailHeaders")) {
172
+ try {
173
+ parseMailHeaders(values.mailHeaders);
174
+ }
175
+ catch (error) {
176
+ if (!(error instanceof AuthError))
177
+ throw error;
178
+ throw new ServiceConfigWriteError(error.message, 400);
179
+ }
180
+ }
181
+ if (Object.hasOwn(values, "socialConnections")) {
182
+ try {
183
+ parseSocialConnections(values.socialConnections);
184
+ }
185
+ catch (error) {
186
+ if (!(error instanceof AuthError))
187
+ throw error;
188
+ throw new ServiceConfigWriteError(error.message, 400);
189
+ }
190
+ }
191
+ if (appId && values.defaultRoleIds !== undefined) {
192
+ let roles;
193
+ try {
194
+ roles = typeof values.defaultRoleIds === "string" ? JSON.parse(values.defaultRoleIds) : values.defaultRoleIds;
195
+ }
196
+ catch {
197
+ throw new ServiceConfigWriteError("Default roles must be a JSON array.");
198
+ }
199
+ const allowed = this.getPortalConfig()?.apps.find(app => app.tenantId === tenantId && app.id === appId)?.auth?.roles.map(role => role.id) ?? [];
200
+ if (!Array.isArray(roles) || roles.some(id => typeof id !== "string" || id === "*" || !allowed.includes(id)))
201
+ throw new ServiceConfigWriteError("Default roles must reference existing app roles and cannot include root.");
202
+ }
203
+ if (values.requireMfa !== undefined && typeof values.requireMfa !== "boolean")
204
+ throw new ServiceConfigWriteError("Require MFA must be a boolean.");
205
+ if (values.registration !== undefined && !["public", "invite-only", "closed"].includes(String(values.registration)))
206
+ throw new ServiceConfigWriteError("Choose a supported registration policy.");
207
+ if (Object.hasOwn(values, "directoryAdminAppId")) {
208
+ if (appId)
209
+ throw new ServiceConfigWriteError("Directory administration can only be configured at tenant scope.");
210
+ if (values.directoryAdminAppId && !this.getPortalConfig()?.apps.some(app => app.tenantId === tenantId && app.id === values.directoryAdminAppId))
211
+ throw new ServiceConfigWriteError("Choose a directory administration app in this tenant.");
212
+ }
213
+ if (Object.hasOwn(values, "userIsolation")) {
214
+ if (appId)
215
+ throw new ServiceConfigWriteError("User isolation can only be configured at tenant scope.");
216
+ const settings = await tx.get("tenant", tenantId, { tenantId, appId: "" });
217
+ const isolation = values.userIsolation ?? settings?.isolation ?? "app";
218
+ if (isolation !== "app" && isolation !== "tenant")
219
+ throw new ServiceConfigWriteError("Choose app or tenant isolation.");
220
+ if (settings?.lockedAt && settings.isolation !== isolation)
221
+ throw new ServiceConfigWriteError("User isolation is permanently locked because this tenant has accounts.");
222
+ await tx.put("tenant", { tenantId, appId: "" }, { ...settings, id: tenantId, isolation });
223
+ }
224
+ return write();
225
+ });
226
+ }
227
+ isManagement(scope) {
228
+ const management = this.getPortalConfig()?.configManagement;
229
+ return !!management && management.adminTenantId === scope.tenantId && management.managementAppId === scope.appId;
230
+ }
231
+ async policy(scope) {
232
+ const tenant = this.effectiveServiceConfig(scope.tenantId);
233
+ const config = this.effectiveServiceConfig(scope.tenantId, scope.appId);
234
+ const requested = tenant.userIsolation;
235
+ if (requested !== undefined && requested !== "app" && requested !== "tenant")
236
+ throw new AuthError("Invalid user isolation configuration.", 503);
237
+ const isolation = await this.identity.effectiveIsolation(scope.tenantId, requested);
238
+ const registration = config.registration ?? "invite-only";
239
+ if (registration !== "public" && registration !== "invite-only" && registration !== "closed")
240
+ throw new AuthError("Invalid registration configuration.", 503);
241
+ const defaults = typeof config.defaultRoleIds === "string" ? JSON.parse(config.defaultRoleIds) : config.defaultRoleIds ?? [];
242
+ if (!Array.isArray(defaults) || defaults.some(v => typeof v !== "string"))
243
+ throw new AuthError("Default roles must be a JSON array.", 503);
244
+ const roles = this.getPortalConfig()?.apps.find(a => a.id === scope.appId && a.tenantId === scope.tenantId)?.auth?.roles ?? [];
245
+ return { isolation, registration, defaultRoleIds: defaults, allowedRoleIds: roles.map(r => r.id), requireMfa: config.requireMfa === true, canManageDirectory: isolation === "app" || tenant.directoryAdminAppId === scope.appId || this.isManagement(scope) };
246
+ }
247
+ mailConfiguration(scope) {
248
+ const config = this.effectiveServiceConfig(scope.tenantId, scope.appId);
249
+ if (!config.mailUrl || !config.mailFrom || !["postal", "http"].includes(String(config.mailTransport)))
250
+ return undefined;
251
+ return { transport: config.mailTransport, url: String(config.mailUrl), from: String(config.mailFrom), apiKey: String(config.mailApiKey ?? ""), headers: parseMailHeaders(config.mailHeaders) };
252
+ }
253
+ async beginAuthElevation(claims, requirement, event, actionContext = {}) {
254
+ const scope = { tenantId: claims.tenantId, appId: claims.appId };
255
+ const policy = await this.policy(scope);
256
+ const user = await this.identity.findUser(scope, policy, claims.sub, true);
257
+ if (!user?.enabled)
258
+ throw new AuthError("Account unavailable.");
259
+ await this.identity.storage.transaction(scope, tx => this.identity.assertActiveSession(tx, scope, claims, user));
260
+ await this.identity.rateLimit(scope, "elevation", user.id, 20);
261
+ const hasFactors = await this.factors.hasFactors(user);
262
+ if (!hasFactors && requirement.minimum === "mfa")
263
+ throw new AuthError("Enroll an authentication factor in your account settings first.");
264
+ const prepared = hasFactors ? await this.factors.prepare(user, event.req.headers.get("origin") ?? event.url.origin) : undefined;
265
+ const challenge = await this.identity.challenge(scope, "elevation", { jti: claims.jti, version: user.refreshVersion, actionContext, factor: prepared?.private ?? null }, user.id, Math.min(300, claims.exp - Math.floor(Date.now() / 1000)));
266
+ return { challengeId: challenge.id, secret: challenge.secret, method: hasFactors ? "factor" : "confirm", ...prepared?.public };
267
+ }
268
+ async finishAuthElevation(claims, body, _event) {
269
+ const scope = { tenantId: claims.tenantId, appId: claims.appId };
270
+ const policy = await this.policy(scope);
271
+ return this.identity.consume(scope, "elevation", String(body.challengeId ?? ""), String(body.secret ?? ""), async (challenge, tx) => {
272
+ const dir = { tenantId: scope.tenantId, appId: policy.isolation === "app" ? scope.appId : "" };
273
+ const user = await tx.get("user", claims.sub, dir);
274
+ if (!user?.enabled || user.refreshVersion !== challenge.data.version || challenge.data.jti !== claims.jti || challenge.userId !== user.id)
275
+ throw new AuthError("Session changed; sign in again.");
276
+ await this.identity.assertActiveSession(tx, scope, claims, user);
277
+ if (challenge.data.factor && challenge.data.factor.origin !== (_event.req.headers.get("origin") ?? _event.url.origin))
278
+ throw new AuthError("Verification belongs to another origin.");
279
+ if (challenge.data.factor)
280
+ await this.factors.complete(tx, scope, user, challenge.data.factor, body);
281
+ else if (body.confirm !== true)
282
+ throw new AuthError("Confirmation required.");
283
+ const roles = await this.identity.roles(tx, scope, user, policy);
284
+ await this.identity.audit(tx, scope, user.id, "auth.elevated", { reportedAction: challenge.data.actionContext ?? {} });
285
+ return { user: { ...claims, roles }, assurance: challenge.data.factor ? "mfa" : "confirmed" };
286
+ });
287
+ }
92
288
  tokenIssuer() {
93
289
  return createBpTokenIssuer({
94
290
  keyPair: this.keyPair,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,wBAAwB,EACxB,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EAKf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,kBAAkB,GAAG,EAAE,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACjD,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAClE,kBAAkB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACpD,mBAAmB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9D,YAAY,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC;IAC5E,aAAa,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;IAC9E,YAAY,EAAE,wBAAwB;CACvC,CAAC,CAAC;AAGH,MAAM,MAAM,GAAG,kBAAkB,CAC/B;IACE,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,sFAAsF;IACnG,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC7C,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,KAAK,EAAE,yBAAyB;CACjC,EACD,kBAAkB,CACnB,CAAC;AAEF,MAAM,YAAY,GAAG,kBAAkB,CAAC;IACtC,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,oBAAoB,EAAE,EAAE;IACxB,kBAAkB,EAAE,EAAE;IACtB,aAAa,EAAE,EAAE;IACjB,WAAW,EAAE,EAAE;CAChB,CAAC,CAAC;AASH,MAAM,OAAO,MAAO,SAAQ,SAA2D;IACrF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAE3B,OAAO,CAAc;IACrB,SAAS,CAAa;IAE9B,YAAY,GAA4E;QACtF,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAES,UAAU;QAClB,OAAO;YACL,QAAQ,EAAE;gBACR,QAAQ,EAAE,+BAA+B;gBACzC,KAAK,EAAE,2BAA2B;gBAClC,WAAW,EAAE,8DAA8D;gBAC3E,YAAY,EAAE,CAAC,MAAM,CAAC;aACvB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAe;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtB,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,sBAAsB,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB;YAClE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;SACtB,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yEAAyE,EAAE;YACtF,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;SACrD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,SAAiB,EAAE,MAAc;QACxD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAa;QAC/D,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,oDAAoD,QAAQ,QAAQ,KAAK,GAAG;SACrF,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,OAAO,mBAAmB,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;SACrD,CAAC,CAAC;IACL,CAAC;;AAKH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/index.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@ export declare const RequestSchema: av.ObjectSchema<{
14
14
  next: av.OptionalSchema<av.StringSchema>;
15
15
  }>;
16
16
  export declare const ResponseSchema: av.ObjectSchema<{
17
+ challenge: av.OptionalSchema<av.BaseSchema<unknown, import("@betterportal/framework").JsonObject>>;
18
+ accountUrl: av.OptionalSchema<av.StringSchema>;
19
+ socialUrl: av.OptionalSchema<av.StringSchema>;
17
20
  status: av.EnumSchema<readonly ["ok", "error"]>;
18
21
  message: av.OptionalSchema<av.StringSchema>;
19
22
  accessToken: av.OptionalSchema<av.StringSchema>;
@@ -48,6 +51,12 @@ export declare const dependencies: readonly [{
48
51
  }, {
49
52
  readonly operationId: "auth.register.view";
50
53
  readonly method: "GET";
54
+ }, {
55
+ readonly operationId: "auth.account.view";
56
+ readonly method: "GET";
57
+ }, {
58
+ readonly operationId: "auth.social.view";
59
+ readonly method: "GET";
51
60
  }];
52
61
  export declare const chrome: BetterPortalRouteChrome;
53
62
  export declare const auth: ApiAuthRequirement;
@@ -58,7 +67,10 @@ export declare const handleGet: import("@betterportal/framework").RouteHandler<R
58
67
  }, {
59
68
  "x-bp-refresh"?: string | undefined;
60
69
  }, Record<string, unknown>, {
61
- status: "ok" | "error";
70
+ status: "error" | "ok";
71
+ challenge?: import("@betterportal/framework").JsonObject | undefined;
72
+ accountUrl?: string | undefined;
73
+ socialUrl?: string | undefined;
62
74
  message?: string | undefined;
63
75
  accessToken?: string | undefined;
64
76
  refreshToken?: string | undefined;
@@ -86,7 +98,10 @@ export declare const handlePost: import("@betterportal/framework").RouteHandler<
86
98
  password: string;
87
99
  next?: string | undefined;
88
100
  }, {
89
- status: "ok" | "error";
101
+ status: "error" | "ok";
102
+ challenge?: import("@betterportal/framework").JsonObject | undefined;
103
+ accountUrl?: string | undefined;
104
+ socialUrl?: string | undefined;
90
105
  message?: string | undefined;
91
106
  accessToken?: string | undefined;
92
107
  refreshToken?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/loginFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAEH,eAAO,MAAM,aAAa;;EAA0D,CAAC;AAErF,eAAO,MAAM,aAAa;;;;EAIxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EA2BzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,WAAW,8DAA8D,CAAC;AACvF,eAAO,MAAM,IAAI,eAAe,CAAC;AACjC,eAAO,MAAM,YAAY;;;;;;;;;;;;EAKf,CAAC;AACX,eAAO,MAAM,MAAM,EAAE,uBAA8C,CAAC;AAEpE,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAqDrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8EtB,CAAC"}
1
+ {"version":3,"file":"loginFlow.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-auth-default/loginFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAMjC,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAEH,eAAO,MAAM,aAAa;;EAA0D,CAAC;AAErF,eAAO,MAAM,aAAa;;;;EAIxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;EA8BzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,WAAW,8DAA8D,CAAC;AACvF,eAAO,MAAM,IAAI,eAAe,CAAC;AACjC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAOf,CAAC;AACX,eAAO,MAAM,MAAM,EAAE,uBAA8C,CAAC;AAEpE,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EtB,CAAC"}