@medusajs/auth 0.0.2

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 (60) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.js +23 -0
  4. package/dist/initialize/index.d.ts +3 -0
  5. package/dist/initialize/index.js +16 -0
  6. package/dist/joiner-config.d.ts +7 -0
  7. package/dist/joiner-config.js +28 -0
  8. package/dist/loaders/connection.d.ts +4 -0
  9. package/dist/loaders/connection.js +41 -0
  10. package/dist/loaders/container.d.ts +2 -0
  11. package/dist/loaders/container.js +34 -0
  12. package/dist/loaders/index.d.ts +3 -0
  13. package/dist/loaders/index.js +19 -0
  14. package/dist/loaders/providers.d.ts +6 -0
  15. package/dist/loaders/providers.js +55 -0
  16. package/dist/migrations/Migration20240122041959.d.ts +5 -0
  17. package/dist/migrations/Migration20240122041959.js +18 -0
  18. package/dist/models/auth-provider.d.ts +12 -0
  19. package/dist/models/auth-provider.js +44 -0
  20. package/dist/models/auth-user.d.ts +15 -0
  21. package/dist/models/auth-user.js +70 -0
  22. package/dist/models/index.d.ts +2 -0
  23. package/dist/models/index.js +10 -0
  24. package/dist/module-definition.d.ts +4 -0
  25. package/dist/module-definition.js +51 -0
  26. package/dist/providers/email-password.d.ts +13 -0
  27. package/dist/providers/email-password.js +45 -0
  28. package/dist/providers/google.d.ts +32 -0
  29. package/dist/providers/google.js +158 -0
  30. package/dist/providers/index.d.ts +2 -0
  31. package/dist/providers/index.js +10 -0
  32. package/dist/repositories/index.d.ts +1 -0
  33. package/dist/repositories/index.js +5 -0
  34. package/dist/scripts/bin/run-seed.d.ts +3 -0
  35. package/dist/scripts/bin/run-seed.js +38 -0
  36. package/dist/scripts/seed.d.ts +4 -0
  37. package/dist/scripts/seed.js +54 -0
  38. package/dist/services/auth-module.d.ts +46 -0
  39. package/dist/services/auth-module.js +276 -0
  40. package/dist/services/auth-provider.d.ts +18 -0
  41. package/dist/services/auth-provider.js +11 -0
  42. package/dist/services/auth-user.d.ts +19 -0
  43. package/dist/services/auth-user.js +39 -0
  44. package/dist/services/index.d.ts +3 -0
  45. package/dist/services/index.js +12 -0
  46. package/dist/types/index.d.ts +6 -0
  47. package/dist/types/index.js +28 -0
  48. package/dist/types/repositories/auth-provider.d.ts +23 -0
  49. package/dist/types/repositories/auth-provider.js +9 -0
  50. package/dist/types/repositories/auth-user.d.ts +17 -0
  51. package/dist/types/repositories/auth-user.js +2 -0
  52. package/dist/types/repositories/index.d.ts +16 -0
  53. package/dist/types/repositories/index.js +18 -0
  54. package/dist/types/services/auth-provider.d.ts +27 -0
  55. package/dist/types/services/auth-provider.js +9 -0
  56. package/dist/types/services/auth-user.d.ts +24 -0
  57. package/dist/types/services/auth-user.js +2 -0
  58. package/dist/types/services/index.d.ts +2 -0
  59. package/dist/types/services/index.js +18 -0
  60. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Auth Module
