@antelopejs/dms 0.15.0 → 0.15.1

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 (72) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -1
  3. package/bin/control/journey.mjs +5 -0
  4. package/bin/control/session.mjs +1 -0
  5. package/bin/control/stack.mjs +1 -0
  6. package/dist/config/internal/state.d.ts +7 -0
  7. package/dist/config/internal/state.js +9 -0
  8. package/dist/config/internal/state.js.map +1 -1
  9. package/dist/config/startup-config.d.ts +1 -0
  10. package/dist/config/startup-config.js +11 -0
  11. package/dist/config/startup-config.js.map +1 -1
  12. package/dist/db/index.d.ts +1 -0
  13. package/dist/db/index.js +1 -0
  14. package/dist/db/index.js.map +1 -1
  15. package/dist/db/models/index.d.ts +1 -0
  16. package/dist/db/models/index.js +1 -0
  17. package/dist/db/models/index.js.map +1 -1
  18. package/dist/db/models/setupToken.model.d.ts +29 -0
  19. package/dist/db/models/setupToken.model.js +62 -0
  20. package/dist/db/models/setupToken.model.js.map +1 -0
  21. package/dist/db/setup-token.d.ts +2 -0
  22. package/dist/db/setup-token.js +28 -0
  23. package/dist/db/setup-token.js.map +1 -0
  24. package/dist/db/tables/index.d.ts +1 -0
  25. package/dist/db/tables/index.js +1 -0
  26. package/dist/db/tables/index.js.map +1 -1
  27. package/dist/db/tables/setupToken.table.d.ts +7 -0
  28. package/dist/db/tables/setupToken.table.js +34 -0
  29. package/dist/db/tables/setupToken.table.js.map +1 -0
  30. package/dist/implementations/dms/page/payloads.js +6 -10
  31. package/dist/implementations/dms/page/payloads.js.map +1 -1
  32. package/dist/implementations/dms/page/public-layout.d.ts +2 -0
  33. package/dist/implementations/dms/page/public-layout.js +45 -0
  34. package/dist/implementations/dms/page/public-layout.js.map +1 -0
  35. package/dist/index.d.ts +0 -1
  36. package/dist/index.js +6 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/pages/settings/users/current-password.js +1 -1
  39. package/dist/pages/settings/users/current-password.js.map +1 -1
  40. package/dist/routes/auth/login.d.ts +1 -1
  41. package/dist/routes/auth/login.js +7 -2
  42. package/dist/routes/auth/login.js.map +1 -1
  43. package/dist/routes/auth/password-hash-upgrade.d.ts +2 -0
  44. package/dist/routes/auth/password-hash-upgrade.js +22 -0
  45. package/dist/routes/auth/password-hash-upgrade.js.map +1 -0
  46. package/dist/routes/authentication.d.ts +2 -0
  47. package/dist/routes/authentication.js +2 -0
  48. package/dist/routes/authentication.js.map +1 -1
  49. package/dist/routes/onboarding.d.ts +3 -1
  50. package/dist/routes/onboarding.js +20 -3
  51. package/dist/routes/onboarding.js.map +1 -1
  52. package/dist/utils/ensure-default-tenant.d.ts +2 -1
  53. package/dist/utils/ensure-default-tenant.js +126 -8
  54. package/dist/utils/ensure-default-tenant.js.map +1 -1
  55. package/dist/validation/onboarding/register-admin.schema.d.ts +5 -0
  56. package/dist/validation/onboarding/register-admin.schema.js +3 -0
  57. package/dist/validation/onboarding/register-admin.schema.js.map +1 -1
  58. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
  59. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
  60. package/frontend-vue/layers/dms-core/shared/types/app-config.ts +5 -0
  61. package/frontend-vue/layers/dms-layout/app/app.config.ts +1 -0
  62. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidebar.vue +9 -9
  63. package/frontend-vue/layers/dms-layout/app/components/layout/AppLogo.vue +1 -0
  64. package/frontend-vue/layers/dms-layout/app/composables/page/useInstalledModules.ts +78 -0
  65. package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +5 -24
  66. package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +2 -1
  67. package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +2 -1
  68. package/frontend-vue/layers/dms-onboarding/app/components/onboarding/steps/register.vue +21 -1
  69. package/frontend-vue/layers/dms-onboarding/app/custom-pages/onboarding.vue +14 -0
  70. package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-en-GB.json +2 -0
  71. package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-fr-FR.json +2 -0
  72. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.15.1
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.15.0...v0.15.1)
6
+
7
+ ### 🔥 Performance
8
+
9
+ - **page:** Send anonymous visitors only the public pages of the site layout ([#675](https://github.com/AntelopeJS/dms/pull/675))
10
+
11
+ ### 🩹 Fixes
12
+
13
+ - **auth:** Upgrade an outdated password hash on sign-in ([#691](https://github.com/AntelopeJS/dms/pull/691))
14
+ - **dashboard:** Name the brand logo for screen readers ([#652](https://github.com/AntelopeJS/dms/pull/652))
15
+ - **onboarding:** Require a setup token to register the first owner ([#654](https://github.com/AntelopeJS/dms/pull/654))
16
+ - **tenants:** Elect one replica to provision the default tenant through a renewed lease ([#657](https://github.com/AntelopeJS/dms/pull/657))
17
+ - **layout:** Count the sidebar's installed modules like the Modules page ([#666](https://github.com/AntelopeJS/dms/pull/666))
18
+
19
+ ### 📖 Documentation
20
+
21
+ - **github:** Send questions and ideas to Discord ([#672](https://github.com/AntelopeJS/dms/pull/672))
22
+
23
+ ### 🏡 Chore
24
+
25
+ - **release:** @antelopejs/interface-dms v0.10.4 ([3c856c69](https://github.com/AntelopeJS/dms/commit/3c856c69))
26
+
27
+ ### ❤️ Contributors
28
+
29
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
30
+
3
31
  ## v0.15.0
4
32
 
5
33
  [compare changes](https://github.com/AntelopeJS/dms/compare/v0.14.0...v0.15.0)
package/README.md CHANGED
@@ -59,7 +59,7 @@ pnpm dev # backend on http://localhost:5010
59
59
  pnpm frontend:dev # dashboard on http://localhost:3001, in a second terminal
60
60
  ```
61
61
 
62
- Open `http://localhost:3001` and create the first administrator. A page is a class whose static fields are blocks:
62
+ Open the address the backend logs after `No owner exists yet` and create the first administrator. A page is a class whose static fields are blocks:
63
63
 
64
64
  ```ts
65
65
  import { PageController, RegisterPage, pagesCategory } from "@antelopejs/interface-dms/page";
@@ -193,6 +193,11 @@ export class JourneyContext {
193
193
  return adminCredentials(this.state);
194
194
  }
195
195
 
196
+ /** The setup token the run's backend accepts for the first registration (`DMS_SETUP_TOKEN`). */
197
+ setupToken() {
198
+ return this.state.secrets.DMS_SETUP_TOKEN;
199
+ }
200
+
196
201
  /** Creates the administrator through `POST /api/onboarding/register`, then signs it in. */
197
202
  onboard(options = {}) {
198
203
  return onboard(this.state, options);
@@ -168,6 +168,7 @@ export async function onboard(state, options) {
168
168
  method: "POST",
169
169
  body: {
170
170
  ...admin,
171
+ setupToken: state.secrets.DMS_SETUP_TOKEN,
171
172
  platformName: options.platformName ?? `Verify ${state.id}`,
172
173
  },
173
174
  },
@@ -42,6 +42,7 @@ const SECRET_NAMES = [
42
42
  "DMS_BOOTSTRAP_SECRET",
43
43
  "DMS_HTML_RENDER_SECRET",
44
44
  "DMS_SESSION_SECRET",
45
+ "DMS_SETUP_TOKEN",
45
46
  ];
46
47
  const DROPPED_PREFIXES = ["ANTELOPEJS_", "npm_", "PNPM_", "DMS_", "MONGO_"];
47
48
 
@@ -48,6 +48,11 @@ export interface LoginPrefillConfig {
48
48
  email: string;
49
49
  password: string;
50
50
  }
51
+ export interface ProvisioningLeaseConfig {
52
+ renewEveryMs: number;
53
+ staleAfterMs: number;
54
+ pollEveryMs: number;
55
+ }
51
56
  export interface Config {
52
57
  auth?: AuthConfig;
53
58
  htmlRender?: HtmlRenderConfig;
@@ -61,12 +66,14 @@ export interface Config {
61
66
  frontend?: FrontendConfig;
62
67
  store?: StoreConfig;
63
68
  docsPreview?: boolean;
69
+ provisioningLease?: Partial<ProvisioningLeaseConfig>;
64
70
  }
65
71
  export declare const DEFAULT_ACCESS_TOKEN_LIFETIME = 3600000;
66
72
  export declare const DEFAULT_MAX_UPLOAD_SIZE: number;
67
73
  export declare const DEFAULT_CLIENT_BASE_URL = "http://localhost:3001";
68
74
  export declare const DEFAULT_API_BASE_URL = "http://127.0.0.1:5010";
69
75
  export declare function getConfig(): Config;
76
+ export declare function getProvisioningLeaseConfig(): ProvisioningLeaseConfig;
70
77
  export declare function setDevClientBaseUrl(url: string): void;
71
78
  export declare function getClientBaseUrl(): string | undefined;
72
79
  export declare function setDevApiBaseUrl(url: string | undefined): void;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_API_BASE_URL = exports.DEFAULT_CLIENT_BASE_URL = exports.DEFAULT_MAX_UPLOAD_SIZE = exports.DEFAULT_ACCESS_TOKEN_LIFETIME = void 0;
4
4
  exports.getConfig = getConfig;
5
+ exports.getProvisioningLeaseConfig = getProvisioningLeaseConfig;
5
6
  exports.setDevClientBaseUrl = setDevClientBaseUrl;
6
7
  exports.getClientBaseUrl = getClientBaseUrl;
7
8
  exports.setDevApiBaseUrl = setDevApiBaseUrl;
@@ -54,6 +55,14 @@ let devApiBaseUrl;
54
55
  function getConfig() {
55
56
  return globalConfig;
56
57
  }
58
+ const DEFAULT_PROVISIONING_LEASE = {
59
+ renewEveryMs: 10 * time_1.MILLISECONDS_PER_SECOND,
60
+ staleAfterMs: time_1.MILLISECONDS_PER_MINUTE,
61
+ pollEveryMs: 5 * time_1.MILLISECONDS_PER_SECOND,
62
+ };
63
+ function getProvisioningLeaseConfig() {
64
+ return { ...DEFAULT_PROVISIONING_LEASE, ...globalConfig.provisioningLease };
65
+ }
57
66
  function setDevClientBaseUrl(url) {
58
67
  devClientBaseUrl = url;
59
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare function assertProductionSecrets(): void;
2
2
  export declare function resolveClientBaseUrl(raw: string | undefined, dev: boolean): string;
3
+ export declare function resolveConfiguredSetupToken(): string | undefined;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertProductionSecrets = assertProductionSecrets;
4
4
  exports.resolveClientBaseUrl = resolveClientBaseUrl;
5
+ exports.resolveConfiguredSetupToken = resolveConfiguredSetupToken;
5
6
  const state_1 = require("./internal/state");
6
7
  const PUBLIC_DEVELOPMENT_SECRET = "dev";
7
8
  const HTTP_PROTOCOLS = ["http:", "https:"];
@@ -59,4 +60,14 @@ function resolveClientBaseUrl(raw, dev) {
59
60
  return state_1.DEFAULT_CLIENT_BASE_URL;
60
61
  throw new Error("[DMS] clientBaseUrl is required in production (set it from DMS_CLIENT_BASE_URL in the DMS templates): e-mail links, payment redirects and CORS start from the dashboard's origin, and the development one is localhost.");
61
62
  }
63
+ const MIN_SETUP_TOKEN_LENGTH = 16;
64
+ function resolveConfiguredSetupToken() {
65
+ const value = process.env.DMS_SETUP_TOKEN?.trim();
66
+ if (!value)
67
+ return undefined;
68
+ if (value.length < MIN_SETUP_TOKEN_LENGTH) {
69
+ throw new Error(`[DMS] DMS_SETUP_TOKEN must be at least ${MIN_SETUP_TOKEN_LENGTH} characters: it is the only proof that the first owner registration comes from whoever deployed the instance.`);
70
+ }
71
+ return value;
72
+ }
62
73
  //# sourceMappingURL=startup-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../../src/config/startup-config.ts"],"names":[],"mappings":";;AA8CA,0DAMC;AAkCD,oDAUC;AAhGD,4CAI0B;AAG1B,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,MAAM,SAAS,GAAG,GAAG,CAAC;AAUtB,MAAM,kBAAkB,GAAuB;IAC7C;QACE,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,iCAAiC;QACzC,OAAO,EAAE,yCAAyC;QAClD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,qBAAa,GAAE,CAAC,SAAS;KACtC;IACD;QACE,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,kEAAkE;QAC1E,OAAO,EAAE,8DAA8D;QACvE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,2BAAmB,GAAE,CAAC,aAAa;KAChD;CACF,CAAC;AAEF,SAAS,cAAc,CAAC,KAAyB;IAC/C,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7B,OAAO,CAAC,MAAM,IAAI,MAAM,KAAK,yBAAyB,CAAC;AACzD,CAAC;AAQD,SAAgB,uBAAuB;IACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,IAAI,KAAK,CACb,SAAS,MAAM,CAAC,OAAO,2CAA2C,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,OAAO,sBAAsB,yBAAyB,iCAAiC,CACpL,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,OAAO,IAAI,KAAK,CACd,yIAAyI,GAAG,IAAI,CACjJ,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,QAAQ,GACZ,GAAG,CAAC,QAAQ,KAAK,SAAS;QAC1B,CAAC,GAAG,CAAC,MAAM;QACX,CAAC,GAAG,CAAC,IAAI;QACT,CAAC,GAAG,CAAC,QAAQ;QACb,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AASD,SAAgB,oBAAoB,CAClC,GAAuB,EACvB,GAAY;IAEZ,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAI,KAAK;QAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,GAAG;QAAE,OAAO,+BAAuB,CAAC;IACxC,MAAM,IAAI,KAAK,CACb,yNAAyN,CAC1N,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../../src/config/startup-config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./models";
2
2
  export * from "./tables";
3
3
  export * from "./guard-row";
4
+ export * from "./setup-token";
package/dist/db/index.js CHANGED
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./models"), exports);
18
18
  __exportStar(require("./tables"), exports);
19
19
  __exportStar(require("./guard-row"), exports);
20
+ __exportStar(require("./setup-token"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B"}
@@ -1,4 +1,5 @@
1
1
  export * from "./attachments.model";
2
+ export * from "./setupToken.model";
2
3
  export * from "./signInAttempts.model";
3
4
  export * from "./systemState.model";
4
5
  export * from "./userEmailChanges.model";
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./attachments.model"), exports);
18
+ __exportStar(require("./setupToken.model"), exports);
18
19
  __exportStar(require("./signInAttempts.model"), exports);
19
20
  __exportStar(require("./systemState.model"), exports);
20
21
  __exportStar(require("./userEmailChanges.model"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,6DAA2C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC;AACnC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,6DAA2C"}
@@ -0,0 +1,29 @@
1
+ import { SetupToken } from "../tables";
2
+ declare const SetupTokenModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<SetupToken>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<SetupToken | undefined>;
7
+ getBy(index: keyof SetupToken, ...keys: any[]): PromiseLike<SetupToken[]>;
8
+ getAll(): PromiseLike<SetupToken[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken> | import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<SetupToken>;
16
+ fromPlainData(obj: any): SetupToken;
17
+ fromDatabase(obj: any): SetupToken | undefined;
18
+ toDatabase(obj: any): Record<string, any>;
19
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
20
+ };
21
+ export declare class SetupTokenModel extends SetupTokenModel_base {
22
+ private current;
23
+ private write;
24
+ ensure(configured?: string): Promise<string>;
25
+ claim(candidate: string | undefined): Promise<string | undefined>;
26
+ restore(token: string): Promise<void>;
27
+ clear(): Promise<void>;
28
+ }
29
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetupTokenModel = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
6
+ const tables_1 = require("../tables");
7
+ const SETUP_TOKEN_ID = "owner";
8
+ const GENERATED_TOKEN_BYTES = 32;
9
+ function digest(value) {
10
+ return (0, node_crypto_1.createHash)("sha256").update(value).digest();
11
+ }
12
+ function sameSecret(left, right) {
13
+ return (0, node_crypto_1.timingSafeEqual)(digest(left), digest(right));
14
+ }
15
+ class SetupTokenModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.SetupToken, tables_1.setupTokenTableName) {
16
+ async current() {
17
+ const row = await this.table.get(SETUP_TOKEN_ID).run();
18
+ return row ? SetupTokenModel.fromDatabase(row) : undefined;
19
+ }
20
+ async write(token, conflict) {
21
+ await this.table
22
+ .insert({ _id: SETUP_TOKEN_ID, token, createdAt: new Date() }, conflict ? { conflict } : undefined)
23
+ .run();
24
+ }
25
+ async ensure(configured) {
26
+ if (configured) {
27
+ await this.write(configured, "replace");
28
+ return configured;
29
+ }
30
+ const existing = await this.current();
31
+ if (existing)
32
+ return existing.token;
33
+ const generated = (0, node_crypto_1.randomBytes)(GENERATED_TOKEN_BYTES).toString("base64url");
34
+ try {
35
+ await this.write(generated, undefined);
36
+ return generated;
37
+ }
38
+ catch (error) {
39
+ const winner = await this.current();
40
+ if (winner)
41
+ return winner.token;
42
+ throw error;
43
+ }
44
+ }
45
+ async claim(candidate) {
46
+ if (!candidate)
47
+ return undefined;
48
+ const stored = await this.current();
49
+ if (!stored || !sameSecret(stored.token, candidate))
50
+ return undefined;
51
+ const deleted = await this.table.get(SETUP_TOKEN_ID).delete().run();
52
+ return deleted === 1 ? stored.token : undefined;
53
+ }
54
+ async restore(token) {
55
+ await this.write(token, "replace");
56
+ }
57
+ async clear() {
58
+ await this.table.get(SETUP_TOKEN_ID).delete().run();
59
+ }
60
+ }
61
+ exports.SetupTokenModel = SetupTokenModel;
62
+ //# sourceMappingURL=setupToken.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupToken.model.js","sourceRoot":"","sources":["../../../src/db/models/setupToken.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function instanceHasUsers(): Promise<boolean>;
2
+ export declare function announceSetupToken(): Promise<void>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.instanceHasUsers = instanceHasUsers;
4
+ exports.announceSetupToken = announceSetupToken;
5
+ const logging_1 = require("@antelopejs/interface-core/logging");
6
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
7
+ const db_1 = require("@antelopejs/interface-dms/auth/db");
8
+ const config_1 = require("../config");
9
+ const startup_config_1 = require("../config/startup-config");
10
+ const models_1 = require("./models");
11
+ const ONBOARDING_PATH = "/onboarding";
12
+ async function instanceHasUsers() {
13
+ const users = await (0, interface_database_decorators_1.GetModel)(db_1.UserModel).table.slice(0, 1).run();
14
+ return users.length > 0;
15
+ }
16
+ async function announceSetupToken() {
17
+ const tokens = (0, interface_database_decorators_1.GetModel)(models_1.SetupTokenModel);
18
+ if (await instanceHasUsers()) {
19
+ await tokens.clear();
20
+ return;
21
+ }
22
+ const configured = (0, startup_config_1.resolveConfiguredSetupToken)();
23
+ const token = await tokens.ensure(configured);
24
+ const address = `${(0, config_1.getConfig)().clientBaseUrl ?? ""}${ONBOARDING_PATH}`;
25
+ const shown = configured ? "<DMS_SETUP_TOKEN>" : token;
26
+ logging_1.Logging.Warn(`[DMS] No owner exists yet. To create it, open ${address}?token=${shown}`);
27
+ }
28
+ //# sourceMappingURL=setup-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-token.js","sourceRoot":"","sources":["../../src/db/setup-token.ts"],"names":[],"mappings":";;AAUA,4CAGC;AAUD,gDAcC;AArCD,gEAA6D;AAC7D,6FAAqE;AACrE,0DAA8D;AAC9D,sCAAsC;AACtC,6DAAuE;AACvE,qCAA2C;AAE3C,MAAM,eAAe,GAAG,aAAa,CAAC;AAG/B,KAAK,UAAU,gBAAgB;IACpC,MAAM,KAAK,GAAG,MAAM,IAAA,wCAAQ,EAAC,cAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC;AAUM,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,IAAA,wCAAQ,EAAC,wBAAe,CAAC,CAAC;IACzC,IAAI,MAAM,gBAAgB,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,4CAA2B,GAAE,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,IAAA,kBAAS,GAAE,CAAC,aAAa,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,iBAAO,CAAC,IAAI,CACV,iDAAiD,OAAO,UAAU,KAAK,EAAE,CAC1E,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./attachments.table";
2
+ export * from "./setupToken.table";
2
3
  export * from "./signInAttempts.table";
3
4
  export * from "./systemState.table";
4
5
  export * from "./userEmailChanges.table";
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./attachments.table"), exports);
18
+ __exportStar(require("./setupToken.table"), exports);
18
19
  __exportStar(require("./signInAttempts.table"), exports);
19
20
  __exportStar(require("./systemState.table"), exports);
20
21
  __exportStar(require("./userEmailChanges.table"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC;AACnC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C"}
@@ -0,0 +1,7 @@
1
+ import { Table } from "@antelopejs/interface-database-decorators";
2
+ export declare const setupTokenTableName = "setup_token";
3
+ export declare class SetupToken extends Table {
4
+ _id: string;
5
+ token: string;
6
+ createdAt: Date;
7
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SetupToken = exports.setupTokenTableName = void 0;
13
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
14
+ const constants_1 = require("@antelopejs/interface-dms/constants");
15
+ exports.setupTokenTableName = "setup_token";
16
+ let SetupToken = class SetupToken extends interface_database_decorators_1.Table {
17
+ };
18
+ exports.SetupToken = SetupToken;
19
+ __decorate([
20
+ (0, interface_database_decorators_1.Field)("string"),
21
+ __metadata("design:type", String)
22
+ ], SetupToken.prototype, "_id", void 0);
23
+ __decorate([
24
+ (0, interface_database_decorators_1.Field)("string"),
25
+ __metadata("design:type", String)
26
+ ], SetupToken.prototype, "token", void 0);
27
+ __decorate([
28
+ (0, interface_database_decorators_1.Field)("date"),
29
+ __metadata("design:type", Date)
30
+ ], SetupToken.prototype, "createdAt", void 0);
31
+ exports.SetupToken = SetupToken = __decorate([
32
+ (0, interface_database_decorators_1.RegisterTable)(exports.setupTokenTableName, constants_1.CORE_SCHEMA_NAME)
33
+ ], SetupToken);
34
+ //# sourceMappingURL=setupToken.table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupToken.table.js","sourceRoot":"","sources":["../../../src/db/tables/setupToken.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAImD;AACnD,mEAAuE;AAE1D,QAAA,mBAAmB,GAAG,aAAa,CAAC;AAS1C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,qCAAK;CAOpC,CAAA;AAPY,gCAAU;AAEI;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uCAAqB;AAEZ;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yCAAuB;AAEhB;IAAtB,IAAA,qCAAK,EAAC,MAAM,CAAC;8BAAoB,IAAI;6CAAC;qBAN5B,UAAU;IADtB,IAAA,6CAAa,EAAC,2BAAmB,EAAE,4BAAgB,CAAC;GACxC,UAAU,CAOtB"}
@@ -27,6 +27,7 @@ const module_catalog_1 = require("./module-catalog");
27
27
  const access_1 = require("./access");
28
28
  const dynamic_menu_1 = require("./dynamic-menu");
29
29
  const quick_action_access_1 = require("./quick-action-access");
30
+ const public_layout_1 = require("./public-layout");
30
31
  exports.PAGE_LAYOUT_SLUG_PARAMETER = "slug";
31
32
  exports.PAGE_REQUEST_PARAMETERS = ["path", "shared"];
32
33
  function pageQueryOf(requestContext, ownParameters = [exports.PAGE_LAYOUT_SLUG_PARAMETER]) {
@@ -91,17 +92,11 @@ async function buildPagePayload(...arguments_) {
91
92
  }),
92
93
  resolvePageNavBadges(user, context, requestContext),
93
94
  ]);
94
- if (!includeShared) {
95
- const routes = (0, menu_categories_1.withCategoryRefs)(await annotateRegistryAccess({ [registeredSlug]: route }, context));
95
+ const routes = (0, menu_categories_1.withCategoryRefs)(await annotateRegistryAccess({ [registeredSlug]: route }, context));
96
+ if (!includeShared)
96
97
  return { route: routes[registeredSlug], layout, navBadges };
97
- }
98
98
  const shared = await buildSiteLayoutFor(user, tenantId, context);
99
- return {
100
- route: shared.siteLayout.pages[registeredSlug],
101
- shared,
102
- layout,
103
- navBadges,
104
- };
99
+ return { route: routes[registeredSlug], shared, layout, navBadges };
105
100
  }
106
101
  async function annotateRegistryAccess(registry, context) {
107
102
  const annotated = {};
@@ -151,12 +146,13 @@ async function buildNavBadges(user, memberModel, roleModel, tenantId, requestCon
151
146
  async function buildSiteLayoutFor(user, tenantId, accessContext) {
152
147
  const banners = (0, layout_banners_1.resolveLayoutBanners)(buildLayoutBannerContext(user, tenantId, accessContext));
153
148
  const dynamicChildren = await (0, dynamic_menu_1.resolveDynamicChildren)(user, tenantId, accessContext);
154
- return {
149
+ const layout = {
155
150
  siteLayout: await annotateSiteLayoutAccess(accessContext, banners),
156
151
  siteLayoutTree: (0, menu_categories_1.treeWithCategoryRefs)(await (0, dynamic_menu_1.addAccessToTree)(state_1.navigationTree, accessContext, true, dynamicChildren)),
157
152
  quickActions: await (0, quick_actions_1.getQuickActionsForUser)((target) => (0, quick_action_access_1.resolveQuickActionTarget)(target, accessContext)),
158
153
  modules: await (0, module_catalog_1.buildModuleAccessMap)(accessContext),
159
154
  isOwner: accessContext.gated.isOwner,
160
155
  };
156
+ return user ? layout : (0, public_layout_1.publicSiteLayoutOnly)(layout);
161
157
  }
162
158
  //# sourceMappingURL=payloads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/payloads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/payloads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { SiteLayoutPayload } from "./types";
2
+ export declare function publicSiteLayoutOnly(layout: SiteLayoutPayload): SiteLayoutPayload;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.publicSiteLayoutOnly = publicSiteLayoutOnly;
4
+ function withOnlyReachableChildren(node) {
5
+ const children = {};
6
+ for (const [key, child] of Object.entries(node.children)) {
7
+ const pruned = withOnlyReachableChildren(child);
8
+ if (pruned.hasAccess !== false || Object.keys(pruned.children).length > 0)
9
+ children[key] = pruned;
10
+ }
11
+ return {
12
+ ...node,
13
+ children,
14
+ ...(node.childrenOrders && {
15
+ childrenOrders: node.childrenOrders.filter((key) => key in children),
16
+ }),
17
+ };
18
+ }
19
+ function categoriesNamedBy(categories, pages) {
20
+ const kept = {};
21
+ const pending = Object.values(pages).flatMap((page) => page.categoryId ? [page.categoryId] : []);
22
+ for (let id = pending.pop(); id !== undefined; id = pending.pop()) {
23
+ const category = categories[id];
24
+ if (!category || id in kept)
25
+ continue;
26
+ kept[id] = category;
27
+ if (category.categoryId)
28
+ pending.push(category.categoryId);
29
+ }
30
+ return kept;
31
+ }
32
+ function publicSiteLayoutOnly(layout) {
33
+ const pages = Object.fromEntries(Object.entries(layout.siteLayout.pages).filter(([, page]) => page.hasAccess));
34
+ return {
35
+ ...layout,
36
+ siteLayout: {
37
+ ...layout.siteLayout,
38
+ pages,
39
+ categories: categoriesNamedBy(layout.siteLayout.categories, pages),
40
+ },
41
+ siteLayoutTree: withOnlyReachableChildren(layout.siteLayoutTree),
42
+ modules: Object.fromEntries(Object.entries(layout.modules).filter(([, module]) => module.hasAccess)),
43
+ };
44
+ }
45
+ //# sourceMappingURL=public-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-layout.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/public-layout.ts"],"names":[],"mappings":";;AA6CA,oDAoBC;AA5DD,SAAS,yBAAyB,CAAC,IAAgB;IACjD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YACvE,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC;SACrE,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,KAAsB;IAEtB,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC;IACF,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI;YAAE,SAAS;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACpB,IAAI,QAAQ,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,SAAgB,oBAAoB,CAClC,MAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAC7B,CACF,CAAC;IACF,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,KAAK;YACL,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;SACnE;QACD,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,cAAc,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CACxE;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import "./db";
2
1
  import "./realtime";
3
2
  import "./implementations/dms-auth/email-templates";
4
3
  import "./pages";
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ const modules_1 = require("@antelopejs/interface-core/modules");
46
46
  const runtime_1 = require("@antelopejs/interface-core/runtime");
47
47
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
48
48
  const constants_1 = require("@antelopejs/interface-dms/constants");
49
- require("./db");
49
+ const db_1 = require("./db");
50
50
  require("./realtime");
51
51
  require("./implementations/dms-auth/email-templates");
52
52
  require("./pages");
@@ -73,6 +73,7 @@ __exportStar(require("./config"), exports);
73
73
  let cronTasks = [];
74
74
  let staleExportsSweep = Promise.resolve();
75
75
  let defaultTenantProvisioning;
76
+ let provisioningWait = new AbortController();
76
77
  let globalRealtimeConfig;
77
78
  async function construct(config) {
78
79
  const { dev } = await (0, runtime_1.GetRuntimeInfo)();
@@ -157,7 +158,8 @@ function destroy() {
157
158
  function onModulesStarted() {
158
159
  if (defaultTenantProvisioning)
159
160
  return;
160
- defaultTenantProvisioning = (0, utils_1.provisionDefaultTenant)().finally(() => {
161
+ provisioningWait = new AbortController();
162
+ defaultTenantProvisioning = (0, utils_1.provisionDefaultTenant)(provisioningWait.signal).finally(() => {
161
163
  defaultTenantProvisioning = undefined;
162
164
  });
163
165
  }
@@ -167,6 +169,7 @@ async function start() {
167
169
  await (0, interface_database_decorators_1.RegisterSchema)(constants_1.CORE_SCHEMA_NAME);
168
170
  await (0, interface_database_decorators_1.RegisterSchema)(constants_1.TENANT_SCHEMA_NAME);
169
171
  await (0, utils_1.ensureDefaultTenantExists)();
172
+ await (0, db_1.announceSetupToken)();
170
173
  await (0, utils_1.registerExistingTenantInstances)();
171
174
  await (0, hooks_1.SettleHook)(hooks_1.Hook.DATABASE_INITIALIZED);
172
175
  staleExportsSweep = (0, crons_1.runSweepStaleExports)().catch((error) => {
@@ -183,6 +186,7 @@ async function start() {
183
186
  }
184
187
  async function stop() {
185
188
  modules_1.Events.ModulesStarted.unregister(onModulesStarted);
189
+ provisioningWait.abort();
186
190
  await defaultTenantProvisioning;
187
191
  await staleExportsSweep;
188
192
  (0, hooks_1.UnsettleHook)(hooks_1.Hook.DATABASE_INITIALIZED);