@nest-boot/auth 7.0.0 → 7.1.0

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 (74) hide show
  1. package/dist/adapters/mikro-orm-adapter.d.ts +23 -0
  2. package/dist/adapters/mikro-orm-adapter.js +155 -0
  3. package/dist/adapters/mikro-orm-adapter.js.map +1 -0
  4. package/dist/auth-module-options.interface.d.ts +12 -0
  5. package/dist/auth-module-options.interface.js.map +1 -0
  6. package/dist/auth.constants.d.ts +2 -4
  7. package/dist/auth.constants.js +3 -5
  8. package/dist/auth.constants.js.map +1 -1
  9. package/dist/auth.guard.d.ts +6 -35
  10. package/dist/auth.guard.js +15 -102
  11. package/dist/auth.guard.js.map +1 -1
  12. package/dist/auth.middleware.d.ts +13 -0
  13. package/dist/auth.middleware.js +64 -0
  14. package/dist/auth.middleware.js.map +1 -0
  15. package/dist/auth.module-definition.d.ts +1 -1
  16. package/dist/auth.module.d.ts +11 -1
  17. package/dist/auth.module.js +46 -13
  18. package/dist/auth.module.js.map +1 -1
  19. package/dist/auth.service.d.ts +3 -61
  20. package/dist/auth.service.js +5 -109
  21. package/dist/auth.service.js.map +1 -1
  22. package/dist/decorators/current-session.decorator.d.ts +1 -0
  23. package/dist/decorators/current-session.decorator.js +15 -0
  24. package/dist/decorators/current-session.decorator.js.map +1 -0
  25. package/dist/decorators/current-user.decorator.d.ts +1 -1
  26. package/dist/decorators/current-user.decorator.js +9 -4
  27. package/dist/decorators/current-user.decorator.js.map +1 -1
  28. package/dist/decorators/index.d.ts +2 -3
  29. package/dist/decorators/index.js +2 -3
  30. package/dist/decorators/index.js.map +1 -1
  31. package/dist/decorators/public.decorator.d.ts +2 -0
  32. package/dist/decorators/public.decorator.js +8 -0
  33. package/dist/decorators/public.decorator.js.map +1 -0
  34. package/dist/entities/account.entity.d.ts +16 -0
  35. package/dist/entities/account.entity.js +87 -0
  36. package/dist/entities/account.entity.js.map +1 -0
  37. package/dist/entities/index.d.ts +3 -1
  38. package/dist/entities/index.js +3 -1
  39. package/dist/entities/index.js.map +1 -1
  40. package/dist/entities/session.entity.d.ts +11 -0
  41. package/dist/entities/session.entity.js +68 -0
  42. package/dist/entities/session.entity.js.map +1 -0
  43. package/dist/entities/user.entity.d.ts +5 -8
  44. package/dist/entities/user.entity.js +31 -40
  45. package/dist/entities/user.entity.js.map +1 -1
  46. package/dist/entities/verification.entity.d.ts +9 -0
  47. package/dist/entities/verification.entity.js +55 -0
  48. package/dist/entities/verification.entity.js.map +1 -0
  49. package/dist/index.d.ts +1 -2
  50. package/dist/index.js +1 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/tsconfig.build.tsbuildinfo +1 -1
  53. package/package.json +7 -17
  54. package/dist/decorators/can.decorator.d.ts +0 -1
  55. package/dist/decorators/can.decorator.js +0 -8
  56. package/dist/decorators/can.decorator.js.map +0 -1
  57. package/dist/decorators/current-personal-access-token.decorator.d.ts +0 -1
  58. package/dist/decorators/current-personal-access-token.decorator.js +0 -10
  59. package/dist/decorators/current-personal-access-token.decorator.js.map +0 -1
  60. package/dist/decorators/require-auth.decorator.d.ts +0 -1
  61. package/dist/decorators/require-auth.decorator.js +0 -8
  62. package/dist/decorators/require-auth.decorator.js.map +0 -1
  63. package/dist/entities/personal-access-token.entity.d.ts +0 -14
  64. package/dist/entities/personal-access-token.entity.js +0 -72
  65. package/dist/entities/personal-access-token.entity.js.map +0 -1
  66. package/dist/interfaces/auth-module-options.interface.d.ts +0 -10
  67. package/dist/interfaces/auth-module-options.interface.js.map +0 -1
  68. package/dist/interfaces/index.d.ts +0 -1
  69. package/dist/interfaces/index.js +0 -18
  70. package/dist/interfaces/index.js.map +0 -1
  71. package/dist/utils/random-string.util.d.ts +0 -6
  72. package/dist/utils/random-string.util.js +0 -26
  73. package/dist/utils/random-string.util.js.map +0 -1
  74. /package/dist/{interfaces/auth-module-options.interface.js → auth-module-options.interface.js} +0 -0