2
+
3
+ The Auth Module is Medusa’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,5 @@
1
+ import { moduleDefinition, revertMigration, runMigrations } from "./module-definition";
2
+ export default moduleDefinition;
3
+ export { revertMigration, runMigrations };
4
+ export * from "./initialize";
5
+ export * from "./loaders";
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.runMigrations = exports.revertMigration = void 0;
18
+ const module_definition_1 = require("./module-definition");
19
+ Object.defineProperty(exports, "revertMigration", { enumerable: true, get: function () { return module_definition_1.revertMigration; } });
20
+ Object.defineProperty(exports, "runMigrations", { enumerable: true, get: function () { return module_definition_1.runMigrations; } });
21
+ exports.default = module_definition_1.moduleDefinition;
22
+ __exportStar(require("./initialize"), exports);
23
+ __exportStar(require("./loaders"), exports);
@@ -0,0 +1,3 @@
1
+ import { IAuthModuleService, ModulesSdkTypes } from "@medusajs/types";
2
+ import { InitializeModuleInjectableDependencies } from "../types";
3
+ export declare const initialize: (options?: ModulesSdkTypes.ModuleBootstrapDeclaration | ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions, injectedDependencies?: InitializeModuleInjectableDependencies) => Promise<IAuthModuleService>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initialize = void 0;
4
+ const modules_sdk_1 = require("@medusajs/modules-sdk");
5
+ const module_definition_1 = require("../module-definition");
6
+ const initialize = async (options, injectedDependencies) => {
7
+ const loaded = await modules_sdk_1.MedusaModule.bootstrap({
8
+ moduleKey: modules_sdk_1.Modules.AUTH,
9
+ defaultPath: modules_sdk_1.MODULE_PACKAGE_NAMES[modules_sdk_1.Modules.AUTH],
10
+ declaration: options,
11
+ injectedDependencies,
12
+ moduleExports: module_definition_1.moduleDefinition,
13
+ });
14
+ return loaded[modules_sdk_1.Modules.AUTH];
15
+ };
16
+ exports.initialize = initialize;
@@ -0,0 +1,7 @@
1
+ import { MapToConfig } from "@medusajs/utils";
2
+ import { ModuleJoinerConfig } from "@medusajs/types";
3
+ export declare const LinkableKeys: {
4
+ auth_user_id: string;
5
+ };
6
+ export declare const entityNameToLinkableKeysMap: MapToConfig;
7
+ export declare const joinerConfig: ModuleJoinerConfig;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.joinerConfig = exports.entityNameToLinkableKeysMap = exports.LinkableKeys = void 0;
4
+ const _models_1 = require("./models");
5
+ const modules_sdk_1 = require("@medusajs/modules-sdk");
6
+ exports.LinkableKeys = {
7
+ auth_user_id: _models_1.AuthUser.name,
8
+ };
9
+ const entityLinkableKeysMap = {};
10
+ Object.entries(exports.LinkableKeys).forEach(([key, value]) => {
11
+ entityLinkableKeysMap[value] ?? (entityLinkableKeysMap[value] = []);
12
+ entityLinkableKeysMap[value].push({
13
+ mapTo: key,
14
+ valueFrom: key.split("_").pop(),
15
+ });
16
+ });
17
+ exports.entityNameToLinkableKeysMap = entityLinkableKeysMap;
18
+ exports.joinerConfig = {
19
+ serviceName: modules_sdk_1.Modules.AUTH,
20
+ primaryKeys: ["id"],
21
+ linkableKeys: exports.LinkableKeys,
22
+ alias: {
23
+ name: ["auth_user", "auth_users"],
24
+ args: {
25
+ entity: _models_1.AuthUser.name,
26
+ },
27
+ },
28
+ };
@@ -0,0 +1,4 @@
1
+ import { InternalModuleDeclaration, LoaderOptions } from "@medusajs/modules-sdk";
2
+ import { ModulesSdkTypes } from "@medusajs/types";
3
+ declare const _default: ({ options, container, logger, }: LoaderOptions<ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions>, moduleDeclaration?: InternalModuleDeclaration) => Promise<void>;
4
+ export default _default;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const AuthModels = __importStar(require("../models"));
27
+ const modules_sdk_1 = require("@medusajs/modules-sdk");
28
+ const utils_1 = require("@medusajs/utils");
29
+ exports.default = async ({ options, container, logger, }, moduleDeclaration) => {
30
+ const entities = Object.values(AuthModels);
31
+ const pathToMigrations = __dirname + "/../migrations";
32
+ await utils_1.ModulesSdkUtils.mikroOrmConnectionLoader({
33
+ moduleName: modules_sdk_1.Modules.AUTH,
34
+ entities,
35
+ container,
36
+ options,
37
+ moduleDeclaration,
38
+ logger,
39
+ pathToMigrations,
40
+ });
41
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: ({ container, options }: import("@medusajs/types").LoaderOptions) => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const utils_1 = require("@medusajs/utils");
27
+ const ModuleModels = __importStar(require("../models"));
28
+ const ModuleRepositories = __importStar(require("../repositories"));
29
+ const ModuleServices = __importStar(require("../services"));
30
+ exports.default = utils_1.ModulesSdkUtils.moduleContainerLoaderFactory({
31
+ moduleModels: ModuleModels,
32
+ moduleRepositories: ModuleRepositories,
33
+ moduleServices: ModuleServices,
34
+ });
@@ -0,0 +1,3 @@
1
+ export * from "./connection";
2
+ export * from "./container";
3
+ export * from "./providers";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./connection"), exports);
18
+ __exportStar(require("./container"), exports);
19
+ __exportStar(require("./providers"), exports);
@@ -0,0 +1,6 @@
1
+ import { AuthModuleProviderConfig, LoaderOptions, ModulesSdkTypes } from "@medusajs/types";
2
+ type AuthModuleProviders = {
3
+ providers: AuthModuleProviderConfig[];
4
+ };
5
+ declare const _default: ({ container, options, }: LoaderOptions<(ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions) & AuthModuleProviders>) => Promise<void>;
6
+ export default _default;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const defaultProviders = __importStar(require("../providers"));
27
+ const awilix_1 = require("awilix");
28
+ exports.default = async ({ container, options, }) => {
29
+ const providerMap = new Map(options?.providers?.map((provider) => [provider.name, provider.scopes]) ??
30
+ []);
31
+ // if(options?.providers?.length) {
32
+ // TODO: implement plugin provider registration
33
+ // }
34
+ const providersToLoad = Object.values(defaultProviders);
35
+ for (const provider of providersToLoad) {
36
+ container.register({
37
+ [`auth_provider_${provider.PROVIDER}`]: (0, awilix_1.asClass)(provider)
38
+ .singleton()
39
+ .inject(() => ({ scopes: providerMap.get(provider.PROVIDER) ?? {} })),
40
+ });
41
+ }
42
+ container.register({
43
+ [`auth_providers`]: asArray(providersToLoad, providerMap),
44
+ });
45
+ };
46
+ function asArray(resolvers, providerScopeMap) {
47
+ return {
48
+ resolve: (container) => resolvers.map((resolver) => (0, awilix_1.asClass)(resolver)
49
+ .inject(() => ({
50
+ // @ts-ignore
51
+ scopes: providerScopeMap.get(resolver.PROVIDER) ?? {},
52
+ }))
53
+ .resolve(container)),
54
+ };
55
+ }
@@ -0,0 +1,5 @@
1
+ import { Migration } from '@mikro-orm/migrations';
2
+ export declare class Migration20240122041959 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20240122041959 = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ class Migration20240122041959 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql('create table if not exists "auth_provider" ("provider" text not null, "name" text not null, "domain" text check ("domain" in (\'all\', \'store\', \'admin\')) not null default \'all\', "config" jsonb null, "is_active" boolean not null default false, constraint "auth_provider_pkey" primary key ("provider"));');
8
+ this.addSql('create table if not exists "auth_user" ("id" text not null, "entity_id" text not null, "provider_id" text null, "user_metadata" jsonb null, "app_metadata" jsonb null, "provider_metadata" jsonb null, constraint "auth_user_pkey" primary key ("id"));');
9
+ this.addSql('alter table "auth_user" add constraint "IDX_auth_user_provider_entity_id" unique ("provider_id", "entity_id");');
10
+ this.addSql('alter table "auth_user" add constraint if not exists "auth_user_provider_id_foreign" foreign key ("provider_id") references "auth_provider" ("provider") on delete cascade;');
11
+ }
12
+ async down() {
13
+ this.addSql('alter table "auth_user" drop constraint if exists "auth_user_provider_id_foreign";');
14
+ this.addSql('drop table if exists "auth_provider" cascade;');
15
+ this.addSql('drop table if exists "auth_user" cascade;');
16
+ }
17
+ }
18
+ exports.Migration20240122041959 = Migration20240122041959;
@@ -0,0 +1,12 @@
1
+ import { OptionalProps } from "@mikro-orm/core";
2
+ import { ProviderDomain } from "../types/repositories/auth-provider";
3
+ type OptionalFields = "domain" | "is_active" | "config";
4
+ export default class AuthProvider {
5
+ [OptionalProps]: OptionalFields;
6
+ provider: string;
7
+ name: string;
8
+ domain: ProviderDomain;
9
+ config: Record<string, unknown> | null;
10
+ is_active: boolean;
11
+ }
12
+ export {};
@@ -0,0 +1,44 @@
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
+ const core_1 = require("@mikro-orm/core");
13
+ const auth_provider_1 = require("../types/repositories/auth-provider");
14
+ let AuthProvider = class AuthProvider {
15
+ constructor() {
16
+ this.domain = auth_provider_1.ProviderDomain.ALL;
17
+ this.config = null;
18
+ this.is_active = false;
19
+ }
20
+ };
21
+ __decorate([
22
+ (0, core_1.PrimaryKey)({ columnType: "text" }),
23
+ __metadata("design:type", String)
24
+ ], AuthProvider.prototype, "provider", void 0);
25
+ __decorate([
26
+ (0, core_1.Property)({ columnType: "text" }),
27
+ __metadata("design:type", String)
28
+ ], AuthProvider.prototype, "name", void 0);
29
+ __decorate([
30
+ (0, core_1.Enum)({ items: () => auth_provider_1.ProviderDomain, default: auth_provider_1.ProviderDomain.ALL }),
31
+ __metadata("design:type", String)
32
+ ], AuthProvider.prototype, "domain", void 0);
33
+ __decorate([
34
+ (0, core_1.Property)({ columnType: "jsonb", nullable: true }),
35
+ __metadata("design:type", Object)
36
+ ], AuthProvider.prototype, "config", void 0);
37
+ __decorate([
38
+ (0, core_1.Property)({ columnType: "boolean", default: false }),
39
+ __metadata("design:type", Object)
40
+ ], AuthProvider.prototype, "is_active", void 0);
41
+ AuthProvider = __decorate([
42
+ (0, core_1.Entity)()
43
+ ], AuthProvider);
44
+ exports.default = AuthProvider;
@@ -0,0 +1,15 @@
1
+ import { OptionalProps } from "@mikro-orm/core";
2
+ import AuthProvider from "./auth-provider";
3
+ type OptionalFields = "provider_metadata" | "app_metadata" | "user_metadata";
4
+ export default class AuthUser {
5
+ [OptionalProps]: OptionalFields;
6
+ id: string;
7
+ entity_id: string;
8
+ provider: AuthProvider;
9
+ user_metadata: Record<string, unknown> | null;
10
+ app_metadata: Record<string, unknown> | null;
11
+ provider_metadata: Record<string, unknown> | null;
12
+ onCreate(): void;
13
+ onInit(): void;
14
+ }
15
+ export {};
@@ -0,0 +1,70 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const core_1 = require("@mikro-orm/core");
16
+ const auth_provider_1 = __importDefault(require("./auth-provider"));
17
+ const utils_1 = require("@medusajs/utils");
18
+ let AuthUser = class AuthUser {
19
+ onCreate() {
20
+ this.id = (0, utils_1.generateEntityId)(this.id, "authusr");
21
+ }
22
+ onInit() {
23
+ this.id = (0, utils_1.generateEntityId)(this.id, "authusr");
24
+ }
25
+ };
26
+ __decorate([
27
+ (0, core_1.PrimaryKey)({ columnType: "text" }),
28
+ __metadata("design:type", String)
29
+ ], AuthUser.prototype, "id", void 0);
30
+ __decorate([
31
+ (0, core_1.Property)({ columnType: "text" }),
32
+ __metadata("design:type", String)
33
+ ], AuthUser.prototype, "entity_id", void 0);
34
+ __decorate([
35
+ (0, core_1.ManyToOne)(() => auth_provider_1.default, {
36
+ joinColumn: "provider",
37
+ fieldName: "provider_id",
38
+ cascade: [core_1.Cascade.REMOVE],
39
+ }),
40
+ __metadata("design:type", auth_provider_1.default)
41
+ ], AuthUser.prototype, "provider", void 0);
42
+ __decorate([
43
+ (0, core_1.Property)({ columnType: "jsonb", nullable: true }),
44
+ __metadata("design:type", Object)
45
+ ], AuthUser.prototype, "user_metadata", void 0);
46
+ __decorate([
47
+ (0, core_1.Property)({ columnType: "jsonb", nullable: true }),
48
+ __metadata("design:type", Object)
49
+ ], AuthUser.prototype, "app_metadata", void 0);
50
+ __decorate([
51
+ (0, core_1.Property)({ columnType: "jsonb", nullable: true }),
52
+ __metadata("design:type", Object)
53
+ ], AuthUser.prototype, "provider_metadata", void 0);
54
+ __decorate([
55
+ (0, core_1.BeforeCreate)(),
56
+ __metadata("design:type", Function),
57
+ __metadata("design:paramtypes", []),
58
+ __metadata("design:returntype", void 0)
59
+ ], AuthUser.prototype, "onCreate", null);
60
+ __decorate([
61
+ (0, core_1.OnInit)(),
62
+ __metadata("design:type", Function),
63
+ __metadata("design:paramtypes", []),
64
+ __metadata("design:returntype", void 0)
65
+ ], AuthUser.prototype, "onInit", null);
66
+ AuthUser = __decorate([
67
+ (0, core_1.Entity)(),
68
+ (0, core_1.Unique)({ properties: ["provider", "entity_id"], name: "IDX_auth_user_provider_entity_id" })
69
+ ], AuthUser);
70
+ exports.default = AuthUser;
@@ -0,0 +1,2 @@
1
+ export { default as AuthUser } from "./auth-user";
2
+ export { default as AuthProvider } from "./auth-provider";
@@ -0,0 +1,10 @@
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.AuthProvider = exports.AuthUser = void 0;
7
+ var auth_user_1 = require("./auth-user");
8
+ Object.defineProperty(exports, "AuthUser", { enumerable: true, get: function () { return __importDefault(auth_user_1).default; } });
9
+ var auth_provider_1 = require("./auth-provider");
10
+ Object.defineProperty(exports, "AuthProvider", { enumerable: true, get: function () { return __importDefault(auth_provider_1).default; } });
@@ -0,0 +1,4 @@
1
+ import { ModuleExports } from "@medusajs/types";
2
+ export declare const runMigrations: ({ options, logger, }?: Pick<import("@medusajs/types").LoaderOptions<import("@medusajs/types").ModuleServiceInitializeOptions>, "options" | "logger"> | undefined) => Promise<void>;
3
+ export declare const revertMigration: ({ options, logger, }?: Pick<import("@medusajs/types").LoaderOptions<import("@medusajs/types").ModuleServiceInitializeOptions>, "options" | "logger"> | undefined) => Promise<void>;
4
+ export declare const moduleDefinition: ModuleExports;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.moduleDefinition = exports.revertMigration = exports.runMigrations = void 0;
30
+ const Models = __importStar(require("./models"));
31
+ const _services_1 = require("./services");
32
+ const modules_sdk_1 = require("@medusajs/modules-sdk");
33
+ const utils_1 = require("@medusajs/utils");
34
+ const connection_1 = __importDefault(require("./loaders/connection"));
35
+ const container_1 = __importDefault(require("./loaders/container"));
36
+ const providers_1 = __importDefault(require("./loaders/providers"));
37
+ const migrationScriptOptions = {
38
+ moduleName: modules_sdk_1.Modules.AUTH,
39
+ models: Models,
40
+ pathToMigrations: __dirname + "/migrations",
41
+ };
42
+ exports.runMigrations = utils_1.ModulesSdkUtils.buildMigrationScript(migrationScriptOptions);
43
+ exports.revertMigration = utils_1.ModulesSdkUtils.buildRevertMigrationScript(migrationScriptOptions);
44
+ const service = _services_1.AuthModuleService;
45
+ const loaders = [container_1.default, connection_1.default, providers_1.default];
46
+ exports.moduleDefinition = {
47
+ service,
48
+ loaders,
49
+ runMigrations: exports.runMigrations,
50
+ revertMigration: exports.revertMigration,
51
+ };
@@ -0,0 +1,13 @@
1
+ import { AbstractAuthModuleProvider } from "@medusajs/utils";
2
+ import { AuthenticationInput, AuthenticationResponse } from "@medusajs/types";
3
+ import { AuthUserService } from "../services";
4
+ declare class EmailPasswordProvider extends AbstractAuthModuleProvider {
5
+ static PROVIDER: string;
6
+ static DISPLAY_NAME: string;
7
+ protected readonly authUserSerivce_: AuthUserService;
8
+ constructor({ authUserService }: {
9
+ authUserService: AuthUserService;
10
+ });
11
+ authenticate(userData: AuthenticationInput): Promise<AuthenticationResponse>;
12
+ }
13
+ export default EmailPasswordProvider;
@@ -0,0 +1,45 @@
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
+ const utils_1 = require("@medusajs/utils");
7
+ const scrypt_kdf_1 = __importDefault(require("scrypt-kdf"));
8
+ class EmailPasswordProvider extends utils_1.AbstractAuthModuleProvider {
9
+ constructor({ authUserService }) {
10
+ super(arguments[0]);
11
+ this.authUserSerivce_ = authUserService;
12
+ }
13
+ async authenticate(userData) {
14
+ const { email, password } = userData.body;
15
+ if (!password || !(0, utils_1.isString)(password)) {
16
+ return {
17
+ success: false,
18
+ error: "Password should be a string",
19
+ };
20
+ }
21
+ if (!email || !(0, utils_1.isString)(email)) {
22
+ return {
23
+ success: false,
24
+ error: "Email should be a string",
25
+ };
26
+ }
27
+ const authUser = await this.authUserSerivce_.retrieveByProviderAndEntityId(email, EmailPasswordProvider.PROVIDER);
28
+ const password_hash = authUser.provider_metadata?.password;
29
+ if ((0, utils_1.isString)(password_hash)) {
30
+ const buf = Buffer.from(password_hash, "base64");
31
+ const success = await scrypt_kdf_1.default.verify(buf, password);
32
+ if (success) {
33
+ delete authUser.provider_metadata.password;
34
+ return { success, authUser: JSON.parse(JSON.stringify(authUser)) };
35
+ }
36
+ }
37
+ return {
38
+ success: false,
39
+ error: "Invalid email or password",
40
+ };
41
+ }
42
+ }
43
+ EmailPasswordProvider.PROVIDER = "emailpass";
44
+ EmailPasswordProvider.DISPLAY_NAME = "Email/Password Authentication";
45
+ exports.default = EmailPasswordProvider;
@@ -0,0 +1,32 @@
1
+ import { AbstractAuthModuleProvider } from "@medusajs/utils";
2
+ import { AuthenticationInput, AuthenticationResponse } from "@medusajs/types";
3
+ import { AuthProviderService, AuthUserService } from "../services";
4
+ type InjectedDependencies = {
5
+ authUserService: AuthUserService;
6
+ authProviderService: AuthProviderService;
7
+ };
8
+ declare class GoogleProvider extends AbstractAuthModuleProvider {
9
+ static PROVIDER: string;
10
+ static DISPLAY_NAME: string;
11
+ protected readonly authUserSerivce_: AuthUserService;
12
+ protected readonly authProviderService_: AuthProviderService;
13
+ constructor({ authUserService, authProviderService }: InjectedDependencies);
14
+ authenticate(req: AuthenticationInput): Promise<AuthenticationResponse>;
15
+ validateCallback(req: AuthenticationInput): Promise<AuthenticationResponse>;
16
+ verify_(refreshToken: string, scope: string): Promise<{
17
+ success: boolean;
18
+ error: any;
19
+ authUser?: undefined;
20
+ } | {
21
+ success: boolean;
22
+ authUser: any;
23
+ error?: undefined;
24
+ }>;
25
+ private validateCallbackToken;
26
+ private getConfigFromScope;
27
+ private originalURL;
28
+ private getProviderConfig;
29
+ private getRedirect;
30
+ private getAuthorizationCodeHandler;
31
+ }
32
+ export default GoogleProvider;