@acmekit/auth 2.13.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 (59) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +14 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/joiner-config.d.ts +2 -0
  7. package/dist/joiner-config.d.ts.map +1 -0
  8. package/dist/joiner-config.js +9 -0
  9. package/dist/joiner-config.js.map +1 -0
  10. package/dist/loaders/providers.d.ts +5 -0
  11. package/dist/loaders/providers.d.ts.map +1 -0
  12. package/dist/loaders/providers.js +41 -0
  13. package/dist/loaders/providers.js.map +1 -0
  14. package/dist/migrations/Migration20240205025928.d.ts +6 -0
  15. package/dist/migrations/Migration20240205025928.d.ts.map +1 -0
  16. package/dist/migrations/Migration20240205025928.js +18 -0
  17. package/dist/migrations/Migration20240205025928.js.map +1 -0
  18. package/dist/migrations/Migration20240529080336.d.ts +6 -0
  19. package/dist/migrations/Migration20240529080336.d.ts.map +1 -0
  20. package/dist/migrations/Migration20240529080336.js +27 -0
  21. package/dist/migrations/Migration20240529080336.js.map +1 -0
  22. package/dist/migrations/Migration20241202100304.d.ts +6 -0
  23. package/dist/migrations/Migration20241202100304.d.ts.map +1 -0
  24. package/dist/migrations/Migration20241202100304.js +20 -0
  25. package/dist/migrations/Migration20241202100304.js.map +1 -0
  26. package/dist/models/auth-identity.d.ts +13 -0
  27. package/dist/models/auth-identity.d.ts.map +1 -0
  28. package/dist/models/auth-identity.js +17 -0
  29. package/dist/models/auth-identity.js.map +1 -0
  30. package/dist/models/index.d.ts +3 -0
  31. package/dist/models/index.d.ts.map +1 -0
  32. package/dist/models/index.js +8 -0
  33. package/dist/models/index.js.map +1 -0
  34. package/dist/models/provider-identity.d.ts +13 -0
  35. package/dist/models/provider-identity.d.ts.map +1 -0
  36. package/dist/models/provider-identity.js +24 -0
  37. package/dist/models/provider-identity.js.map +1 -0
  38. package/dist/providers/acmekit-cloud-auth.d.ts +29 -0
  39. package/dist/providers/acmekit-cloud-auth.d.ts.map +1 -0
  40. package/dist/providers/acmekit-cloud-auth.js +146 -0
  41. package/dist/providers/acmekit-cloud-auth.js.map +1 -0
  42. package/dist/services/auth-module.d.ts +44 -0
  43. package/dist/services/auth-module.d.ts.map +1 -0
  44. package/dist/services/auth-module.js +204 -0
  45. package/dist/services/auth-module.js.map +1 -0
  46. package/dist/services/auth-provider.d.ts +18 -0
  47. package/dist/services/auth-provider.d.ts.map +1 -0
  48. package/dist/services/auth-provider.js +61 -0
  49. package/dist/services/auth-provider.js.map +1 -0
  50. package/dist/services/index.d.ts +3 -0
  51. package/dist/services/index.d.ts.map +1 -0
  52. package/dist/services/index.js +11 -0
  53. package/dist/services/index.js.map +1 -0
  54. package/dist/tsconfig.tsbuildinfo +1 -0
  55. package/dist/types/index.d.ts +46 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +6 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/package.json +45 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Auth Module
