@nest-boot/auth 4.0.0-beta.9 → 4.0.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.
- package/dist/auth.constants.d.ts +2 -0
- package/dist/auth.constants.js +6 -0
- package/dist/auth.constants.js.map +1 -0
- package/dist/auth.guard.d.ts +2 -2
- package/dist/auth.guard.js +19 -13
- package/dist/auth.guard.js.map +1 -1
- package/dist/auth.middleware.js +10 -11
- package/dist/auth.middleware.js.map +1 -1
- package/dist/auth.module-definition.d.ts +2 -2
- package/dist/auth.module.js.map +1 -1
- package/dist/auth.service.d.ts +4 -4
- package/dist/auth.service.js +11 -10
- package/dist/auth.service.js.map +1 -1
- package/dist/decorators/current-entity.decorator.js +2 -2
- package/dist/decorators/current-entity.decorator.js.map +1 -1
- package/dist/decorators/current-personal-access-token.decorator.d.ts +1 -1
- package/dist/decorators/current-personal-access-token.decorator.js +4 -4
- package/dist/decorators/current-personal-access-token.decorator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/{personal-access-token.interface.d.ts → access-token.interface.d.ts} +1 -1
- package/dist/interfaces/{auth-payload.interface.js → access-token.interface.js} +1 -1
- package/dist/interfaces/access-token.interface.js.map +1 -0
- package/dist/interfaces/auth-module-options.interface.d.ts +2 -4
- package/dist/interfaces/index.d.ts +1 -2
- package/dist/interfaces/index.js +1 -2
- package/dist/interfaces/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -20
- package/dist/interfaces/auth-payload.interface.d.ts +0 -6
- package/dist/interfaces/auth-payload.interface.js.map +0 -1
- package/dist/interfaces/personal-access-token.interface.js +0 -3
- package/dist/interfaces/personal-access-token.interface.js.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTH_ACCESS_TOKEN = exports.AUTH_ENTITY = void 0;
|
|
4
|
+
exports.AUTH_ENTITY = "AUTH_ENTITY";
|
|
5
|
+
exports.AUTH_ACCESS_TOKEN = "AUTH_ACCESS_TOKEN";
|
|
6
|
+
//# sourceMappingURL=auth.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.constants.js","sourceRoot":"","sources":["../src/auth.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC"}
|
package/dist/auth.guard.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EntityManager } from "@mikro-orm/core";
|
|
2
|
-
import { RequestContext } from "@nest-boot/request-context";
|
|
3
2
|
import { CanActivate, ExecutionContext } from "@nestjs/common";
|
|
4
3
|
import { Reflector } from "@nestjs/core";
|
|
5
4
|
import { AuthModuleOptions } from "./interfaces";
|
|
@@ -8,6 +7,7 @@ export declare class AuthGuard implements CanActivate {
|
|
|
8
7
|
private readonly reflector;
|
|
9
8
|
private readonly entityManager;
|
|
10
9
|
constructor(options: AuthModuleOptions, reflector: Reflector, entityManager: EntityManager);
|
|
10
|
+
private t;
|
|
11
11
|
canActivate(executionContext: ExecutionContext): Promise<boolean>;
|
|
12
|
-
getPermissions(
|
|
12
|
+
getPermissions(): Promise<string[]>;
|
|
13
13
|
}
|
package/dist/auth.guard.js
CHANGED
|
@@ -17,10 +17,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.AuthGuard = void 0;
|
|
19
19
|
const core_1 = require("@mikro-orm/core");
|
|
20
|
+
const i18n_1 = require("@nest-boot/i18n");
|
|
20
21
|
const request_context_1 = require("@nest-boot/request-context");
|
|
21
22
|
const common_1 = require("@nestjs/common");
|
|
22
23
|
const core_2 = require("@nestjs/core");
|
|
23
24
|
const lodash_1 = __importDefault(require("lodash"));
|
|
25
|
+
const auth_constants_1 = require("./auth.constants");
|
|
24
26
|
const auth_module_definition_1 = require("./auth.module-definition");
|
|
25
27
|
let AuthGuard = class AuthGuard {
|
|
26
28
|
constructor(options, reflector, entityManager) {
|
|
@@ -29,38 +31,41 @@ let AuthGuard = class AuthGuard {
|
|
|
29
31
|
this.entityManager = entityManager;
|
|
30
32
|
this.reflector = reflector;
|
|
31
33
|
}
|
|
34
|
+
t(key) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
return (_b = (_a = request_context_1.RequestContext.get(i18n_1.I18N)) === null || _a === void 0 ? void 0 : _a.t(key, { ns: "auth" })) !== null && _b !== void 0 ? _b : key;
|
|
37
|
+
}
|
|
32
38
|
async canActivate(executionContext) {
|
|
33
39
|
var _a;
|
|
34
40
|
if (!["http", "graphql"].includes(executionContext.getType())) {
|
|
35
41
|
return true;
|
|
36
42
|
}
|
|
37
|
-
const ctx = request_context_1.RequestContext.get();
|
|
38
43
|
const requireAuth = this.reflector.get(auth_module_definition_1.REQUIRE_AUTH_METADATA_KEY, executionContext.getHandler());
|
|
39
44
|
if (!((_a = requireAuth !== null && requireAuth !== void 0 ? requireAuth : this.options.defaultRequireAuth) !== null && _a !== void 0 ? _a : false)) {
|
|
40
45
|
return true;
|
|
41
46
|
}
|
|
42
|
-
const
|
|
43
|
-
if (typeof
|
|
44
|
-
|
|
47
|
+
const accessToken = request_context_1.RequestContext.get(auth_constants_1.AUTH_ACCESS_TOKEN);
|
|
48
|
+
if (typeof accessToken === "undefined") {
|
|
49
|
+
throw new common_1.UnauthorizedException(this.t("The access token is invalid."));
|
|
45
50
|
}
|
|
46
51
|
const permissions = this.reflector.get(auth_module_definition_1.PERMISSIONS_METADATA_KEY, executionContext.getHandler());
|
|
47
52
|
if (typeof permissions === "undefined" ||
|
|
48
|
-
lodash_1.default.intersection(await this.getPermissions(
|
|
49
|
-
|
|
53
|
+
lodash_1.default.intersection(await this.getPermissions(), permissions).length > 0) {
|
|
54
|
+
accessToken.lastUsedAt = new Date();
|
|
50
55
|
await this.entityManager.flush();
|
|
51
56
|
return true;
|
|
52
57
|
}
|
|
53
|
-
|
|
58
|
+
throw new common_1.ForbiddenException(this.t("Permission denied."));
|
|
54
59
|
}
|
|
55
|
-
async getPermissions(
|
|
60
|
+
async getPermissions() {
|
|
56
61
|
let permissions = [];
|
|
57
|
-
const
|
|
58
|
-
if (typeof
|
|
59
|
-
if (typeof
|
|
60
|
-
permissions = permissions.concat(
|
|
62
|
+
const entity = request_context_1.RequestContext.get(auth_constants_1.AUTH_ENTITY);
|
|
63
|
+
if (typeof entity !== "undefined") {
|
|
64
|
+
if (typeof entity.permissions !== "undefined") {
|
|
65
|
+
permissions = permissions.concat(entity.permissions);
|
|
61
66
|
}
|
|
62
67
|
else {
|
|
63
|
-
const newPermissions = await core_1.Reference.create(
|
|
68
|
+
const newPermissions = await core_1.Reference.create(entity).load("permissions");
|
|
64
69
|
if (typeof newPermissions !== "undefined") {
|
|
65
70
|
permissions = permissions.concat(newPermissions);
|
|
66
71
|
}
|
|
@@ -70,6 +75,7 @@ let AuthGuard = class AuthGuard {
|
|
|
70
75
|
}
|
|
71
76
|
};
|
|
72
77
|
AuthGuard = __decorate([
|
|
78
|
+
(0, common_1.Injectable)(),
|
|
73
79
|
__param(0, (0, common_1.Inject)(auth_module_definition_1.MODULE_OPTIONS_TOKEN)),
|
|
74
80
|
__metadata("design:paramtypes", [Object, core_2.Reflector,
|
|
75
81
|
core_1.EntityManager])
|
package/dist/auth.guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAA2D;AAC3D,gEAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.middleware.js
CHANGED
|
@@ -16,6 +16,7 @@ exports.AuthMiddleware = void 0;
|
|
|
16
16
|
const core_1 = require("@mikro-orm/core");
|
|
17
17
|
const request_context_1 = require("@nest-boot/request-context");
|
|
18
18
|
const common_1 = require("@nestjs/common");
|
|
19
|
+
const auth_constants_1 = require("./auth.constants");
|
|
19
20
|
const auth_module_definition_1 = require("./auth.module-definition");
|
|
20
21
|
const auth_service_1 = require("./auth.service");
|
|
21
22
|
let AuthMiddleware = class AuthMiddleware {
|
|
@@ -25,22 +26,20 @@ let AuthMiddleware = class AuthMiddleware {
|
|
|
25
26
|
this.authService = authService;
|
|
26
27
|
}
|
|
27
28
|
async use(req, res, next) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
29
|
+
const accessTokenString = this.extractAccessToken(req);
|
|
30
|
+
if (accessTokenString !== null) {
|
|
31
|
+
const accessToken = await this.authService.getToken(accessTokenString);
|
|
32
|
+
if (accessToken !== null) {
|
|
33
|
+
request_context_1.RequestContext.set(auth_constants_1.AUTH_ACCESS_TOKEN, accessToken);
|
|
32
34
|
const entity = await this.entityManager
|
|
33
|
-
.getRepository(
|
|
34
|
-
.findOne(
|
|
35
|
+
.getRepository(accessToken.entityName)
|
|
36
|
+
.findOne(accessToken.entityId);
|
|
35
37
|
if (entity !== null) {
|
|
36
|
-
request_context_1.RequestContext.set(
|
|
37
|
-
entity,
|
|
38
|
-
personalAccessToken,
|
|
39
|
-
});
|
|
38
|
+
request_context_1.RequestContext.set(auth_constants_1.AUTH_ENTITY, entity);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
|
|
42
|
+
next();
|
|
44
43
|
}
|
|
45
44
|
extractAccessToken(req) {
|
|
46
45
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../src/auth.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAAgD;AAChD,gEAA4D;AAC5D,2CAA2E;AAG3E,qEAAgE;AAChE,iDAA6C;
|
|
1
|
+
{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../src/auth.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAAgD;AAChD,gEAA4D;AAC5D,2CAA2E;AAG3E,qDAAkE;AAClE,qEAAgE;AAChE,iDAA6C;AAG7C,IACa,cAAc,GAD3B,MACa,cAAc;IACzB,YAEmB,OAA0B,EAC1B,aAA4B,EAC5B,WAAwB;QAFxB,YAAO,GAAP,OAAO,CAAmB;QAC1B,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;IACxC,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB;QACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,iBAAiB,KAAK,IAAI,EAAE;YAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAEvE,IAAI,WAAW,KAAK,IAAI,EAAE;gBACxB,gCAAc,CAAC,GAAG,CAChB,kCAAiB,EACjB,WAAW,CACZ,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa;qBACpC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;qBACrC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAGjC,IAAI,MAAM,KAAK,IAAI,EAAE;oBACnB,gCAAc,CAAC,GAAG,CAAC,4BAAW,EAAE,MAAM,CAAC,CAAC;iBACzC;aACF;SACF;QAED,IAAI,EAAE,CAAC;IACT,CAAC;IAEO,kBAAkB,CAAC,GAAY;;QACrC,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE;YAC3C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAE3D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;gBAC7D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;aACnB;SACF;QAED,IAAI,OAAO,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;YAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;SAC1B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAlDY,cAAc;IAD1B,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;IAGhC,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;6CAEG,oBAAa;QACf,0BAAW;GALhC,cAAc,CAkD1B;AAlDY,wCAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { AuthModuleOptions } from "./interfaces";
|
|
2
|
-
export declare const PERMISSIONS_METADATA_KEY: string
|
|
3
|
-
export declare const REQUIRE_AUTH_METADATA_KEY: string
|
|
2
|
+
export declare const PERMISSIONS_METADATA_KEY: `${string}-${string}-${string}-${string}-${string}`;
|
|
3
|
+
export declare const REQUIRE_AUTH_METADATA_KEY: `${string}-${string}-${string}-${string}-${string}`;
|
|
4
4
|
export declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<AuthModuleOptions, "register", "create", {}>, MODULE_OPTIONS_TOKEN: string | symbol;
|
package/dist/auth.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AACxB,uCAAyC;AAEzC,6CAAyC;AACzC,uDAAmD;AACnD,qEAGkC;AAClC,iDAA6C;
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AACxB,uCAAyC;AAEzC,6CAAyC;AACzC,uDAAmD;AACnD,qEAGkC;AAClC,iDAA6C;AAG7C,IAWa,UAAU,GAXvB,MAWa,UAAW,SAAQ,gDAAuB;IACrD,YAEmB,OAA0B;QAE3C,KAAK,EAAE,CAAC;QAFS,YAAO,GAAP,OAAO,CAAmB;IAG7C,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,KAAK,CAAC,gCAAc,CAAC,CAAC;QAE7D,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,WAAW,EAAE;YACrD,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC9D;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,WAAW,EAAE;YACrD,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAChE;aAAM;YACL,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACtC;IACH,CAAC;CACF,CAAA;AArBY,UAAU;IAXtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,sBAAS;aACpB;YACD,0BAAW;SACZ;QACD,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;IAGG,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;;GAFpB,UAAU,CAqBtB;AArBY,gCAAU"}
|
package/dist/auth.service.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AnyEntity, EntityManager, Loaded } from "@mikro-orm/core";
|
|
2
|
-
import {
|
|
2
|
+
import { AccessTokenInterface, AuthModuleOptions } from "./interfaces";
|
|
3
3
|
export declare class AuthService {
|
|
4
4
|
private readonly options;
|
|
5
5
|
private readonly entityManager;
|
|
6
|
-
private readonly
|
|
6
|
+
private readonly accessTokenRepository;
|
|
7
7
|
constructor(options: AuthModuleOptions, entityManager: EntityManager);
|
|
8
|
-
createToken(entity: AnyEntity, name: string, expiresIn?: string | number): Promise<
|
|
9
|
-
getToken(token?: string): Promise<Loaded<
|
|
8
|
+
createToken(entity: AnyEntity, name: string, expiresIn?: string | number): Promise<AccessTokenInterface>;
|
|
9
|
+
getToken(token?: string): Promise<Loaded<AccessTokenInterface> | null>;
|
|
10
10
|
verifyToken(token?: string): Promise<boolean>;
|
|
11
11
|
revokeToken(token?: string): Promise<void>;
|
|
12
12
|
}
|
package/dist/auth.service.js
CHANGED
|
@@ -19,40 +19,41 @@ const crypto_1 = require("crypto");
|
|
|
19
19
|
const auth_module_definition_1 = require("./auth.module-definition");
|
|
20
20
|
const ms = require("ms");
|
|
21
21
|
const request_context_1 = require("@nest-boot/request-context");
|
|
22
|
+
const auth_constants_1 = require("./auth.constants");
|
|
22
23
|
let AuthService = class AuthService {
|
|
23
24
|
constructor(options, entityManager) {
|
|
24
25
|
this.options = options;
|
|
25
26
|
this.entityManager = entityManager;
|
|
26
|
-
this.
|
|
27
|
+
this.accessTokenRepository = this.entityManager.getRepository(this.options.accessTokenEntityClass);
|
|
27
28
|
}
|
|
28
29
|
async createToken(entity, name, expiresIn) {
|
|
29
30
|
const token = (0, crypto_1.randomBytes)(32).toString("hex");
|
|
30
31
|
const _expiresIn = expiresIn !== null && expiresIn !== void 0 ? expiresIn : this.options.expiresIn;
|
|
31
32
|
const _expiresInMs = typeof _expiresIn === "string" ? ms(_expiresIn) : _expiresIn;
|
|
32
|
-
const
|
|
33
|
+
const accessToken = this.accessTokenRepository.create({
|
|
33
34
|
name,
|
|
34
35
|
token,
|
|
35
36
|
entityId: entity.id,
|
|
36
37
|
entityName: entity.constructor.name,
|
|
37
38
|
expiresAt: _expiresInMs != null ? new Date(Date.now() + _expiresInMs) : undefined,
|
|
38
39
|
});
|
|
39
|
-
await this.
|
|
40
|
-
return
|
|
40
|
+
await this.accessTokenRepository.persistAndFlush(accessToken);
|
|
41
|
+
return accessToken;
|
|
41
42
|
}
|
|
42
43
|
async getToken(token) {
|
|
43
|
-
var _a
|
|
44
|
+
var _a;
|
|
44
45
|
if (typeof token === "undefined") {
|
|
45
|
-
return ((
|
|
46
|
+
return ((_a = request_context_1.RequestContext.get(auth_constants_1.AUTH_ACCESS_TOKEN)) !== null && _a !== void 0 ? _a : null);
|
|
46
47
|
}
|
|
47
|
-
return await this.
|
|
48
|
+
return await this.accessTokenRepository.findOne({ token });
|
|
48
49
|
}
|
|
49
50
|
async verifyToken(token) {
|
|
50
51
|
return (await this.getToken(token)) !== null;
|
|
51
52
|
}
|
|
52
53
|
async revokeToken(token) {
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
await this.
|
|
54
|
+
const accessToken = await this.getToken(token);
|
|
55
|
+
if (accessToken !== null) {
|
|
56
|
+
await this.accessTokenRepository.remove(accessToken).flush();
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
};
|
package/dist/auth.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../src/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAKyB;AACzB,2CAAoD;AACpD,mCAAqC;AAErC,qEAAgE;
|
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../src/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAKyB;AACzB,2CAAoD;AACpD,mCAAqC;AAErC,qEAAgE;AAEhE,yBAA0B;AAC1B,gEAA4D;AAE5D,qDAAqD;AAErD,IACa,WAAW,GADxB,MACa,WAAW;IAGtB,YAEmB,OAA0B,EAC1B,aAA4B;QAD5B,YAAO,GAAP,OAAO,CAAmB;QAC1B,kBAAa,GAAb,aAAa,CAAe;QAE7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAC3D,IAAI,CAAC,OAAO,CAAC,sBAAsB,CACpC,CAAC;IACJ,CAAC;IAQD,KAAK,CAAC,WAAW,CACf,MAAiB,EACjB,IAAY,EACZ,SAA2B;QAE3B,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,MAAM,YAAY,GAChB,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;YACpD,IAAI;YACJ,KAAK;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;YACnC,SAAS,EACP,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE9D,OAAO,WAAW,CAAC;IACrB,CAAC;IAMD,KAAK,CAAC,QAAQ,CAAC,KAAc;;QAC3B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO,CACL,MAAA,gCAAc,CAAC,GAAG,CAAuB,kCAAiB,CAAC,mCAAI,IAAI,CACpE,CAAC;SACH;QAED,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAMD,KAAK,CAAC,WAAW,CAAC,KAAc;QAC9B,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAC/C,CAAC;IAMD,KAAK,CAAC,WAAW,CAAC,KAAc;QAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;SAC9D;IACH,CAAC;CACF,CAAA;AA7EY,WAAW;IADvB,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,6CAAoB,CAAC,CAAA;6CAEG,oBAAa;GANpC,WAAW,CA6EvB;AA7EY,kCAAW"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CurrentUser = exports.CurrentEntity = void 0;
|
|
4
4
|
const request_context_1 = require("@nest-boot/request-context");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
|
+
const auth_constants_1 = require("../auth.constants");
|
|
6
7
|
exports.CurrentEntity = (0, common_1.createParamDecorator)(() => {
|
|
7
|
-
|
|
8
|
-
return (_a = request_context_1.RequestContext.get("auth")) === null || _a === void 0 ? void 0 : _a.entity;
|
|
8
|
+
return request_context_1.RequestContext.get(auth_constants_1.AUTH_ENTITY);
|
|
9
9
|
});
|
|
10
10
|
exports.CurrentUser = exports.CurrentEntity;
|
|
11
11
|
//# sourceMappingURL=current-entity.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-entity.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-entity.decorator.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,2CAAsD;
|
|
1
|
+
{"version":3,"file":"current-entity.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-entity.decorator.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,2CAAsD;AAEtD,sDAAgD;AAEnC,QAAA,aAAa,GAAG,IAAA,6BAAoB,EAAC,GAAG,EAAE;IACrD,OAAO,gCAAc,CAAC,GAAG,CAAC,4BAAW,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,qBAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const CurrentAccessToken: (...dataOrPipes: any[]) => ParameterDecorator;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CurrentAccessToken = void 0;
|
|
4
4
|
const request_context_1 = require("@nest-boot/request-context");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return
|
|
6
|
+
const auth_constants_1 = require("../auth.constants");
|
|
7
|
+
exports.CurrentAccessToken = (0, common_1.createParamDecorator)(() => {
|
|
8
|
+
return request_context_1.RequestContext.get(auth_constants_1.AUTH_ACCESS_TOKEN);
|
|
9
9
|
});
|
|
10
10
|
//# sourceMappingURL=current-personal-access-token.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-personal-access-token.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-personal-access-token.decorator.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,2CAAsD;
|
|
1
|
+
{"version":3,"file":"current-personal-access-token.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-personal-access-token.decorator.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAC5D,2CAAsD;AAEtD,sDAAsD;AAGzC,QAAA,kBAAkB,GAAG,IAAA,6BAAoB,EAAC,GAAG,EAAE;IAC1D,OAAO,gCAAc,CAAC,GAAG,CAAuB,kCAAiB,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./auth.constants"), exports);
|
|
17
18
|
__exportStar(require("./auth.guard"), exports);
|
|
18
19
|
__exportStar(require("./auth.middleware"), exports);
|
|
19
20
|
__exportStar(require("./auth.module"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,+CAA6B;AAC7B,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-token.interface.js","sourceRoot":"","sources":["../../src/interfaces/access-token.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { EntityClass } from "@mikro-orm/core";
|
|
3
2
|
import { RouteInfo, Type } from "@nestjs/common/interfaces";
|
|
4
|
-
import {
|
|
3
|
+
import { AccessTokenInterface } from "./access-token.interface";
|
|
5
4
|
export interface AuthModuleOptions {
|
|
6
|
-
|
|
7
|
-
secret: string | Buffer;
|
|
5
|
+
accessTokenEntityClass: EntityClass<AccessTokenInterface>;
|
|
8
6
|
expiresIn?: string | number;
|
|
9
7
|
defaultRequireAuth?: boolean;
|
|
10
8
|
includeRoutes?: Array<string | Type<any> | RouteInfo>;
|
package/dist/interfaces/index.js
CHANGED
|
@@ -14,8 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./access-token.interface"), exports);
|
|
17
18
|
__exportStar(require("./auth-module-options.interface"), exports);
|
|
18
|
-
__exportStar(require("./auth-payload.interface"), exports);
|
|
19
19
|
__exportStar(require("./has-permission.interface"), exports);
|
|
20
|
-
__exportStar(require("./personal-access-token.interface"), exports);
|
|
21
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,kEAAgD;AAChD,6DAA2C"}
|