@@ -0,0 +1,23 @@
1
+ import { EntityClass, MikroORM } from "@mikro-orm/core";
2
+ import { type DBAdapterDebugLogOption } from "better-auth/adapters";
3
+ import { BaseAccount, BaseSession, BaseUser, BaseVerification } from "../entities";
4
+ export interface MikroOrmAdapterConfig {
5
+ /**
6
+ * The MikroORM instance.
7
+ */
8
+ orm: MikroORM;
9
+ /**
10
+ * The entities to use for the adapter.
11
+ */
12
+ entities: {
13
+ account: EntityClass<BaseAccount>;
14
+ session: EntityClass<BaseSession>;
15
+ user: EntityClass<BaseUser>;
16
+ verification: EntityClass<BaseVerification>;
17
+ };
18
+ /**
19
+ * Helps you debug issues with the adapter.
20
+ */
21
+ debugLogs?: DBAdapterDebugLogOption;
22
+ }
23
+ export declare const mikroOrmAdapter: ({ orm, entities, ...config }: MikroOrmAdapterConfig) => import("better-auth/adapters").AdapterFactory;
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mikroOrmAdapter = void 0;
4
+ const adapters_1 = require("better-auth/adapters");
5
+ function convertWhereToMikroOrm(where) {
6
+ return where.map(({ field, operator, value }) => {
7
+ switch (operator) {
8
+ case "eq":
9
+ return {
10
+ [field]: {
11
+ $eq: value,
12
+ },
13
+ };
14
+ case "ne":
15
+ return {
16
+ [field]: {
17
+ $ne: value,
18
+ },
19
+ };
20
+ case "lt":
21
+ return {
22
+ [field]: {
23
+ $lt: value,
24
+ },
25
+ };
26
+ case "lte":
27
+ return {
28
+ [field]: {
29
+ $lte: value,
30
+ },
31
+ };
32
+ case "gt":
33
+ return {
34
+ [field]: {
35
+ $gt: value,
36
+ },
37
+ };
38
+ case "gte":
39
+ return {
40
+ [field]: {
41
+ $gte: value,
42
+ },
43
+ };
44
+ case "in":
45
+ return {
46
+ [field]: {
47
+ $in: value,
48
+ },
49
+ };
50
+ case "not_in":
51
+ return {
52
+ [field]: {
53
+ $nin: value,
54
+ },
55
+ };
56
+ case "contains":
57
+ if (typeof value !== "string") {
58
+ throw new Error("Value must be a string");
59
+ }
60
+ return {
61
+ [field]: {
62
+ $like: `%${value}%`,
63
+ },
64
+ };
65
+ case "starts_with":
66
+ if (typeof value !== "string") {
67
+ throw new Error("Value must be a string");
68
+ }
69
+ return {
70
+ [field]: {
71
+ $like: `${value}%`,
72
+ },
73
+ };
74
+ case "ends_with":
75
+ if (typeof value !== "string") {
76
+ throw new Error("Value must be a string");
77
+ }
78
+ return {
79
+ [field]: {
80
+ $like: `%${value}`,
81
+ },
82
+ };
83
+ }
84
+ });
85
+ }
86
+ const mikroOrmAdapter = ({ orm, entities, ...config }) => {
87
+ const getEntityClass = (model) => {
88
+ return entities[model];
89
+ };
90
+ return (0, adapters_1.createAdapterFactory)({
91
+ config: {
92
+ adapterId: "mikro-orm-adapter", // A unique identifier for the adapter.
93
+ adapterName: "MikroORM Adapter", // The name of the adapter.
94
+ usePlural: false, // Whether the table names in the schema are plural.
95
+ debugLogs: config.debugLogs ?? false, // Whether to enable debug logs.
96
+ supportsJSON: true, // Whether the database supports JSON. (Default: false)
97
+ supportsDates: true, // Whether the database supports dates. (Default: true)
98
+ supportsBooleans: true, // Whether the database supports booleans. (Default: true)
99
+ supportsNumericIds: true, // Whether the database supports auto-incrementing numeric IDs. (Default: true)
100
+ disableIdGeneration: true, // Whether to disable id generation. (Default: false)
101
+ ...config,
102
+ },
103
+ adapter: () => {
104
+ return {
105
+ create: async ({ data, model }) => {
106
+ const entity = orm.em.create(getEntityClass(model), data);
107
+ await orm.em.persistAndFlush(entity);
108
+ return entity;
109
+ },
110
+ update: async ({ model, where, update }) => {
111
+ const entity = await orm.em.findOne(getEntityClass(model), convertWhereToMikroOrm(where));
112
+ if (!entity) {
113
+ return null;
114
+ }
115
+ orm.em.assign(entity, update);
116
+ await orm.em.flush();
117
+ return entity;
118
+ },
119
+ updateMany: async ({ model, where, update }) => {
120
+ return await orm.em.nativeUpdate(getEntityClass(model), convertWhereToMikroOrm(where), update);
121
+ },
122
+ delete: async ({ model, where }) => {
123
+ await orm.em.nativeDelete(getEntityClass(model), convertWhereToMikroOrm(where));
124
+ },
125
+ deleteMany: async ({ model, where }) => {
126
+ return await orm.em.nativeDelete(getEntityClass(model), convertWhereToMikroOrm(where));
127
+ },
128
+ findOne: async ({ model, where }) => {
129
+ const entity = await orm.em.findOne(getEntityClass(model), convertWhereToMikroOrm(where));
130
+ return entity;
131
+ },
132
+ findMany: async ({ model, where, limit, offset, sortBy }) => {
133
+ const result = await orm.em.findAll(getEntityClass(model), {
134
+ ...(where ? { where: convertWhereToMikroOrm(where) } : {}),
135
+ limit: limit,
136
+ offset: offset ?? 0,
137
+ ...(sortBy
138
+ ? {
139
+ orderBy: {
140
+ [sortBy.field]: sortBy.direction,
141
+ },
142
+ }
143
+ : {}),
144
+ });
145
+ return result;
146
+ },
147
+ count: async ({ model, where }) => {
148
+ return await orm.em.count(getEntityClass(model), where ? convertWhereToMikroOrm(where) : undefined);
149
+ },
150
+ };
151
+ },
152
+ });
153
+ };
154
+ exports.mikroOrmAdapter = mikroOrmAdapter;
155
+ //# sourceMappingURL=mikro-orm-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mikro-orm-adapter.js","sourceRoot":"","sources":["../../src/adapters/mikro-orm-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { RouteInfo, Type } from "@nestjs/common/interfaces";
2
+ import { BetterAuthOptions } from "better-auth";
3
+ import { MikroOrmAdapterConfig } from "./adapters/mikro-orm-adapter";
4
+ export interface AuthModuleMiddlewareOptions {
5
+ includeRoutes?: (string | RouteInfo | Type)[];
6
+ excludeRoutes?: (string | RouteInfo)[];
7
+ }
8
+ export interface AuthModuleOptions extends Omit<BetterAuthOptions, "database"> {
9
+ basePath?: string;
10
+ entities: MikroOrmAdapterConfig["entities"];
11
+ middleware?: AuthModuleMiddlewareOptions;
12
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module-options.interface.js","sourceRoot":"","sources":["../src/auth-module-options.interface.ts"],"names":[],"mappings":""}
@@ -1,4 +1,2 @@
1
- export declare const PERMISSIONS_METADATA_KEY: unique symbol;
2
- export declare const REQUIRE_AUTH_METADATA_KEY: unique symbol;
3
- export declare const AUTH_USER: unique symbol;
4
- export declare const AUTH_PERSONAL_ACCESS_TOKEN: unique symbol;
1
+ export declare const AUTH_TOKEN: unique symbol;
2
+ export declare const IS_PUBLIC_KEY: unique symbol;
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AUTH_PERSONAL_ACCESS_TOKEN = exports.AUTH_USER = exports.REQUIRE_AUTH_METADATA_KEY = exports.PERMISSIONS_METADATA_KEY = void 0;
4
- exports.PERMISSIONS_METADATA_KEY = Symbol("PERMISSIONS_METADATA_KEY");
5
- exports.REQUIRE_AUTH_METADATA_KEY = Symbol("REQUIRE_AUTH_METADATA_KEY");
6
- exports.AUTH_USER = Symbol("AUTH_USER");
7
- exports.AUTH_PERSONAL_ACCESS_TOKEN = Symbol("AUTH_PERSONAL_ACCESS_TOKEN");
3
+ exports.IS_PUBLIC_KEY = exports.AUTH_TOKEN = void 0;
4
+ exports.AUTH_TOKEN = Symbol("AUTH");
5
+ exports.IS_PUBLIC_KEY = Symbol("IS_PUBLIC_KEY");
8
6
  //# sourceMappingURL=auth.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.constants.js","sourceRoot":"","sources":["../src/auth.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE9D,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAEhE,QAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEhC,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC"}
1
+ {"version":3,"file":"auth.constants.js","sourceRoot":"","sources":["../src/auth.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAE5B,QAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -1,38 +1,9 @@
1
- import { EntityManager } from "@mikro-orm/core";
2
- import { type CanActivate, type ExecutionContext } from "@nestjs/common";
1
+ import { CanActivate, ExecutionContext } from "@nestjs/common";
3
2
  import { Reflector } from "@nestjs/core";
4
- import { AuthService } from "./auth.service";
5
- import { AuthModuleOptions } from "./interfaces";
6
- /**
7
- * Authentication guard class used to protect routes and handle requests.
8
- */
3
+ import { Response } from "express";
9
4
  export declare class AuthGuard implements CanActivate {
10
- private readonly reflector;
11
- private readonly em;
12
- private readonly authService;
13
- private readonly options;
14
- private readonly defaultRequireAuth;
15
- private readonly userEntityClass;
16
- private readonly personalAccessTokenEntityClass;
17
- private readonly personalAccessTokenAndUserDataLoader;
18
- constructor(reflector: Reflector, em: EntityManager, authService: AuthService, options: AuthModuleOptions);
19
- /**
20
- * Get internationalized text based on the specified key.
21
- * @param key - The key of the internationalized text.
22
- * @returns The internationalized text.
23
- */
24
- private t;
25
- /**
26
- * Extracts the personal access token from the request.
27
- * @param req - The request object.
28
- * @returns The personal access token, or null if it doesn't exist.
29
- */
30
- private extractPersonalAccessToken;
31
- private getPersonalAccessTokenAndUser;
32
- /**
33
- * Determines whether the request is allowed to be executed.
34
- * @param executionContext - The execution context object.
35
- * @returns True if the request is allowed to be executed, otherwise false.
36
- */
37
- canActivate(executionContext: ExecutionContext): Promise<boolean>;
5
+ protected readonly reflector: Reflector;
6
+ constructor(reflector: Reflector);
7
+ getResponse(context: ExecutionContext): Promise<Response>;
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
38
9
  }
@@ -8,122 +8,35 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
11
  Object.defineProperty(exports, "__esModule", { value: true });
18
12
  exports.AuthGuard = void 0;
19
- const core_1 = require("@mikro-orm/core");
20
- const i18n_1 = require("@nest-boot/i18n");
21
- const request_context_1 = require("@nest-boot/request-context");
22
13
  const common_1 = require("@nestjs/common");
23
- const core_2 = require("@nestjs/core");
24
- const dataloader_1 = __importDefault(require("dataloader"));
25
- const lodash_1 = __importDefault(require("lodash"));
14
+ const core_1 = require("@nestjs/core");
26
15
  const auth_constants_1 = require("./auth.constants");
27
- const auth_module_definition_1 = require("./auth.module-definition");
28
- const auth_service_1 = require("./auth.service");
29
- const entities_1 = require("./entities");
30
- /**
31
- * Authentication guard class used to protect routes and handle requests.
32
- */
33
16
  let AuthGuard = class AuthGuard {
34
- constructor(reflector, em, authService, options) {
35
- this.reflector = reflector;
36
- this.em = em;
37
- this.authService = authService;
38
- this.options = options;
17
+ constructor(reflector) {
39
18
  this.reflector = reflector;
40
- this.defaultRequireAuth = this.options?.defaultRequireAuth ?? true;
41
- this.userEntityClass = this.options.entities?.User ?? entities_1.User;
42
- this.personalAccessTokenEntityClass =
43
- this.options.entities?.PersonalAccessToken ?? entities_1.PersonalAccessToken;
44
- this.personalAccessTokenAndUserDataLoader = new dataloader_1.default((tokens) => Promise.all(tokens.map((token) => this.getPersonalAccessTokenAndUser(token))));
45
- }
46
- /**
47
- * Get internationalized text based on the specified key.
48
- * @param key - The key of the internationalized text.
49
- * @returns The internationalized text.
50
- */
51
- t(key) {
52
- return request_context_1.RequestContext.get(i18n_1.I18N)?.t(key, { ns: "auth" }) ?? key;
53
- }
54
- /**
55
- * Extracts the personal access token from the request.
56
- * @param req - The request object.
57
- * @returns The personal access token, or null if it doesn't exist.
58
- */
59
- extractPersonalAccessToken(req) {
60
- const authorizationHeader = req.get("authorization");
61
- if (typeof authorizationHeader !== "undefined") {
62
- const matched = /(\S+)\s+(\S+)/.exec(authorizationHeader);
63
- if (matched !== null && matched[1].toLowerCase() === "bearer") {
64
- return matched[2];
65
- }
66
- }
67
- if (typeof req.cookies?.token === "string") {
68
- return req.cookies.token;
69
- }
70
- return null;
71
19
  }
72
- async getPersonalAccessTokenAndUser(token) {
73
- const personalAccessToken = await this.authService.getToken(token);
74
- const user = await personalAccessToken?.user.load();
75
- if (personalAccessToken === null || user == null) {
76
- throw new common_1.UnauthorizedException(this.t("The personal access token is invalid."));
20
+ async getResponse(context) {
21
+ if (context.getType() === "graphql") {
22
+ return context.getArgByIndex(2).req.res;
77
23
  }
78
- await this.authService.updateLastUsedAt(personalAccessToken);
79
- request_context_1.RequestContext.set(this.userEntityClass, user);
80
- request_context_1.RequestContext.set(this.personalAccessTokenEntityClass, personalAccessToken);
81
- request_context_1.RequestContext.set(auth_constants_1.AUTH_USER, user);
82
- request_context_1.RequestContext.set(auth_constants_1.AUTH_PERSONAL_ACCESS_TOKEN, personalAccessToken);
83
- return { personalAccessToken, user };
24
+ return await context.switchToHttp().getResponse();
84
25
  }
85
- /**
86
- * Determines whether the request is allowed to be executed.
87
- * @param executionContext - The execution context object.
88
- * @returns True if the request is allowed to be executed, otherwise false.
89
- */
90
- async canActivate(executionContext) {
91
- if (!["http", "graphql"].includes(executionContext.getType())) {
92
- return true;
93
- }
94
- // Get whether the method requires authentication
95
- const requireAuth = this.reflector.get(auth_constants_1.REQUIRE_AUTH_METADATA_KEY, executionContext.getHandler()) ??
96
- this.reflector.get(auth_constants_1.REQUIRE_AUTH_METADATA_KEY, executionContext.getClass());
97
- // If it's publicly accessible by default or has public access permission, allow access directly
98
- if (!(requireAuth ?? this.defaultRequireAuth ?? false)) {
99
- return true;
100
- }
101
- // Get the Request object
102
- const req = executionContext.switchToHttp().getRequest() ??
103
- executionContext.getArgs()[2].req;
104
- // Extract the token
105
- const token = this.extractPersonalAccessToken(req);
106
- if (token === null) {
107
- throw new common_1.UnauthorizedException(this.t("The personal access token is invalid."));
108
- }
109
- const { user } = await this.personalAccessTokenAndUserDataLoader.load(token);
110
- // Get the method permissions
111
- const permissions = this.reflector.get(auth_constants_1.PERMISSIONS_METADATA_KEY, executionContext.getHandler());
112
- // If there are no permission requirements, allow access directly
113
- // Check if there is an intersection between user permissions and configured permissions, if so, allow access
114
- if (typeof permissions === "undefined" ||
115
- lodash_1.default.intersection(user.permissions, permissions).length > 0) {
26
+ async canActivate(context) {
27
+ if (this.reflector.getAllAndOverride(auth_constants_1.IS_PUBLIC_KEY, [
28
+ context.getHandler(),
29
+ context.getClass(),
30
+ ])) {
116
31
  return true;
117
32
  }
118
- throw new common_1.ForbiddenException(this.t("Permission denied."));
33
+ const res = await this.getResponse(context);
34
+ return !!res.locals.session;
119
35
  }
120
36
  };
121
37
  exports.AuthGuard = AuthGuard;
122
38
  exports.AuthGuard = AuthGuard = __decorate([
123
- (0, common_1.Injectable)({ scope: common_1.Scope.REQUEST }),
124
- __param(3, (0, common_1.Inject)(auth_module_definition_1.MODULE_OPTIONS_TOKEN)),
125
- __metadata("design:paramtypes", [core_2.Reflector,
126
- core_1.EntityManager,
127
- auth_service_1.AuthService, Object])
39
+ (0, common_1.Injectable)(),
40
+ __metadata("design:paramtypes", [core_1.Reflector])
128
41
  ], AuthGuard);
129
42
  //# sourceMappingURL=auth.guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA2E;AAC3E,uCAAyC;AAGzC,qDAAiD;AAG1C,IAAM,SAAS,GAAf,MAAM,SAAS;IACpB,YAA+B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAEvD,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,IAAI,OAAO,CAAC,OAAO,EAAa,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1C,CAAC;QAED,OAAO,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,IACE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,8BAAa,EAAE;YACvD,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,EACF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF,CAAA;AAxBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;qCAE+B,gBAAS;GADxC,SAAS,CAwBrB"}
@@ -0,0 +1,13 @@
1
+ import { EntityManager } from "@mikro-orm/core";
2
+ import { NestMiddleware } from "@nestjs/common";
3
+ import { NextFunction, Request, Response } from "express";
4
+ import { AuthService } from "./auth.service";
5
+ import { AuthModuleOptions } from "./auth-module-options.interface";
6
+ export declare class AuthMiddleware implements NestMiddleware {
7
+ private readonly options;
8
+ private readonly authService;
9
+ private readonly em;
10
+ constructor(options: AuthModuleOptions, authService: AuthService, em: EntityManager);
11
+ private getSession;
12
+ use(req: Request, res: Response, next: NextFunction): Promise<void>;
13
+ }
@@ -0,0 +1,64 @@
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
+ exports.AuthMiddleware = void 0;
16
+ const core_1 = require("@mikro-orm/core");
17
+ const common_1 = require("@nestjs/common");
18
+ const auth_module_definition_1 = require("./auth.module-definition");
19
+ const auth_service_1 = require("./auth.service");
20
+ let AuthMiddleware = class AuthMiddleware {
21
+ constructor(options, authService, em) {
22
+ this.options = options;
23
+ this.authService = authService;
24
+ this.em = em;
25
+ }
26
+ async getSession(req) {
27
+ const headers = new Headers();
28
+ Object.entries(req.headers).forEach(([key, value]) => {
29
+ if (value) {
30
+ if (Array.isArray(value)) {
31
+ value.forEach((v) => {
32
+ headers.append(key, v);
33
+ });
34
+ }
35
+ else {
36
+ headers.set(key, value);
37
+ }
38
+ }
39
+ });
40
+ return await this.authService.auth.api.getSession({
41
+ headers,
42
+ });
43
+ }
44
+ async use(req, res, next) {
45
+ const data = await this.getSession(req);
46
+ if (data) {
47
+ res.locals.user = await this.em.findOne(this.options.entities.user, {
48
+ id: data.user.id,
49
+ });
50
+ res.locals.session = await this.em.findOne(this.options.entities.session, {
51
+ token: data.session.token,
52
+ });
53
+ }
54
+ next();
55
+ }
56
+ };
57
+ exports.AuthMiddleware = AuthMiddleware;
58
+ exports.AuthMiddleware = AuthMiddleware = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __param(0, (0, common_1.Inject)(auth_module_definition_1.MODULE_OPTIONS_TOKEN)),
61
+ __metadata("design:paramtypes", [Object, auth_service_1.AuthService,
62
+ core_1.EntityManager])
63
+ ], AuthMiddleware);
64
+ //# sourceMappingURL=auth.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../src/auth.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAAgD;AAChD,2CAAoE;AAGpE,qEAAgE;AAChE,iDAA6C;AAItC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAEmB,OAA0B,EAC1B,WAAwB,EACxB,EAAiB;QAFjB,YAAO,GAAP,OAAO,CAAmB;QAC1B,gBAAW,GAAX,WAAW,CAAa;QACxB,OAAE,GAAF,EAAE,CAAe;IACjC,CAAC;IACI,KAAK,CAAC,UAAU,CAAC,GAAY;QACnC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAChD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QACvD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAClE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;aACjB,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAC7B;gBACE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B,CACF,CAAC;QACJ,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAA;AA7CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;6CAEC,0BAAW;QACpB,oBAAa;GALzB,cAAc,CA6C1B"}
@@ -1,4 +1,4 @@
1
- import { type AuthModuleOptions } from "./interfaces";
1
+ import { type AuthModuleOptions } from "./auth-module-options.interface";
2
2
  export declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<AuthModuleOptions, "register", "create", {
3
3
  isGlobal: boolean;
4
4
  }>, MODULE_OPTIONS_TOKEN: string | symbol;
@@ -1,3 +1,13 @@
1
+ import { MiddlewareConsumer, NestModule, OnModuleInit } from "@nestjs/common";
2
+ import { HttpAdapterHost } from "@nestjs/core";
3
+ import { Auth } from "better-auth";
1
4
  import { ConfigurableModuleClass } from "./auth.module-definition";
2
- export declare class AuthModule extends ConfigurableModuleClass {
5
+ import { AuthModuleOptions } from "./auth-module-options.interface";
6
+ export declare class AuthModule extends ConfigurableModuleClass implements NestModule, OnModuleInit {
7
+ private readonly adapterHost;
8
+ private readonly auth;
9
+ private readonly options;
10
+ constructor(adapterHost: HttpAdapterHost, auth: Auth, options: AuthModuleOptions);
11
+ configure(consumer: MiddlewareConsumer): void;
12
+ onModuleInit(): void;
3
13
  }
@@ -5,29 +5,62 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
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
+ };
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
15
  exports.AuthModule = void 0;
10
- const request_context_1 = require("@nest-boot/request-context");
16
+ const core_1 = require("@mikro-orm/core");
11
17
  const common_1 = require("@nestjs/common");
12
- const core_1 = require("@nestjs/core");
13
- const auth_guard_1 = require("./auth.guard");
18
+ const core_2 = require("@nestjs/core");
19
+ const better_auth_1 = require("better-auth");
20
+ const node_1 = require("better-auth/node");
21
+ const mikro_orm_adapter_1 = require("./adapters/mikro-orm-adapter");
22
+ const auth_constants_1 = require("./auth.constants");
23
+ const auth_middleware_1 = require("./auth.middleware");
14
24
  const auth_module_definition_1 = require("./auth.module-definition");
15
25
  const auth_service_1 = require("./auth.service");
26
+ const authProvider = {
27
+ provide: auth_constants_1.AUTH_TOKEN,
28
+ inject: [auth_module_definition_1.MODULE_OPTIONS_TOKEN, core_1.MikroORM],
29
+ useFactory: (options, orm) => (0, better_auth_1.betterAuth)({
30
+ ...options,
31
+ database: (0, mikro_orm_adapter_1.mikroOrmAdapter)({
32
+ orm,
33
+ entities: options.entities,
34
+ }),
35
+ }),
36
+ };
16
37
  let AuthModule = class AuthModule extends auth_module_definition_1.ConfigurableModuleClass {
38
+ constructor(adapterHost, auth, options) {
39
+ super();
40
+ this.adapterHost = adapterHost;
41
+ this.auth = auth;
42
+ this.options = options;
43
+ }
44
+ configure(consumer) {
45
+ const proxy = consumer.apply(auth_middleware_1.AuthMiddleware);
46
+ if (this.options.middleware?.excludeRoutes) {
47
+ proxy.exclude(...this.options.middleware.excludeRoutes);
48
+ }
49
+ proxy.forRoutes(...(this.options.middleware?.includeRoutes ?? ["*"]));
50
+ }
51
+ onModuleInit() {
52
+ const app = this.adapterHost.httpAdapter.getInstance();
53
+ app.all(this.options.basePath ?? "/api/auth/{*any}", (0, node_1.toNodeHandler)(this.auth));
54
+ }
17
55
  };
18
56
  exports.AuthModule = AuthModule;
19
57
  exports.AuthModule = AuthModule = __decorate([
20
58
  (0, common_1.Module)({
21
- imports: [request_context_1.RequestContextModule],
22
- providers: [
23
- {
24
- provide: core_1.APP_GUARD,
25
- useClass: auth_guard_1.AuthGuard,
26
- },
27
- auth_service_1.AuthService,
28
- core_1.Reflector,
29
- ],
59
+ providers: [authProvider, auth_service_1.AuthService],
30
60
  exports: [auth_service_1.AuthService],
31
- })
61
+ }),
62
+ __param(1, (0, common_1.Inject)(auth_constants_1.AUTH_TOKEN)),
63
+ __param(2, (0, common_1.Inject)(auth_module_definition_1.MODULE_OPTIONS_TOKEN)),
64
+ __metadata("design:paramtypes", [core_2.HttpAdapterHost, Object, Object])
32
65
  ], AuthModule);
33
66
  //# sourceMappingURL=auth.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gEAAkE;AAClE,2CAAwC;AACxC,uCAAoD;AAEpD,6CAAyC;AACzC,qEAAmE;AACnE,iDAA6C;AActC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,gDAAuB;CAAG,CAAA;AAA7C,gCAAU;qBAAV,UAAU;IAZtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sCAAoB,CAAC;QAC/B,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,sBAAS;aACpB;YACD,0BAAW;YACX,gBAAS;SACV;QACD,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,UAAU,CAAmC"}
1
+ {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAA2C;AAC3C,2CAOwB;AACxB,uCAA+C;AAC/C,6CAA+C;AAC/C,2CAAiD;AAGjD,oEAA+D;AAC/D,qDAA8C;AAC9C,uDAAmD;AACnD,qEAGkC;AAClC,iDAA6C;AAG7C,MAAM,YAAY,GAAa;IAC7B,OAAO,EAAE,2BAAU;IACnB,MAAM,EAAE,CAAC,6CAAoB,EAAE,eAAQ,CAAC;IACxC,UAAU,EAAE,CAAC,OAA0B,EAAE,GAAa,EAAE,EAAE,CACxD,IAAA,wBAAU,EAAC;QACT,GAAG,OAAO;QACV,QAAQ,EAAE,IAAA,mCAAe,EAAC;YACxB,GAAG;YACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;KACH,CAAC;CACL,CAAC;AAMK,IAAM,UAAU,GAAhB,MAAM,UACX,SAAQ,gDAAuB;IAG/B,YACmB,WAA4B,EAE5B,IAAU,EAEV,OAA0B;QAE3C,KAAK,EAAE,CAAC;QANS,gBAAW,GAAX,WAAW,CAAiB;QAE5B,SAAI,GAAJ,IAAI,CAAM;QAEV,YAAO,GAAP,OAAO,CAAmB;IAG7C,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,gCAAc,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;YAC3C,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAW,CAAC;QAEhE,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,kBAAkB,EAC3C,IAAA,oBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CACzB,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,YAAY,EAAE,0BAAW,CAAC;QACtC,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;IAOG,WAAA,IAAA,eAAM,EAAC,2BAAU,CAAC,CAAA;IAElB,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;qCAHC,sBAAe;GALpC,UAAU,CAgCtB"}