2
+
3
+ The Auth Module is AcmeKit’s authentication engine engine. It provides functions to authenticate users through identity providers and store metadata about users that can be used for authorization purposes.
@@ -0,0 +1,7 @@
1
+ import "./types";
2
+ import { AuthModuleService } from "./services";
3
+ declare const _default: import("@acmekit/types").ModuleExports<typeof AuthModuleService> & {
4
+ linkable: Record<string, any>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;;;;AAI7C,wBAGE"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("./types");
7
+ const _services_1 = require("./services");
8
+ const providers_1 = __importDefault(require("./loaders/providers"));
9
+ const utils_1 = require("@acmekit/framework/utils");
10
+ exports.default = (0, utils_1.Module)(utils_1.Modules.AUTH, {
11
+ service: _services_1.AuthModuleService,
12
+ loaders: [providers_1.default],
13
+ });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mBAAgB;AAChB,yCAA6C;AAC7C,oEAA+C;AAC/C,oDAA0D;AAE1D,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,6BAAiB;IAC1B,OAAO,EAAE,CAAC,mBAAa,CAAC;CACzB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const joinerConfig: Omit<import("@acmekit/types").ModuleJoinerConfig, "serviceName" | "primaryKeys" | "alias" | "linkableKeys"> & Required<Pick<import("@acmekit/types").ModuleJoinerConfig, "serviceName" | "primaryKeys" | "alias" | "linkableKeys">>;
2
+ //# sourceMappingURL=joiner-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joiner-config.d.ts","sourceRoot":"","sources":["../src/joiner-config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,qOAEvB,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.joinerConfig = void 0;
4
+ const utils_1 = require("@acmekit/framework/utils");
5
+ const _models_1 = require("./models");
6
+ exports.joinerConfig = (0, utils_1.defineJoinerConfig)(utils_1.Modules.AUTH, {
7
+ models: [_models_1.AuthIdentity, _models_1.ProviderIdentity],
8
+ });
9
+ //# sourceMappingURL=joiner-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joiner-config.js","sourceRoot":"","sources":["../src/joiner-config.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;AACtE,qCAAwD;AAE3C,QAAA,YAAY,GAAG,IAAA,0BAAkB,EAAC,eAAO,CAAC,IAAI,EAAE;IAC3D,MAAM,EAAE,CAAC,sBAAY,EAAE,0BAAgB,CAAC;CACzC,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { LoaderOptions, ModulesSdkTypes } from "@acmekit/framework/types";
2
+ import { AuthModuleOptions } from "../types";
3
+ declare const _default: ({ container, options, }: LoaderOptions<(ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions) & AuthModuleOptions>) => Promise<void>;
4
+ export default _default;
5
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAEL,iBAAiB,EAElB,MAAM,QAAQ,CAAA;yBA6CO,yBAGnB,aAAa,CACd,CACI,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,GACC,iBAAiB,CACpB,KAAG,OAAO,CAAC,IAAI,CAAC;AATjB,wBAsBC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const awilix_1 = require("@acmekit/framework/awilix");
4
+ const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
5
+ const _types_1 = require("../types");
6
+ const acmekit_cloud_auth_1 = require("../providers/acmekit-cloud-auth");
7
+ const validateCloudOptions = (options) => {
8
+ const { oauth_authorize_endpoint, oauth_token_endpoint, environment_handle, sandbox_handle, api_key, callback_url, } = options ?? {};
9
+ if (!environment_handle && !sandbox_handle) {
10
+ return false;
11
+ }
12
+ if (!oauth_authorize_endpoint ||
13
+ !oauth_token_endpoint ||
14
+ !api_key ||
15
+ !callback_url) {
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ const registrationFn = async (klass, container, pluginOptions) => {
21
+ container.register({
22
+ [_types_1.AuthProviderRegistrationPrefix + pluginOptions.id]: (0, awilix_1.asFunction)((cradle) => new klass(cradle, pluginOptions.options ?? {}), {
23
+ lifetime: klass.LIFE_TIME || awilix_1.Lifetime.SINGLETON,
24
+ }),
25
+ });
26
+ container.registerAdd(_types_1.AuthIdentifiersRegistrationName, (0, awilix_1.asValue)(pluginOptions.id));
27
+ };
28
+ exports.default = async ({ container, options, }) => {
29
+ if (validateCloudOptions(options?.cloud) && !options?.cloud?.disabled) {
30
+ await registrationFn(acmekit_cloud_auth_1.AcmeKitCloudAuthService, container, {
31
+ options: options?.cloud,
32
+ id: "cloud",
33
+ });
34
+ }
35
+ await (0, modules_sdk_1.moduleProviderLoader)({
36
+ container,
37
+ providers: options?.providers || [],
38
+ registerServiceFn: registrationFn,
39
+ });
40
+ };
41
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":";;AAAA,sDAAyE;AACzE,gEAAqE;AAErE,mCAIe;AACf,wEAAyE;AAEzE,MAAM,oBAAoB,GAAG,CAAC,OAAmC,EAAE,EAAE;IACnE,MAAM,EACJ,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,YAAY,GACb,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,IAAI,CAAC,kBAAkB,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IACE,CAAC,wBAAwB;QACzB,CAAC,oBAAoB;QACrB,CAAC,OAAO;QACR,CAAC,YAAY,EACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE;IAC/D,SAAS,CAAC,QAAQ,CAAC;QACjB,CAAC,uCAA8B,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,IAAA,mBAAU,EAC7D,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAC1D;YACE,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,iBAAQ,CAAC,SAAS;SAChD,CACF;KACF,CAAC,CAAA;IAEF,SAAS,CAAC,WAAW,CACnB,wCAA+B,EAC/B,IAAA,gBAAO,EAAC,aAAa,CAAC,EAAE,CAAC,CAC1B,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,KAAK,EAAE,EACpB,SAAS,EACT,OAAO,GAOR,EAAiB,EAAE;IAClB,IAAI,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACtE,MAAM,cAAc,CAAC,4CAAuB,EAAE,SAAS,EAAE;YACvD,OAAO,EAAE,OAAO,EAAE,KAAK;YACvB,EAAE,EAAE,OAAO;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,IAAA,kCAAoB,EAAC;QACzB,SAAS;QACT,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;QACnC,iBAAiB,EAAE,cAAc;KAClC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from "@acmekit/framework/mikro-orm/migrations";
2
+ export declare class Migration20240205025928 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20240205025928.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20240205025928.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20240205025928.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20240205025928 = void 0;
4
+ const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
5
+ class Migration20240205025928 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql('create table if not exists "auth_identity" ("id" text not null, "entity_id" text not null, "provider" text not null, "user_metadata" jsonb null, "app_metadata" jsonb null, "provider_metadata" jsonb null, constraint "auth_identity_pkey" primary key ("id"));');
8
+ this.addSql('alter table "auth_identity" drop constraint if exists "IDX_auth_identity_provider_entity_id"');
9
+ this.addSql('alter table "auth_identity" add constraint "IDX_auth_identity_provider_entity_id" unique ("provider", "entity_id");');
10
+ this.addSql('alter table "auth_identity" drop column if exists "scope";');
11
+ this.addSql(`alter table "auth_identity" alter column "app_metadata" drop not null;`);
12
+ }
13
+ async down() {
14
+ this.addSql('drop table if exists "auth_identity" cascade;');
15
+ }
16
+ }
17
+ exports.Migration20240205025928 = Migration20240205025928;
18
+ //# sourceMappingURL=Migration20240205025928.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20240205025928.js","sourceRoot":"","sources":["../../src/migrations/Migration20240205025928.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,kQAAkQ,CACnQ,CAAA;QACD,IAAI,CAAC,MAAM,CACT,8FAA8F,CAC/F,CAAA;QACD,IAAI,CAAC,MAAM,CACT,qHAAqH,CACtH,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAA;QACzE,IAAI,CAAC,MAAM,CACT,wEAAwE,CACzE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAA;IAC9D,CAAC;CACF;AArBD,0DAqBC"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from "@acmekit/framework/mikro-orm/migrations";
2
+ export declare class Migration20240529080336 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20240529080336.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20240529080336.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20240529080336.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB5B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20240529080336 = void 0;
4
+ const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
5
+ class Migration20240529080336 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql('create table if not exists "provider_identity" ("id" text not null, "entity_id" text not null, "provider" text not null, "auth_identity_id" text not null, "user_metadata" jsonb null, "provider_metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), constraint "provider_identity_pkey" primary key ("id"));');
8
+ this.addSql('CREATE INDEX IF NOT EXISTS "IDX_provider_identity_auth_identity_id" ON "provider_identity" (auth_identity_id);');
9
+ this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_provider_identity_provider_entity_id" ON "provider_identity" (entity_id, provider);');
10
+ this.addSql('alter table if exists "provider_identity" add constraint "provider_identity_auth_identity_id_foreign" foreign key ("auth_identity_id") references "auth_identity" ("id") on update cascade on delete cascade;');
11
+ this.addSql('alter table if exists "auth_identity" add column if not exists "created_at" timestamptz not null default now(), add column "updated_at" timestamptz not null default now();');
12
+ this.addSql('alter table if exists "auth_identity" drop constraint if exists "IDX_auth_identity_provider_entity_id";');
13
+ this.addSql('alter table if exists "auth_identity" drop column if exists "entity_id";');
14
+ this.addSql('alter table if exists "auth_identity" drop column if exists "provider";');
15
+ this.addSql('alter table if exists "auth_identity" drop column if exists "user_metadata";');
16
+ this.addSql('alter table if exists "auth_identity" drop column if exists "provider_metadata";');
17
+ }
18
+ async down() {
19
+ this.addSql('drop table if exists "provider_identity" cascade;');
20
+ this.addSql('alter table if exists "auth_identity" add column if not exists "entity_id" text not null, add column "provider" text not null, add column "user_metadata" jsonb null, add column "provider_metadata" jsonb null;');
21
+ this.addSql('alter table if exists "auth_identity" alter column "app_metadata" type jsonb using ("app_metadata"::jsonb);');
22
+ this.addSql('alter table if exists "auth_identity" alter column "app_metadata" set not null;');
23
+ this.addSql('alter table if exists "auth_identity" add constraint "IDX_auth_identity_provider_entity_id" unique ("provider", "entity_id");');
24
+ }
25
+ }
26
+ exports.Migration20240529080336 = Migration20240529080336;
27
+ //# sourceMappingURL=Migration20240529080336.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20240529080336.js","sourceRoot":"","sources":["../../src/migrations/Migration20240529080336.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,mXAAmX,CACpX,CAAA;QACD,IAAI,CAAC,MAAM,CACT,gHAAgH,CACjH,CAAA;QACD,IAAI,CAAC,MAAM,CACT,4HAA4H,CAC7H,CAAA;QAED,IAAI,CAAC,MAAM,CACT,+MAA+M,CAChN,CAAA;QAED,IAAI,CAAC,MAAM,CACT,6KAA6K,CAC9K,CAAA;QAED,IAAI,CAAC,MAAM,CACT,yGAAyG,CAC1G,CAAA;QACD,IAAI,CAAC,MAAM,CACT,0EAA0E,CAC3E,CAAA;QACD,IAAI,CAAC,MAAM,CACT,yEAAyE,CAC1E,CAAA;QACD,IAAI,CAAC,MAAM,CACT,8EAA8E,CAC/E,CAAA;QACD,IAAI,CAAC,MAAM,CACT,kFAAkF,CACnF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAA;QAEhE,IAAI,CAAC,MAAM,CACT,kNAAkN,CACnN,CAAA;QACD,IAAI,CAAC,MAAM,CACT,6GAA6G,CAC9G,CAAA;QACD,IAAI,CAAC,MAAM,CACT,iFAAiF,CAClF,CAAA;QACD,IAAI,CAAC,MAAM,CACT,+HAA+H,CAChI,CAAA;IACH,CAAC;CACF;AArDD,0DAqDC"}
@@ -0,0 +1,6 @@
1
+ import { Migration } from "@acmekit/framework/mikro-orm/migrations";
2
+ export declare class Migration20241202100304 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=Migration20241202100304.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20241202100304.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20241202100304.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5B"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20241202100304 = void 0;
4
+ const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
5
+ class Migration20241202100304 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql('alter table if exists "auth_identity" add column if not exists "deleted_at" timestamptz null;');
8
+ this.addSql('CREATE INDEX IF NOT EXISTS "IDX_auth_identity_deleted_at" ON "auth_identity" (deleted_at) WHERE deleted_at IS NULL;');
9
+ this.addSql('alter table if exists "provider_identity" add column if not exists "deleted_at" timestamptz null;');
10
+ this.addSql('CREATE INDEX IF NOT EXISTS "IDX_provider_identity_deleted_at" ON "provider_identity" (deleted_at) WHERE deleted_at IS NULL;');
11
+ }
12
+ async down() {
13
+ this.addSql('drop index if exists "IDX_auth_identity_deleted_at";');
14
+ this.addSql('alter table if exists "auth_identity" drop column if exists "deleted_at";');
15
+ this.addSql('drop index if exists "IDX_provider_identity_deleted_at";');
16
+ this.addSql('alter table if exists "provider_identity" drop column if exists "deleted_at";');
17
+ }
18
+ }
19
+ exports.Migration20241202100304 = Migration20241202100304;
20
+ //# sourceMappingURL=Migration20241202100304.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration20241202100304.js","sourceRoot":"","sources":["../../src/migrations/Migration20241202100304.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,+FAA+F,CAChG,CAAA;QACD,IAAI,CAAC,MAAM,CACT,qHAAqH,CACtH,CAAA;QAED,IAAI,CAAC,MAAM,CACT,mGAAmG,CACpG,CAAA;QACD,IAAI,CAAC,MAAM,CACT,6HAA6H,CAC9H,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAA;QACnE,IAAI,CAAC,MAAM,CACT,2EAA2E,CAC5E,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAA;QACvE,IAAI,CAAC,MAAM,CACT,+EAA+E,CAChF,CAAA;IACH,CAAC;CACF;AA5BD,0DA4BC"}
@@ -0,0 +1,13 @@
1
+ export declare const AuthIdentity: import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@acmekit/framework/utils").PrimaryKeyModifier<string, import("@acmekit/framework/utils").IdProperty>;
3
+ provider_identities: import("@acmekit/framework/utils").HasMany<() => import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder<{
4
+ id: import("@acmekit/framework/utils").PrimaryKeyModifier<string, import("@acmekit/framework/utils").IdProperty>;
5
+ entity_id: import("@acmekit/framework/utils").TextProperty;
6
+ provider: import("@acmekit/framework/utils").TextProperty;
7
+ auth_identity: import("@acmekit/framework/utils").BelongsTo<() => import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "auth_identity">, undefined>;
8
+ user_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
9
+ provider_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
10
+ }>, "provider_identity">>;
11
+ app_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
12
+ }>, "auth_identity">;
13
+ //# sourceMappingURL=auth-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-identity.d.ts","sourceRoot":"","sources":["../../src/models/auth-identity.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;oBAUrB,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthIdentity = void 0;
4
+ const utils_1 = require("@acmekit/framework/utils");
5
+ const provider_identity_1 = require("./provider-identity");
6
+ exports.AuthIdentity = utils_1.model
7
+ .define("auth_identity", {
8
+ id: utils_1.model.id({ prefix: "authid" }).primaryKey(),
9
+ provider_identities: utils_1.model.hasMany(() => provider_identity_1.ProviderIdentity, {
10
+ mappedBy: "auth_identity",
11
+ }),
12
+ app_metadata: utils_1.model.json().nullable(),
13
+ })
14
+ .cascades({
15
+ delete: ["provider_identities"],
16
+ });
17
+ //# sourceMappingURL=auth-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-identity.js","sourceRoot":"","sources":["../../src/models/auth-identity.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAChD,2DAAsD;AAEzC,QAAA,YAAY,GAAG,aAAK;KAC9B,MAAM,CAAC,eAAe,EAAE;IACvB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAC/C,mBAAmB,EAAE,aAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,oCAAgB,EAAE;QACzD,QAAQ,EAAE,eAAe;KAC1B,CAAC;IACF,YAAY,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,QAAQ,CAAC;IACR,MAAM,EAAE,CAAC,qBAAqB,CAAC;CAChC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { AuthIdentity } from "./auth-identity";
2
+ export { ProviderIdentity } from "./provider-identity";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderIdentity = exports.AuthIdentity = void 0;
4
+ var auth_identity_1 = require("./auth-identity");
5
+ Object.defineProperty(exports, "AuthIdentity", { enumerable: true, get: function () { return auth_identity_1.AuthIdentity; } });
6
+ var provider_identity_1 = require("./provider-identity");
7
+ Object.defineProperty(exports, "ProviderIdentity", { enumerable: true, get: function () { return provider_identity_1.ProviderIdentity; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,13 @@
1
+ export declare const ProviderIdentity: import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@acmekit/framework/utils").PrimaryKeyModifier<string, import("@acmekit/framework/utils").IdProperty>;
3
+ entity_id: import("@acmekit/framework/utils").TextProperty;
4
+ provider: import("@acmekit/framework/utils").TextProperty;
5
+ auth_identity: import("@acmekit/framework/utils").BelongsTo<() => import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder<{
6
+ id: import("@acmekit/framework/utils").PrimaryKeyModifier<string, import("@acmekit/framework/utils").IdProperty>;
7
+ provider_identities: import("@acmekit/framework/utils").HasMany<() => import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "provider_identity">>;
8
+ app_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
9
+ }>, "auth_identity">, undefined>;
10
+ user_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
11
+ provider_metadata: import("@acmekit/framework/utils").NullableModifier<Record<string, unknown>, import("@acmekit/framework/utils").JSONProperty>;
12
+ }>, "provider_identity">;
13
+ //# sourceMappingURL=provider-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-identity.d.ts","sourceRoot":"","sources":["../../src/models/provider-identity.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB;;;;;;;;;;;wBAiBzB,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderIdentity = void 0;
4
+ const utils_1 = require("@acmekit/framework/utils");
5
+ const auth_identity_1 = require("./auth-identity");
6
+ exports.ProviderIdentity = utils_1.model
7
+ .define("provider_identity", {
8
+ id: utils_1.model.id().primaryKey(),
9
+ entity_id: utils_1.model.text(),
10
+ provider: utils_1.model.text(),
11
+ auth_identity: utils_1.model.belongsTo(() => auth_identity_1.AuthIdentity, {
12
+ mappedBy: "provider_identities",
13
+ }),
14
+ user_metadata: utils_1.model.json().nullable(),
15
+ provider_metadata: utils_1.model.json().nullable(),
16
+ })
17
+ .indexes([
18
+ {
19
+ name: "IDX_provider_identity_provider_entity_id",
20
+ on: ["entity_id", "provider"],
21
+ unique: true,
22
+ },
23
+ ]);
24
+ //# sourceMappingURL=provider-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-identity.js","sourceRoot":"","sources":["../../src/models/provider-identity.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAChD,mDAA8C;AAEjC,QAAA,gBAAgB,GAAG,aAAK;KAClC,MAAM,CAAC,mBAAmB,EAAE;IAC3B,EAAE,EAAE,aAAK,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE;IACvB,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE;IACtB,aAAa,EAAE,aAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,4BAAY,EAAE;QACjD,QAAQ,EAAE,qBAAqB;KAChC,CAAC;IACF,aAAa,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACtC,iBAAiB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,OAAO,CAAC;IACP;QACE,IAAI,EAAE,0CAA0C;QAChD,EAAE,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QAC7B,MAAM,EAAE,IAAI;KACb;CACF,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, Logger } from "@acmekit/framework/types";
2
+ import { AbstractAuthModuleProvider } from "@acmekit/framework/utils";
3
+ import { AcmeKitCloudAuthProviderOptions } from "../types";
4
+ type InjectedDependencies = {
5
+ logger: Logger;
6
+ };
7
+ export declare class AcmeKitCloudAuthService extends AbstractAuthModuleProvider {
8
+ static identifier: string;
9
+ static DISPLAY_NAME: string;
10
+ protected config_: AcmeKitCloudAuthProviderOptions;
11
+ protected logger_: Logger;
12
+ constructor({ logger }: InjectedDependencies, options: AcmeKitCloudAuthProviderOptions);
13
+ register(_: any): Promise<AuthenticationResponse>;
14
+ authenticate(req: AuthenticationInput, authIdentityService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
15
+ validateCallback(req: AuthenticationInput, authIdentityService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
16
+ verify_(idToken: string | undefined, authIdentityService: AuthIdentityProviderService): Promise<{
17
+ success: boolean;
18
+ error: any;
19
+ authIdentity?: undefined;
20
+ } | {
21
+ success: boolean;
22
+ authIdentity: any;
23
+ error?: undefined;
24
+ }>;
25
+ private getRedirect;
26
+ private getClientId;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=acmekit-cloud-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acmekit-cloud-auth.d.ts","sourceRoot":"","sources":["../../src/providers/acmekit-cloud-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,MAAM,EACP,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAE3B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAA;AAIxD,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,uBAAwB,SAAQ,0BAA0B;IACrE,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAiC;IAEpD,SAAS,CAAC,OAAO,EAAE,+BAA+B,CAAA;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;gBAGvB,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAChC,OAAO,EAAE,+BAA+B;IAQpC,QAAQ,CAAC,CAAC,KAAA,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO5C,YAAY,CAChB,GAAG,EAAE,mBAAmB,EACxB,mBAAmB,EAAE,2BAA2B,GAC/C,OAAO,CAAC,sBAAsB,CAAC;IAoB5B,gBAAgB,CACpB,GAAG,EAAE,mBAAmB,EACxB,mBAAmB,EAAE,2BAA2B,GAC/C,OAAO,CAAC,sBAAsB,CAAC;IAmE5B,OAAO,CACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,mBAAmB,EAAE,2BAA2B;;;;;;;;;IAsDlD,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AcmeKitCloudAuthService = void 0;
7
+ const utils_1 = require("@acmekit/framework/utils");
8
+ const crypto_1 = __importDefault(require("crypto"));
9
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
10
+ class AcmeKitCloudAuthService extends utils_1.AbstractAuthModuleProvider {
11
+ constructor({ logger }, options) {
12
+ // @ts-ignore
13
+ super(...arguments);
14
+ this.config_ = options;
15
+ this.logger_ = logger;
16
+ }
17
+ async register(_) {
18
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.NOT_ALLOWED, "AcmeKit Cloud does not support registration. Use method `authenticate` instead.");
19
+ }
20
+ async authenticate(req, authIdentityService) {
21
+ const query = req.query ?? {};
22
+ const body = req.body ?? {};
23
+ if (query.error) {
24
+ return {
25
+ success: false,
26
+ error: `${query.error}`,
27
+ };
28
+ }
29
+ const stateKey = crypto_1.default.randomBytes(32).toString("hex");
30
+ const state = {
31
+ callback_url: body?.callback_url ?? this.config_.callback_url,
32
+ };
33
+ await authIdentityService.setState(stateKey, state);
34
+ return this.getRedirect(this.getClientId(), state.callback_url, stateKey);
35
+ }
36
+ async validateCallback(req, authIdentityService) {
37
+ const query = req.query ?? {};
38
+ const body = req.body ?? {};
39
+ if (query.error) {
40
+ return {
41
+ success: false,
42
+ error: `${query.error}`,
43
+ };
44
+ }
45
+ const code = query?.code ?? body?.code;
46
+ if (!code) {
47
+ return { success: false, error: "No code provided" };
48
+ }
49
+ const state = await authIdentityService.getState(query?.state);
50
+ if (!state) {
51
+ return { success: false, error: "No state provided, or session expired" };
52
+ }
53
+ const clientId = this.getClientId();
54
+ try {
55
+ const response = await fetch(this.config_.oauth_token_endpoint, {
56
+ method: "POST",
57
+ headers: {
58
+ "Content-Type": "application/x-www-form-urlencoded",
59
+ },
60
+ body: new URLSearchParams({
61
+ client_id: clientId,
62
+ client_secret: this.config_.api_key,
63
+ code,
64
+ redirect_uri: state.callback_url,
65
+ grant_type: "authorization_code",
66
+ }),
67
+ }).then((r) => {
68
+ if (!r.ok) {
69
+ this.logger_.warn(`Could not exchange token, ${r.status}, ${r.statusText}: response: ${JSON.stringify(r)}`);
70
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `Could not exchange token, ${r.status}, ${r.statusText}`);
71
+ }
72
+ return r.json();
73
+ });
74
+ const { authIdentity, success, error } = await this.verify_(response.id_token, authIdentityService);
75
+ return {
76
+ success,
77
+ authIdentity,
78
+ error,
79
+ };
80
+ }
81
+ catch (error) {
82
+ return { success: false, error: error.message };
83
+ }
84
+ }
85
+ async verify_(idToken, authIdentityService) {
86
+ if (!idToken) {
87
+ return { success: false, error: "No id_token" };
88
+ }
89
+ const jwtData = jsonwebtoken_1.default.decode(idToken, {
90
+ complete: true,
91
+ });
92
+ if (!jwtData) {
93
+ return { success: false, error: "The id_token is not a valid JWT" };
94
+ }
95
+ const payload = jwtData.payload;
96
+ if (!payload.email_verified) {
97
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, "Email not verified, cannot proceed with authentication");
98
+ }
99
+ const entity_id = payload.sub;
100
+ const userMetadata = {
101
+ name: payload.name,
102
+ email: payload.email,
103
+ picture: payload.picture,
104
+ given_name: payload.given_name,
105
+ family_name: payload.family_name,
106
+ };
107
+ let authIdentity;
108
+ try {
109
+ authIdentity = await authIdentityService.retrieve({
110
+ entity_id,
111
+ });
112
+ }
113
+ catch (error) {
114
+ if (error.type === utils_1.AcmeKitError.Types.NOT_FOUND) {
115
+ const createdAuthIdentity = await authIdentityService.create({
116
+ entity_id,
117
+ user_metadata: userMetadata,
118
+ });
119
+ authIdentity = createdAuthIdentity;
120
+ }
121
+ else {
122
+ return { success: false, error: error.message };
123
+ }
124
+ }
125
+ return {
126
+ success: true,
127
+ authIdentity,
128
+ };
129
+ }
130
+ getRedirect(clientId, callbackUrl, stateKey) {
131
+ const authUrl = new URL(this.config_.oauth_authorize_endpoint);
132
+ authUrl.searchParams.set("redirect_uri", callbackUrl);
133
+ authUrl.searchParams.set("client_id", clientId);
134
+ authUrl.searchParams.set("response_type", "code");
135
+ authUrl.searchParams.set("scope", "email profile openid");
136
+ authUrl.searchParams.set("state", stateKey);
137
+ return { success: true, location: authUrl.toString() };
138
+ }
139
+ getClientId() {
140
+ return this.config_.environment_handle || this.config_.sandbox_handle;
141
+ }
142
+ }
143
+ exports.AcmeKitCloudAuthService = AcmeKitCloudAuthService;
144
+ AcmeKitCloudAuthService.identifier = "cloud";
145
+ AcmeKitCloudAuthService.DISPLAY_NAME = "AcmeKit Cloud Authentication";
146
+ //# sourceMappingURL=acmekit-cloud-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acmekit-cloud-auth.js","sourceRoot":"","sources":["../../src/providers/acmekit-cloud-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, AuthTypes, Context, DAL, ICacheService, InferEntityType, InternalModuleDeclaration, Logger, ModuleJoinerConfig, ModulesSdkTypes } from "@acmekit/framework/types";
2
+ import { AuthIdentity, ProviderIdentity } from "../models";
3
+ import AuthProviderService from "./auth-provider";
4
+ type InjectedDependencies = {
5
+ baseRepository: DAL.RepositoryService;
6
+ authIdentityService: ModulesSdkTypes.IAcmeKitInternalService<any>;
7
+ providerIdentityService: ModulesSdkTypes.IAcmeKitInternalService<any>;
8
+ authProviderService: AuthProviderService;
9
+ logger?: Logger;
10
+ cache?: ICacheService;
11
+ };
12
+ declare const AuthModuleService_base: import("@acmekit/framework/utils").AcmeKitServiceReturnType<{
13
+ AuthIdentity: {
14
+ dto: AuthTypes.AuthIdentityDTO;
15
+ };
16
+ ProviderIdentity: {
17
+ dto: AuthTypes.ProviderIdentityDTO;
18
+ };
19
+ }>;
20
+ export default class AuthModuleService extends AuthModuleService_base implements AuthTypes.IAuthModuleService {
21
+ protected readonly moduleDeclaration: InternalModuleDeclaration;
22
+ protected baseRepository_: DAL.RepositoryService;
23
+ protected authIdentityService_: ModulesSdkTypes.IAcmeKitInternalService<InferEntityType<typeof AuthIdentity>>;
24
+ protected providerIdentityService_: ModulesSdkTypes.IAcmeKitInternalService<InferEntityType<typeof ProviderIdentity>>;
25
+ protected readonly authProviderService_: AuthProviderService;
26
+ protected readonly cache_: ICacheService | undefined;
27
+ constructor({ authIdentityService, providerIdentityService, authProviderService, baseRepository, cache, }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
28
+ __joinerConfig(): ModuleJoinerConfig;
29
+ createAuthIdentities(data: AuthTypes.CreateAuthIdentityDTO[], sharedContext?: Context): Promise<AuthTypes.AuthIdentityDTO[]>;
30
+ createAuthIdentities(data: AuthTypes.CreateAuthIdentityDTO, sharedContext?: Context): Promise<AuthTypes.AuthIdentityDTO>;
31
+ updateAuthIdentities(data: AuthTypes.UpdateAuthIdentityDTO[], sharedContext?: Context): Promise<AuthTypes.AuthIdentityDTO[]>;
32
+ updateAuthIdentities(data: AuthTypes.UpdateAuthIdentityDTO, sharedContext?: Context): Promise<AuthTypes.AuthIdentityDTO>;
33
+ register(provider: string, authenticationData: AuthenticationInput): Promise<AuthenticationResponse>;
34
+ createProviderIdentities(data: AuthTypes.CreateProviderIdentityDTO[], sharedContext?: Context): Promise<AuthTypes.ProviderIdentityDTO[]>;
35
+ createProviderIdentities(data: AuthTypes.CreateProviderIdentityDTO, sharedContext?: Context): Promise<AuthTypes.ProviderIdentityDTO>;
36
+ updateProviderIdentities(data: AuthTypes.UpdateProviderIdentityDTO[], sharedContext?: Context): Promise<AuthTypes.ProviderIdentityDTO[]>;
37
+ updateProviderIdentities(data: AuthTypes.UpdateProviderIdentityDTO, sharedContext?: Context): Promise<AuthTypes.ProviderIdentityDTO>;
38
+ updateProvider(provider: string, data: Record<string, unknown>): Promise<AuthenticationResponse>;
39
+ authenticate(provider: string, authenticationData: AuthenticationInput): Promise<AuthenticationResponse>;
40
+ validateCallback(provider: string, authenticationData: AuthenticationInput): Promise<AuthenticationResponse>;
41
+ getAuthIdentityProviderService(provider: string): AuthIdentityProviderService;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=auth-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module.d.ts","sourceRoot":"","sources":["../../src/services/auth-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const utils_1 = require("@acmekit/framework/utils");
16
+ const _models_1 = require("../models");
17
+ const joiner_config_1 = require("../joiner-config");
18
+ class AuthModuleService extends (0, utils_1.AcmeKitService)({ AuthIdentity: _models_1.AuthIdentity, ProviderIdentity: _models_1.ProviderIdentity }) {
19
+ constructor({ authIdentityService, providerIdentityService, authProviderService, baseRepository, cache, }, moduleDeclaration) {
20
+ // @ts-ignore
21
+ super(...arguments);
22
+ this.moduleDeclaration = moduleDeclaration;
23
+ this.baseRepository_ = baseRepository;
24
+ this.authIdentityService_ = authIdentityService;
25
+ this.authProviderService_ = authProviderService;
26
+ this.providerIdentityService_ = providerIdentityService;
27
+ this.cache_ = cache;
28
+ }
29
+ __joinerConfig() {
30
+ return joiner_config_1.joinerConfig;
31
+ }
32
+ async createAuthIdentities(data, sharedContext = {}) {
33
+ const authIdentities = await this.authIdentityService_.create(data, sharedContext);
34
+ return await this.baseRepository_.serialize(authIdentities, {
35
+ populate: true,
36
+ });
37
+ }
38
+ // @ts-expect-error
39
+ async updateAuthIdentities(data, sharedContext = {}) {
40
+ const updatedUsers = await this.authIdentityService_.update(data, sharedContext);
41
+ const serializedUsers = await this.baseRepository_.serialize(updatedUsers, {
42
+ populate: true,
43
+ });
44
+ return serializedUsers;
45
+ }
46
+ async register(provider, authenticationData) {
47
+ try {
48
+ return await this.authProviderService_.register(provider, authenticationData, this.getAuthIdentityProviderService(provider));
49
+ }
50
+ catch (error) {
51
+ return { success: false, error: error.message };
52
+ }
53
+ }
54
+ // @ts-expect-error
55
+ async createProviderIdentities(data, sharedContext = {}) {
56
+ const providerIdentities = await this.providerIdentityService_.create(data, sharedContext);
57
+ return await this.baseRepository_.serialize(providerIdentities);
58
+ }
59
+ // @ts-expect-error
60
+ async updateProviderIdentities(data, sharedContext = {}) {
61
+ const updatedProviders = await this.providerIdentityService_.update(data, sharedContext);
62
+ const serializedProviders = await this.baseRepository_.serialize(updatedProviders);
63
+ return serializedProviders;
64
+ }
65
+ async updateProvider(provider, data) {
66
+ try {
67
+ return await this.authProviderService_.update(provider, data, this.getAuthIdentityProviderService(provider));
68
+ }
69
+ catch (error) {
70
+ return { success: false, error: error.message };
71
+ }
72
+ }
73
+ async authenticate(provider, authenticationData) {
74
+ try {
75
+ return await this.authProviderService_.authenticate(provider, authenticationData, this.getAuthIdentityProviderService(provider));
76
+ }
77
+ catch (error) {
78
+ return { success: false, error: error.message };
79
+ }
80
+ }
81
+ async validateCallback(provider, authenticationData) {
82
+ try {
83
+ return await this.authProviderService_.validateCallback(provider, authenticationData, this.getAuthIdentityProviderService(provider));
84
+ }
85
+ catch (error) {
86
+ return { success: false, error: error.message };
87
+ }
88
+ }
89
+ getAuthIdentityProviderService(provider) {
90
+ return {
91
+ retrieve: async ({ entity_id }) => {
92
+ const authIdentities = await this.authIdentityService_.list({
93
+ provider_identities: {
94
+ entity_id,
95
+ provider,
96
+ },
97
+ }, {
98
+ relations: ["provider_identities"],
99
+ });
100
+ if (!authIdentities.length) {
101
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.NOT_FOUND, `AuthIdentity with entity_id "${entity_id}" not found`);
102
+ }
103
+ if (authIdentities.length > 1) {
104
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `Multiple authIdentities found for entity_id "${entity_id}"`);
105
+ }
106
+ return await this.baseRepository_.serialize(authIdentities[0]);
107
+ },
108
+ create: async (data) => {
109
+ const normalizedRequest = {
110
+ provider_identities: [
111
+ {
112
+ entity_id: data.entity_id,
113
+ provider_metadata: data.provider_metadata,
114
+ user_metadata: data.user_metadata,
115
+ provider,
116
+ },
117
+ ],
118
+ };
119
+ const createdAuthIdentity = await this.authIdentityService_.create(normalizedRequest);
120
+ return await this.baseRepository_.serialize(createdAuthIdentity);
121
+ },
122
+ update: async (entity_id, data) => {
123
+ const authIdentities = await this.authIdentityService_.list({
124
+ provider_identities: {
125
+ entity_id,
126
+ provider,
127
+ },
128
+ }, {
129
+ relations: ["provider_identities"],
130
+ });
131
+ if (!authIdentities.length) {
132
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.NOT_FOUND, `AuthIdentity with entity_id "${entity_id}" not found`);
133
+ }
134
+ if (authIdentities.length > 1) {
135
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `Multiple authIdentities found for entity_id "${entity_id}"`);
136
+ }
137
+ const providerIdentityData = authIdentities[0].provider_identities.find((pi) => pi.provider === provider);
138
+ if (!providerIdentityData) {
139
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.NOT_FOUND, `ProviderIdentity with entity_id "${entity_id}" not found`);
140
+ }
141
+ const updatedProviderIdentity = await this.providerIdentityService_.update({
142
+ id: providerIdentityData.id,
143
+ ...data,
144
+ });
145
+ const serializedResponse = await this.baseRepository_.serialize(authIdentities[0]);
146
+ const serializedProviderIdentity = await this.baseRepository_.serialize(updatedProviderIdentity);
147
+ serializedResponse.provider_identities = [
148
+ ...(serializedResponse.provider_identities?.filter((p) => p.provider !== provider) ?? []),
149
+ serializedProviderIdentity,
150
+ ];
151
+ return serializedResponse;
152
+ },
153
+ setState: async (key, value) => {
154
+ if (!this.cache_) {
155
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_ARGUMENT, "Cache module dependency is required when using OAuth providers that require state");
156
+ }
157
+ // 20 minutes. Can be made configurable if necessary, but this is a good default.
158
+ this.cache_.set(key, value, 1200);
159
+ },
160
+ getState: async (key) => {
161
+ if (!this.cache_) {
162
+ throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_ARGUMENT, "Cache module dependency is required when using OAuth providers that require state");
163
+ }
164
+ return await this.cache_.get(key);
165
+ },
166
+ };
167
+ }
168
+ }
169
+ exports.default = AuthModuleService;
170
+ __decorate([
171
+ (0, utils_1.InjectManager)(),
172
+ __param(1, (0, utils_1.AcmeKitContext)()),
173
+ __metadata("design:type", Function),
174
+ __metadata("design:paramtypes", [Object, Object]),
175
+ __metadata("design:returntype", Promise)
176
+ ], AuthModuleService.prototype, "createAuthIdentities", null);
177
+ __decorate([
178
+ (0, utils_1.InjectManager)()
179
+ // @ts-expect-error
180
+ ,
181
+ __param(1, (0, utils_1.AcmeKitContext)()),
182
+ __metadata("design:type", Function),
183
+ __metadata("design:paramtypes", [Object, Object]),
184
+ __metadata("design:returntype", Promise)
185
+ ], AuthModuleService.prototype, "updateAuthIdentities", null);
186
+ __decorate([
187
+ (0, utils_1.InjectManager)()
188
+ // @ts-expect-error
189
+ ,
190
+ __param(1, (0, utils_1.AcmeKitContext)()),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", [Object, Object]),
193
+ __metadata("design:returntype", Promise)
194
+ ], AuthModuleService.prototype, "createProviderIdentities", null);
195
+ __decorate([
196
+ (0, utils_1.InjectManager)()
197
+ // @ts-expect-error
198
+ ,
199
+ __param(1, (0, utils_1.AcmeKitContext)()),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [Object, Object]),
202
+ __metadata("design:returntype", Promise)
203
+ ], AuthModuleService.prototype, "updateProviderIdentities", null);
204
+ //# sourceMappingURL=auth-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module.js","sourceRoot":"","sources":["../../src/services/auth-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAcA,oDAKiC;AACjC,qCAAwD;AACxD,oDAA+C;AAW/C,MAAqB,iBACnB,SAAQ,IAAA,sBAAc,EAGnB,EAAE,YAAY,EAAZ,sBAAY,EAAE,gBAAgB,EAAhB,0BAAgB,EAAE,CAAC;IAYtC,YACE,EACE,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,KAAK,GACgB,EACJ,iBAA4C;QAE/D,aAAa;QACb,KAAK,CAAC,GAAG,SAAS,CAAC,CAAA;QAHA,sBAAiB,GAAjB,iBAAiB,CAA2B;QAK/D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;QACrC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAA;QAC/C,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAA;QAC/C,IAAI,CAAC,wBAAwB,GAAG,uBAAuB,CAAA;QACvD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED,cAAc;QACZ,OAAO,4BAAY,CAAA;IACrB,CAAC;IAcK,AAAN,KAAK,CAAC,oBAAoB,CACxB,IAAyE,EACvD,gBAAyB,EAAE;QAE7C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC3D,IAAI,EACJ,aAAa,CACd,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CACzC,cAAc,EACd;YACE,QAAQ,EAAE,IAAI;SACf,CACF,CAAA;IACH,CAAC;IAiBK,AADN,mBAAmB;IACnB,KAAK,CAAC,oBAAoB,CACxB,IAAyE,EACvD,gBAAyB,EAAE;QAE7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CACzD,IAAI,EACJ,aAAa,CACd,CAAA;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE1D,YAAY,EAAE;YACd,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,kBAAuC;QAEvC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAC7C,QAAQ,EACR,kBAAkB,EAClB,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAC9C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACjD,CAAC;IACH,CAAC;IAgBK,AADN,mBAAmB;IACnB,KAAK,CAAC,wBAAwB,CAC5B,IAEuC,EACrB,gBAAyB,EAAE;QAE7C,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CACnE,IAAI,EACJ,aAAa,CACd,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAEzC,kBAAkB,CAAC,CAAA;IACvB,CAAC;IAgBK,AADN,mBAAmB;IACnB,KAAK,CAAC,wBAAwB,CAC5B,IAEyC,EACvB,gBAAyB,EAAE;QAE7C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CACjE,IAAI,EACJ,aAAa,CACd,CAAA;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE9D,gBAAgB,CAAC,CAAA;QAEnB,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,IAA6B;QAE7B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC3C,QAAQ,EACR,IAAI,EACJ,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAC9C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACjD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,kBAAuC;QAEvC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CACjD,QAAQ,EACR,kBAAkB,EAClB,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAC9C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACjD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,kBAAuC;QAEvC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CACrD,QAAQ,EACR,kBAAkB,EAClB,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAC9C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACjD,CAAC;IACH,CAAC;IAED,8BAA8B,CAC5B,QAAgB;QAEhB,OAAO;YACL,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;gBAChC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACzD;oBACE,mBAAmB,EAAE;wBACnB,SAAS;wBACT,QAAQ;qBACT;iBACF,EACD;oBACE,SAAS,EAAE,CAAC,qBAAqB,CAAC;iBACnC,CACF,CAAA;gBAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,SAAS,EAC5B,gCAAgC,SAAS,aAAa,CACvD,CAAA;gBACH,CAAC;gBAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,YAAY,EAC/B,gDAAgD,SAAS,GAAG,CAC7D,CAAA;gBACH,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CACzC,cAAc,CAAC,CAAC,CAAC,CAClB,CAAA;YACH,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,IAId,EAAE,EAAE;gBACH,MAAM,iBAAiB,GAAG;oBACxB,mBAAmB,EAAE;wBACnB;4BACE,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;4BACzC,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,QAAQ;yBACT;qBACF;iBACF,CAAA;gBAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAChE,iBAAiB,CAClB,CAAA;gBAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CACzC,mBAAmB,CACpB,CAAA;YACH,CAAC;YACD,MAAM,EAAE,KAAK,EACX,SAAiB,EACjB,IAGC,EACD,EAAE;gBACF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACzD;oBACE,mBAAmB,EAAE;wBACnB,SAAS;wBACT,QAAQ;qBACT;iBACF,EACD;oBACE,SAAS,EAAE,CAAC,qBAAqB,CAAC;iBACnC,CACF,CAAA;gBAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,SAAS,EAC5B,gCAAgC,SAAS,aAAa,CACvD,CAAA;gBACH,CAAC;gBAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,YAAY,EAC/B,gDAAgD,SAAS,GAAG,CAC7D,CAAA;gBACH,CAAC;gBAED,MAAM,oBAAoB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CACrE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,CACjC,CAAA;gBAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,SAAS,EAC5B,oCAAoC,SAAS,aAAa,CAC3D,CAAA;gBACH,CAAC;gBAED,MAAM,uBAAuB,GAC3B,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;oBACzC,EAAE,EAAE,oBAAoB,CAAC,EAAE;oBAC3B,GAAG,IAAI;iBACR,CAAC,CAAA;gBAEJ,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAClC,cAAc,CAAC,CAAC,CAAC,CAClB,CAAA;gBACH,MAAM,0BAA0B,GAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAClC,uBAAuB,CACxB,CAAA;gBAEH,kBAAkB,CAAC,mBAAmB,GAAG;oBACvC,GAAG,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC/B,IAAI,EAAE,CAAC;oBACR,0BAA0B;iBAC3B,CAAA;gBAED,OAAO,kBAAkB,CAAA;YAC3B,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,GAAW,EAAE,KAA8B,EAAE,EAAE;gBAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,gBAAgB,EACnC,mFAAmF,CACpF,CAAA;gBACH,CAAC;gBAED,iFAAiF;gBACjF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YACnC,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,gBAAgB,EACnC,mFAAmF,CACpF,CAAA;gBACH,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACnC,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAvXD,oCAuXC;AAnUO;IADL,IAAA,qBAAa,GAAE;IAGb,WAAA,IAAA,sBAAc,GAAE,CAAA;;;;6DAalB;AAiBK;IAFL,IAAA,qBAAa,GAAE;IAChB,mBAAmB;;IAGhB,WAAA,IAAA,sBAAc,GAAE,CAAA;;;;6DAclB;AA+BK;IAFL,IAAA,qBAAa,GAAE;IAChB,mBAAmB;;IAKhB,WAAA,IAAA,sBAAc,GAAE,CAAA;;;;iEAUlB;AAgBK;IAFL,IAAA,qBAAa,GAAE;IAChB,mBAAmB;;IAKhB,WAAA,IAAA,sBAAc,GAAE,CAAA;;;;iEAYlB"}
@@ -0,0 +1,18 @@
1
+ import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, AuthTypes, Logger } from "@acmekit/framework/types";
2
+ import { AuthProviderRegistrationPrefix } from "../types";
3
+ type InjectedDependencies = {
4
+ [key: `${typeof AuthProviderRegistrationPrefix}${string}`]: AuthTypes.IAuthProvider;
5
+ logger?: Logger;
6
+ };
7
+ export default class AuthProviderService {
8
+ #private;
9
+ protected dependencies: InjectedDependencies;
10
+ constructor(container: InjectedDependencies);
11
+ protected retrieveProviderRegistration(providerId: string): AuthTypes.IAuthProvider;
12
+ authenticate(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
13
+ register(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
14
+ update(provider: string, data: Record<string, unknown>, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
15
+ validateCallback(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=auth-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,SAAS,EACT,MAAM,EACP,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AAEvD,KAAK,oBAAoB,GAAG;IAC1B,CACE,GAAG,EAAE,GAAG,OAAO,8BAA8B,GAAG,MAAM,EAAE,GACvD,SAAS,CAAC,aAAa,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,mBAAmB;;IACtC,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAA;gBAGhC,SAAS,EAAE,oBAAoB;IAO3C,SAAS,CAAC,4BAA4B,CACpC,UAAU,EAAE,MAAM,GACjB,SAAS,CAAC,aAAa;IAsBpB,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;IAK5B,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,mBAAmB,EACzB,2BAA2B,EAAE,2BAA2B,GACvD,OAAO,CAAC,sBAAsB,CAAC;CAOnC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _AuthProviderService_logger;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const _types_1 = require("../types");
16
+ class AuthProviderService {
17
+ constructor(container) {
18
+ _AuthProviderService_logger.set(this, void 0);
19
+ this.dependencies = container;
20
+ __classPrivateFieldSet(this, _AuthProviderService_logger, container["logger"]
21
+ ? container.logger
22
+ : console, "f");
23
+ }
24
+ retrieveProviderRegistration(providerId) {
25
+ try {
26
+ return this.dependencies[`${_types_1.AuthProviderRegistrationPrefix}${providerId}`];
27
+ }
28
+ catch (err) {
29
+ if (err.name === "AwilixResolutionError") {
30
+ const errMessage = `
31
+ Unable to retrieve the auth provider with id: ${providerId}
32
+ Please make sure that the provider is registered in the container and it is configured correctly in your project configuration file.`;
33
+ // Log full error for debugging
34
+ __classPrivateFieldGet(this, _AuthProviderService_logger, "f").error(`AwilixResolutionError: ${err.message}`, err);
35
+ throw new Error(errMessage);
36
+ }
37
+ const errMessage = `Unable to retrieve the auth provider with id: ${providerId}, the following error occurred: ${err.message}`;
38
+ __classPrivateFieldGet(this, _AuthProviderService_logger, "f").error(errMessage);
39
+ throw new Error(errMessage);
40
+ }
41
+ }
42
+ async authenticate(provider, auth, authIdentityProviderService) {
43
+ const providerHandler = this.retrieveProviderRegistration(provider);
44
+ return await providerHandler.authenticate(auth, authIdentityProviderService);
45
+ }
46
+ async register(provider, auth, authIdentityProviderService) {
47
+ const providerHandler = this.retrieveProviderRegistration(provider);
48
+ return await providerHandler.register(auth, authIdentityProviderService);
49
+ }
50
+ async update(provider, data, authIdentityProviderService) {
51
+ const providerHandler = this.retrieveProviderRegistration(provider);
52
+ return await providerHandler.update(data, authIdentityProviderService);
53
+ }
54
+ async validateCallback(provider, auth, authIdentityProviderService) {
55
+ const providerHandler = this.retrieveProviderRegistration(provider);
56
+ return await providerHandler.validateCallback(auth, authIdentityProviderService);
57
+ }
58
+ }
59
+ _AuthProviderService_logger = new WeakMap();
60
+ exports.default = AuthProviderService;
61
+ //# sourceMappingURL=auth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/services/auth-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,mCAAuD;AASvD,MAAqB,mBAAmB;IAItC,YAAY,SAA+B;QAF3C,8CAAe;QAGb,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC7B,uBAAA,IAAI,+BAAW,SAAS,CAAC,QAAQ,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAE,OAA6B,MAAA,CAAA;IACpC,CAAC;IAES,4BAA4B,CACpC,UAAkB;QAElB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,uCAA8B,GAAG,UAAU,EAAE,CAAC,CAAA;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG;gDACqB,UAAU;qIAC2E,CAAA;gBAE7H,+BAA+B;gBAC/B,uBAAA,IAAI,mCAAQ,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAEhE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC7B,CAAC;YAED,MAAM,UAAU,GAAG,iDAAiD,UAAU,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC9H,uBAAA,IAAI,mCAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAE9B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,MAAM,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IAC1E,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,IAA6B,EAC7B,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,IAAyB,EACzB,2BAAwD;QAExD,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,MAAM,eAAe,CAAC,gBAAgB,CAC3C,IAAI,EACJ,2BAA2B,CAC5B,CAAA;IACH,CAAC;CACF;;kBAzEoB,mBAAmB"}
@@ -0,0 +1,3 @@
1
+ export { default as AuthModuleService } from "./auth-module";
2
+ export { default as AuthProviderService } from "./auth-provider";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AuthProviderService = exports.AuthModuleService = void 0;
7
+ var auth_module_1 = require("./auth-module");
8
+ Object.defineProperty(exports, "AuthModuleService", { enumerable: true, get: function () { return __importDefault(auth_module_1).default; } });
9
+ var auth_provider_1 = require("./auth-provider");
10
+ Object.defineProperty(exports, "AuthProviderService", { enumerable: true, get: function () { return __importDefault(auth_provider_1).default; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAA4D;AAAnD,iIAAA,OAAO,OAAqB;AACrC,iDAAgE;AAAvD,qIAAA,OAAO,OAAuB"}
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/joiner-config.ts","../src/loaders/providers.ts","../src/migrations/migration20240205025928.ts","../src/migrations/migration20240529080336.ts","../src/migrations/migration20241202100304.ts","../src/models/auth-identity.ts","../src/models/index.ts","../src/models/provider-identity.ts","../src/providers/acmekit-cloud-auth.ts","../src/services/auth-module.ts","../src/services/auth-provider.ts","../src/services/index.ts","../src/types/index.ts"],"version":"5.9.3"}
@@ -0,0 +1,46 @@
1
+ import { Logger, ModuleProviderExports, ModuleServiceInitializeOptions } from "@acmekit/framework/types";
2
+ export type InitializeModuleInjectableDependencies = {
3
+ logger?: Logger;
4
+ };
5
+ export declare const AuthIdentifiersRegistrationName = "auth_providers_identifier";
6
+ export declare const AuthProviderRegistrationPrefix = "au_";
7
+ export type AuthModuleOptions = Partial<ModuleServiceInitializeOptions> & {
8
+ /**
9
+ * Providers to be registered
10
+ */
11
+ providers?: {
12
+ /**
13
+ * The module provider to be registered
14
+ */
15
+ resolve: string | ModuleProviderExports;
16
+ /**
17
+ * The id of the provider
18
+ */
19
+ id: string;
20
+ /**
21
+ * key value pair of the configuration to be passed to the provider constructor
22
+ */
23
+ options?: Record<string, unknown>;
24
+ }[];
25
+ /**
26
+ * Options for the default AcmeKit Cloud Auth provider
27
+ * @private
28
+ */
29
+ cloud?: AcmeKitCloudAuthProviderOptions;
30
+ };
31
+ export interface AcmeKitCloudAuthProviderOptions {
32
+ oauth_authorize_endpoint: string;
33
+ oauth_token_endpoint: string;
34
+ environment_handle: string;
35
+ sandbox_handle: string;
36
+ api_key: string;
37
+ callback_url: string;
38
+ disabled: boolean;
39
+ }
40
+ declare module "@acmekit/types" {
41
+ interface ModuleOptions {
42
+ "@acmekit/auth": AuthModuleOptions;
43
+ "@acmekit/acmekit/auth": AuthModuleOptions;
44
+ }
45
+ }
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,sCAAsC,GAAG;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,+BAA+B,8BAA8B,CAAA;AAE1E,eAAO,MAAM,8BAA8B,QAAQ,CAAA;AAEnD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG;IACxE;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;WAEG;QACH,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAAA;QACvC;;WAEG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,EAAE,CAAA;IACH;;;OAGG;IACH,KAAK,CAAC,EAAE,+BAA+B,CAAA;CACxC,CAAA;AAED,MAAM,WAAW,+BAA+B;IAC9C,wBAAwB,EAAE,MAAM,CAAA;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,aAAa;QACrB,eAAe,EAAE,iBAAiB,CAAA;QAClC,uBAAuB,EAAE,iBAAiB,CAAA;KAC3C;CACF"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthProviderRegistrationPrefix = exports.AuthIdentifiersRegistrationName = void 0;
4
+ exports.AuthIdentifiersRegistrationName = "auth_providers_identifier";
5
+ exports.AuthProviderRegistrationPrefix = "au_";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAUa,QAAA,+BAA+B,GAAG,2BAA2B,CAAA;AAE7D,QAAA,8BAA8B,GAAG,KAAK,CAAA"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@acmekit/auth",
3
+ "version": "2.13.1",
4
+ "description": "AcmeKit Auth module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "!dist/**/__tests__",
10
+ "!dist/**/__mocks__",
11
+ "!dist/**/__fixtures__"
12
+ ],
13
+ "engines": {
14
+ "node": ">=20"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/acmekit/acmekit",
19
+ "directory": "packages/modules/auth"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "author": "AcmeKit",
25
+ "license": "MIT",
26
+ "scripts": {
27
+ "watch": "yarn run -T tsc --build --watch",
28
+ "watch:test": "yarn run -T tsc --build tsconfig.spec.json --watch",
29
+ "resolve:aliases": "yarn run -T tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && yarn run -T tsc-alias -p tsconfig.resolved.json && yarn run -T rimraf tsconfig.resolved.json",
30
+ "build": "yarn run -T rimraf dist && yarn run -T tsc --build && npm run resolve:aliases",
31
+ "test": "../../../node_modules/.bin/jest --bail --passWithNoTests --forceExit --testPathPattern=src",
32
+ "test:integration": "../../../node_modules/.bin/jest --passWithNoTests --forceExit --testPathPattern=\"integration-tests/__tests__/.*\\.ts\"",
33
+ "migration:initial": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:create --initial",
34
+ "migration:create": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:create",
35
+ "migration:up": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:up",
36
+ "orm:cache:clear": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm cache:clear"
37
+ },
38
+ "devDependencies": {
39
+ "@acmekit/framework": "2.13.1",
40
+ "@acmekit/test-utils": "2.13.1"
41
+ },
42
+ "peerDependencies": {
43
+ "@acmekit/framework": "2.13.1"
44
+ }
45
+ }