@volontariapp/auth 3.0.2 → 3.1.0-snap-8ad3602
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/CHANGELOG.md +11 -0
- package/dist/decorators/current-user.decorator.js +1 -1
- package/dist/decorators/current-user.decorator.js.map +1 -1
- package/dist/guards/access-token.guard.d.ts.map +1 -1
- package/dist/guards/access-token.guard.js.map +1 -1
- package/dist/guards/grpc-internal.guard.d.ts.map +1 -1
- package/dist/guards/grpc-internal.guard.js +2 -1
- package/dist/guards/grpc-internal.guard.js.map +1 -1
- package/dist/guards/refresh-token.guard.d.ts.map +1 -1
- package/dist/guards/refresh-token.guard.js.map +1 -1
- package/dist/guards/roles.guard.d.ts.map +1 -1
- package/dist/guards/roles.guard.js +10 -2
- package/dist/guards/roles.guard.js.map +1 -1
- package/dist/interceptors/grpc-internal.interceptor.d.ts.map +1 -1
- package/dist/interceptors/grpc-internal.interceptor.js.map +1 -1
- package/dist/interfaces/auth-user.interface.d.ts +1 -1
- package/dist/interfaces/auth-user.interface.d.ts.map +1 -1
- package/dist/middlewares/access-token.middleware.d.ts +2 -1
- package/dist/middlewares/access-token.middleware.d.ts.map +1 -1
- package/dist/middlewares/access-token.middleware.js +6 -7
- package/dist/middlewares/access-token.middleware.js.map +1 -1
- package/dist/middlewares/refresh-token.middleware.d.ts +2 -1
- package/dist/middlewares/refresh-token.middleware.d.ts.map +1 -1
- package/dist/middlewares/refresh-token.middleware.js +6 -7
- package/dist/middlewares/refresh-token.middleware.js.map +1 -1
- package/dist/services/jwt.service.d.ts +3 -3
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +7 -8
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/test/example/auth-test.controller.d.ts.map +1 -1
- package/dist/test/example/auth-test.controller.js +2 -1
- package/dist/test/example/auth-test.controller.js.map +1 -1
- package/dist/test/integration/full-auth-flow.int.spec.js +11 -10
- package/dist/test/integration/full-auth-flow.int.spec.js.map +1 -1
- package/dist/test/unit/access-token.middleware.unit.spec.js +25 -18
- package/dist/test/unit/access-token.middleware.unit.spec.js.map +1 -1
- package/dist/test/unit/jwt.service.unit.spec.js +21 -18
- package/dist/test/unit/jwt.service.unit.spec.js.map +1 -1
- package/dist/test/unit/refresh-token.middleware.unit.spec.js +18 -11
- package/dist/test/unit/refresh-token.middleware.unit.spec.js.map +1 -1
- package/dist/test/unit/roles.guard.unit.spec.js +6 -5
- package/dist/test/unit/roles.guard.unit.spec.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,7 @@ import { createParamDecorator } from '@nestjs/common';
|
|
|
2
2
|
export const CurrentUser = createParamDecorator((_data, ctx) => {
|
|
3
3
|
if (ctx.getType() === 'rpc') {
|
|
4
4
|
const rpcContext = ctx.switchToRpc().getContext();
|
|
5
|
-
return rpcContext
|
|
5
|
+
return rpcContext['user'];
|
|
6
6
|
}
|
|
7
7
|
const request = ctx.switchToHttp().getRequest();
|
|
8
8
|
return request.user;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-user.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-user.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAC7C,CAAC,KAAc,EAAE,GAAqB,EAAwB,EAAE;IAC9D,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,EAA2B,CAAC;QAC3E,OAAO,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"current-user.decorator.js","sourceRoot":"","sources":["../../src/decorators/current-user.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAC7C,CAAC,KAAc,EAAE,GAAqB,EAAwB,EAAE;IAC9D,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,EAA2B,CAAC;QAC3E,OAAO,UAAU,CAAC,MAAM,CAAyB,CAAC;IACpD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAuB,CAAC;IACrE,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC,CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,qBACa,gBAAiB,YAAW,WAAW;IAGhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;gBAEnE,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;IAGjC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAuC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIrE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAGR;IACA;IAHF,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,YACmB,UAAsB,EACtB,SAAoB;QADpB,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,aAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,oBAAoB,EAAE;YACrF,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,QAAQ;gBACN,CAAC,CAAC,2CAA2C;gBAC7C,CAAC,CAAC,mEAAmE,CACxE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAA2B,CAAC;QAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAErC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAChF,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAa,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,OAAO,EAAE,CAAC,CAAC;YAC1F,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AA9CY,gBAAgB;IAD5B,UAAU,EAAE;qCAIoB,UAAU;QACX,SAAS;GAJ5B,gBAAgB,CA8C5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-internal.guard.d.ts","sourceRoot":"","sources":["../../src/guards/grpc-internal.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"grpc-internal.guard.d.ts","sourceRoot":"","sources":["../../src/guards/grpc-internal.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOxD,qBACa,iBAAkB,YAAW,WAAW;IAEvC,OAAO,CAAC,QAAQ,CAAC,UAAU;IADvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgE;gBAC1D,UAAU,EAAE,UAAU;IAE7C,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAsB/D"}
|
|
@@ -28,7 +28,8 @@ let GrpcInternalGuard = class GrpcInternalGuard {
|
|
|
28
28
|
}
|
|
29
29
|
try {
|
|
30
30
|
const user = await this.jwtService.verifyInternal(token);
|
|
31
|
-
|
|
31
|
+
const ctx = rpcContext;
|
|
32
|
+
ctx['user'] = user;
|
|
32
33
|
this.logger.debug(`Internal gRPC request authorized for user ${user.id}`);
|
|
33
34
|
return true;
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-internal.guard.js","sourceRoot":"","sources":["../../src/guards/grpc-internal.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"grpc-internal.guard.js","sourceRoot":"","sources":["../../src/guards/grpc-internal.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE3F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAEC;IADZ,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvF,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAY,CAAC;QAChE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACjE,MAAM,sBAAsB,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAa,KAAK,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,UAA+C,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,sBAAsB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;CACF,CAAA;AA1BY,iBAAiB;IAD7B,UAAU,EAAE;qCAG8B,UAAU;GAFxC,iBAAiB,CA0B7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/refresh-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/refresh-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,qBACa,iBAAkB,YAAW,WAAW;IAEvC,OAAO,CAAC,QAAQ,CAAC,UAAU;IADvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgE;gBAC1D,UAAU,EAAE,UAAU;IAE7C,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAmB/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-token.guard.js","sourceRoot":"","sources":["../../src/guards/refresh-token.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-token.guard.js","sourceRoot":"","sources":["../../src/guards/refresh-token.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAEC;IADZ,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvF,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAA2B,CAAC;QAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAEtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAC1D,MAAM,qBAAqB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAa,KAAK,CAAC,CAAC;YACzE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,qBAAqB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF,CAAA;AAvBY,iBAAiB;IAD7B,UAAU,EAAE;qCAG8B,UAAU;GAFxC,iBAAiB,CAuB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.guard.d.ts","sourceRoot":"","sources":["../../src/guards/roles.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,qBACa,UAAW,YAAW,WAAW;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IADtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyD;gBACnD,SAAS,EAAE,SAAS;IAEjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"roles.guard.d.ts","sourceRoot":"","sources":["../../src/guards/roles.guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,qBACa,UAAW,YAAW,WAAW;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IADtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyD;gBACnD,SAAS,EAAE,SAAS;IAEjD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAsChD"}
|
|
@@ -26,9 +26,17 @@ let RolesGuard = class RolesGuard {
|
|
|
26
26
|
if (requiredRoles.length === 0) {
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
let user;
|
|
30
|
+
if (context.getType() === 'rpc') {
|
|
31
|
+
const rpcContext = context.switchToRpc().getContext();
|
|
32
|
+
user = rpcContext['user'];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const request = context.switchToHttp().getRequest();
|
|
36
|
+
user = request['user'];
|
|
37
|
+
}
|
|
30
38
|
if (!user) {
|
|
31
|
-
this.logger.warn('User object missing from request in RolesGuard');
|
|
39
|
+
this.logger.warn('User object missing from request/context in RolesGuard');
|
|
32
40
|
throw MISSING_AUTHENTICATED_USER();
|
|
33
41
|
}
|
|
34
42
|
if (!requiredRoles.includes(user.role)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../src/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../src/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,UAAU,GAAhB,MAAM,UAAU;IAEQ;IADZ,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,WAAW,CAAC,OAAyB;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,SAAS,EAAE;YAC1E,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAA4B,CAAC;QAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAA2B,CAAC;YAC/E,IAAI,GAAG,UAAU,CAAC,MAAM,CAA2B,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAA2B,CAAC;YAC7E,IAAI,GAAG,OAAO,CAAC,MAAM,CAA2B,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAC3E,MAAM,0BAA0B,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,IAAI,CAAC,EAAE,cAAc,IAAI,CAAC,IAAI,kCAAkC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAC;YACF,MAAM,wBAAwB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,QAAQ,IAAI,CAAC,EAAE,SAAS,IAAI,CAAC,IAAI,0BAA0B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1CY,UAAU;IADtB,UAAU,EAAE;qCAG6B,SAAS;GAFtC,UAAU,CA0CtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-internal.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/grpc-internal.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAKzE,qBACa,uBAAwB,YAAW,eAAe;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAD3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsE;gBAChE,cAAc,EAAE,kBAAkB;IAE/D,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"grpc-internal.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/grpc-internal.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAKzE,qBACa,uBAAwB,YAAW,eAAe;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAD3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsE;gBAChE,cAAc,EAAE,kBAAkB;IAE/D,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAyB7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-internal.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/grpc-internal.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGvC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAEL;IADZ,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7F,YAA6B,cAAkC;QAAlC,mBAAc,GAAd,cAAc,CAAoB;IAAG,CAAC;IAEnE,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAuB,CAAC;QAC7E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAChE,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAW,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"grpc-internal.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/grpc-internal.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGvC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAEL;IADZ,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7F,YAA6B,cAAkC;QAAlC,mBAAc,GAAd,cAAc,CAAoB;IAAG,CAAC;IAEnE,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAuB,CAAC;QAC7E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAChE,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAW,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAGpF,MAAM,GAAG,GAAG,WAGX,CAAC;YACF,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;YAC7B,GAAG,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;YAEnC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AA7BY,uBAAuB;IADnC,UAAU,EAAE;qCAGkC,kBAAkB;GAFpD,uBAAuB,CA6BnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-user.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-user.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-user.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-user.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACjF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
3
|
export declare class AccessTokenMiddleware implements NestMiddleware {
|
|
3
4
|
private readonly logger;
|
|
4
|
-
use: (req:
|
|
5
|
+
use: (req: Request, _res: Response, next: NextFunction) => void;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=access-token.middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-token.middleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/access-token.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-token.middleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/access-token.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,qBACa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoE;IAC3F,GAAG,QAAS,OAAO,QAAQ,QAAQ,QAAQ,YAAY,KAAG,IAAI,CAyB5D;CACH"}
|
|
@@ -10,17 +10,16 @@ let AccessTokenMiddleware = class AccessTokenMiddleware {
|
|
|
10
10
|
logger = new Logger({ context: 'AccessTokenMiddleware', format: 'json' });
|
|
11
11
|
use = (req, _res, next) => {
|
|
12
12
|
const request = req;
|
|
13
|
-
const
|
|
14
|
-
const headers = (request['headers'] ?? {});
|
|
13
|
+
const headers = request.headers;
|
|
15
14
|
const authHeader = headers['authorization'];
|
|
16
15
|
let token;
|
|
17
16
|
if (typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
|
|
18
17
|
token = authHeader.split(' ')[1];
|
|
19
18
|
}
|
|
20
|
-
else if (request
|
|
21
|
-
typeof request
|
|
22
|
-
request
|
|
23
|
-
const cookies = request
|
|
19
|
+
else if (request.cookies !== undefined &&
|
|
20
|
+
typeof request.cookies === 'object' &&
|
|
21
|
+
request.cookies !== null) {
|
|
22
|
+
const cookies = request.cookies;
|
|
24
23
|
token = cookies['accessToken'] ?? cookies['access_token'];
|
|
25
24
|
}
|
|
26
25
|
if (typeof token === 'string' && token !== '') {
|
|
@@ -30,7 +29,7 @@ let AccessTokenMiddleware = class AccessTokenMiddleware {
|
|
|
30
29
|
else {
|
|
31
30
|
this.logger.debug('No access token found in headers or cookies');
|
|
32
31
|
}
|
|
33
|
-
|
|
32
|
+
next();
|
|
34
33
|
};
|
|
35
34
|
};
|
|
36
35
|
AccessTokenMiddleware = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-token.middleware.js","sourceRoot":"","sources":["../../src/middlewares/access-token.middleware.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-token.middleware.js","sourceRoot":"","sources":["../../src/middlewares/access-token.middleware.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACf,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3F,GAAG,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAQ,EAAE;QAE/D,MAAM,OAAO,GAAG,GAAwC,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAwD,CAAC;QACjF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,KAAyB,CAAC;QAE9B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,IACL,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACnC,OAAO,CAAC,OAAO,KAAK,IAAI,EACxB,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAA6C,CAAC;YACtE,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;CACH,CAAA;AA5BY,qBAAqB;IADjC,UAAU,EAAE;GACA,qBAAqB,CA4BjC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
3
|
export declare class RefreshTokenMiddleware implements NestMiddleware {
|
|
3
4
|
private readonly logger;
|
|
4
|
-
use: (req:
|
|
5
|
+
use: (req: Request, _res: Response, next: NextFunction) => void;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=refresh-token.middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-token.middleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/refresh-token.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-token.middleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/refresh-token.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,qBACa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqE;IAC5F,GAAG,QAAS,OAAO,QAAQ,QAAQ,QAAQ,YAAY,KAAG,IAAI,CAwB5D;CACH"}
|
|
@@ -10,17 +10,16 @@ let RefreshTokenMiddleware = class RefreshTokenMiddleware {
|
|
|
10
10
|
logger = new Logger({ context: 'RefreshTokenMiddleware', format: 'json' });
|
|
11
11
|
use = (req, _res, next) => {
|
|
12
12
|
const request = req;
|
|
13
|
-
const
|
|
14
|
-
const headers = (request['headers'] ?? {});
|
|
13
|
+
const headers = request.headers;
|
|
15
14
|
const authHeader = headers['authorization'];
|
|
16
15
|
let token;
|
|
17
16
|
if (typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
|
|
18
17
|
token = authHeader.split(' ')[1];
|
|
19
18
|
}
|
|
20
|
-
else if (request
|
|
21
|
-
typeof request
|
|
22
|
-
request
|
|
23
|
-
const cookies = request
|
|
19
|
+
else if (request.cookies !== undefined &&
|
|
20
|
+
typeof request.cookies === 'object' &&
|
|
21
|
+
request.cookies !== null) {
|
|
22
|
+
const cookies = request.cookies;
|
|
24
23
|
token = cookies['refreshToken'] ?? cookies['refresh_token'];
|
|
25
24
|
}
|
|
26
25
|
if (typeof token === 'string' && token !== '') {
|
|
@@ -30,7 +29,7 @@ let RefreshTokenMiddleware = class RefreshTokenMiddleware {
|
|
|
30
29
|
else {
|
|
31
30
|
this.logger.warn('No refresh token found in headers or cookies');
|
|
32
31
|
}
|
|
33
|
-
|
|
32
|
+
next();
|
|
34
33
|
};
|
|
35
34
|
};
|
|
36
35
|
RefreshTokenMiddleware = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-token.middleware.js","sourceRoot":"","sources":["../../src/middlewares/refresh-token.middleware.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-token.middleware.js","sourceRoot":"","sources":["../../src/middlewares/refresh-token.middleware.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIvC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAChB,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,GAAG,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,OAAO,GAAG,GAAwC,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAwD,CAAC;QACjF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,KAAyB,CAAC;QAE9B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,IACL,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACnC,OAAO,CAAC,OAAO,KAAK,IAAI,EACxB,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAA6C,CAAC;YACtE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;CACH,CAAA;AA3BY,sBAAsB;IADlC,UAAU,EAAE;GACA,sBAAsB,CA2BlC"}
|
|
@@ -17,11 +17,11 @@ export declare class JwtService {
|
|
|
17
17
|
private getRefreshTokenPrivateKey;
|
|
18
18
|
private getRefreshTokenPublicKey;
|
|
19
19
|
signInternal(user: AuthUser): Promise<string>;
|
|
20
|
-
verifyInternal(token: string): Promise<
|
|
20
|
+
verifyInternal<T extends AuthUser = AuthUser>(token: string): Promise<T>;
|
|
21
21
|
signAccessToken(user: AuthUser): Promise<string>;
|
|
22
|
-
verifyAccessToken(token: string): Promise<
|
|
22
|
+
verifyAccessToken<T extends AuthUser = AuthUser>(token: string): Promise<T>;
|
|
23
23
|
signRefreshToken(user: AuthUser): Promise<string>;
|
|
24
|
-
verifyRefreshToken(token: string): Promise<
|
|
24
|
+
verifyRefreshToken<T extends AuthUser = AuthUser>(token: string): Promise<T>;
|
|
25
25
|
private sign;
|
|
26
26
|
private verify;
|
|
27
27
|
private isAuthUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.d.ts","sourceRoot":"","sources":["../../src/services/jwt.service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE,qBAAa,UAAU;IAST,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,kBAAkB,CAAC,CAAY;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAY;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAAY;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAY;IACzC,OAAO,CAAC,sBAAsB,CAAC,CAAY;IAC3C,OAAO,CAAC,qBAAqB,CAAC,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyD;gBAEnD,OAAO,EAAE,UAAU;IAEhD,OAAO,CAAC,kBAAkB;YAMZ,qBAAqB;YAcrB,oBAAoB;YAcpB,wBAAwB;YAcxB,uBAAuB;YAcvB,yBAAyB;YAczB,wBAAwB;IAchC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"jwt.service.d.ts","sourceRoot":"","sources":["../../src/services/jwt.service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE,qBAAa,UAAU;IAST,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,kBAAkB,CAAC,CAAY;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAY;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAAY;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAY;IACzC,OAAO,CAAC,sBAAsB,CAAC,CAAY;IAC3C,OAAO,CAAC,qBAAqB,CAAC,CAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyD;gBAEnD,OAAO,EAAE,UAAU;IAEhD,OAAO,CAAC,kBAAkB;YAMZ,qBAAqB;YAcrB,oBAAoB;YAcpB,wBAAwB;YAcxB,uBAAuB;YAcvB,yBAAyB;YAczB,wBAAwB;IAchC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAKxE,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD,iBAAiB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAK3E,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjD,kBAAkB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAKpE,IAAI;YASJ,MAAM;IAkBpB,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -23,7 +23,7 @@ export class JwtService {
|
|
|
23
23
|
async getInternalPrivateKey() {
|
|
24
24
|
if (this.internalPrivateKey)
|
|
25
25
|
return this.internalPrivateKey;
|
|
26
|
-
if (this.options.internalPrivateKeyPath
|
|
26
|
+
if (!this.options.internalPrivateKeyPath) {
|
|
27
27
|
throw CONFIG_ERROR('Internal private key path not configured');
|
|
28
28
|
}
|
|
29
29
|
try {
|
|
@@ -38,7 +38,7 @@ export class JwtService {
|
|
|
38
38
|
async getInternalPublicKey() {
|
|
39
39
|
if (this.internalPublicKey)
|
|
40
40
|
return this.internalPublicKey;
|
|
41
|
-
if (this.options.internalPublicKeyPath
|
|
41
|
+
if (!this.options.internalPublicKeyPath) {
|
|
42
42
|
throw CONFIG_ERROR('Internal public key path not configured');
|
|
43
43
|
}
|
|
44
44
|
try {
|
|
@@ -53,7 +53,7 @@ export class JwtService {
|
|
|
53
53
|
async getAccessTokenPrivateKey() {
|
|
54
54
|
if (this.accessTokenPrivateKey)
|
|
55
55
|
return this.accessTokenPrivateKey;
|
|
56
|
-
if (this.options.accessTokenPrivateKeyPath
|
|
56
|
+
if (!this.options.accessTokenPrivateKeyPath) {
|
|
57
57
|
throw CONFIG_ERROR('Access private key path not configured');
|
|
58
58
|
}
|
|
59
59
|
try {
|
|
@@ -68,7 +68,7 @@ export class JwtService {
|
|
|
68
68
|
async getAccessTokenPublicKey() {
|
|
69
69
|
if (this.accessTokenPublicKey)
|
|
70
70
|
return this.accessTokenPublicKey;
|
|
71
|
-
if (this.options.accessTokenPublicKeyPath
|
|
71
|
+
if (!this.options.accessTokenPublicKeyPath) {
|
|
72
72
|
throw CONFIG_ERROR('Access public key path not configured');
|
|
73
73
|
}
|
|
74
74
|
try {
|
|
@@ -83,7 +83,7 @@ export class JwtService {
|
|
|
83
83
|
async getRefreshTokenPrivateKey() {
|
|
84
84
|
if (this.refreshTokenPrivateKey)
|
|
85
85
|
return this.refreshTokenPrivateKey;
|
|
86
|
-
if (this.options.refreshTokenPrivateKeyPath
|
|
86
|
+
if (!this.options.refreshTokenPrivateKeyPath) {
|
|
87
87
|
throw CONFIG_ERROR('Refresh private key path not configured');
|
|
88
88
|
}
|
|
89
89
|
try {
|
|
@@ -98,7 +98,7 @@ export class JwtService {
|
|
|
98
98
|
async getRefreshTokenPublicKey() {
|
|
99
99
|
if (this.refreshTokenPublicKey)
|
|
100
100
|
return this.refreshTokenPublicKey;
|
|
101
|
-
if (this.options.refreshTokenPublicKeyPath
|
|
101
|
+
if (!this.options.refreshTokenPublicKeyPath) {
|
|
102
102
|
throw CONFIG_ERROR('Refresh public key path not configured');
|
|
103
103
|
}
|
|
104
104
|
try {
|
|
@@ -161,8 +161,7 @@ export class JwtService {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
isAuthUser(payload) {
|
|
164
|
-
|
|
165
|
-
return typeof p['id'] === 'string' && typeof p['role'] === 'string';
|
|
164
|
+
return typeof payload['id'] === 'string' && typeof payload['role'] === 'string';
|
|
166
165
|
}
|
|
167
166
|
}
|
|
168
167
|
//# sourceMappingURL=jwt.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../src/services/jwt.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,OAAO,UAAU;IASQ;IARrB,kBAAkB,CAAa;IAC/B,iBAAiB,CAAa;IAC9B,qBAAqB,CAAa;IAClC,oBAAoB,CAAa;IACjC,sBAAsB,CAAa;IACnC,qBAAqB,CAAa;IACzB,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhF,YAA6B,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE5C,kBAAkB,CAAC,SAAsC,EAAE,IAAY;QAC7E,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,YAAY,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../src/services/jwt.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-test.controller.d.ts","sourceRoot":"","sources":["../../../src/test/example/auth-test.controller.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-test.controller.d.ts","sourceRoot":"","sources":["../../../src/test/example/auth-test.controller.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,qBACa,kBAAkB;IAI7B,WAAW,CAAgB,IAAI,EAAE,QAAQ,EAAS,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;IAS9E,WAAW,CAAgB,IAAI,EAAE,QAAQ;;;IAOzC,QAAQ;;;IAMR,UAAU,CAAgB,IAAI,EAAE,QAAQ;;;CAGzC"}
|
|
@@ -12,6 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { Controller, Get, UseGuards, UseInterceptors, Req } from '@nestjs/common';
|
|
14
14
|
import { AccessTokenGuard, RefreshTokenGuard, GrpcInternalGuard, RolesGuard, Roles, GrpcInternalInterceptor, CurrentUser, } from '../../index.js';
|
|
15
|
+
import { UserRoles } from '@volontariapp/shared';
|
|
15
16
|
let AuthTestController = class AuthTestController {
|
|
16
17
|
getExternal(user, req) {
|
|
17
18
|
return {
|
|
@@ -50,7 +51,7 @@ __decorate([
|
|
|
50
51
|
__decorate([
|
|
51
52
|
Get('admin'),
|
|
52
53
|
UseGuards(AccessTokenGuard, RolesGuard),
|
|
53
|
-
Roles(
|
|
54
|
+
Roles(UserRoles.ADMIN),
|
|
54
55
|
__metadata("design:type", Function),
|
|
55
56
|
__metadata("design:paramtypes", []),
|
|
56
57
|
__metadata("design:returntype", void 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-test.controller.js","sourceRoot":"","sources":["../../../src/test/example/auth-test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,WAAW,GACZ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-test.controller.js","sourceRoot":"","sources":["../../../src/test/example/auth-test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,uBAAuB,EACvB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG1C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAI7B,WAAW,CAAgB,IAAc,EAAS,GAA4B;QAC5E,OAAO;YACL,IAAI;YACJ,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC;SACpC,CAAC;IACJ,CAAC;IAID,WAAW,CAAgB,IAAc;QACvC,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAKD,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAID,UAAU,CAAgB,IAAc;QACtC,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;CACF,CAAA;AAzBC;IAHC,GAAG,CAAC,UAAU,CAAC;IACf,SAAS,CAAC,gBAAgB,CAAC;IAC3B,eAAe,CAAC,uBAAuB,CAAC;IAC5B,WAAA,WAAW,EAAE,CAAA;IAAkB,WAAA,GAAG,EAAE,CAAA;;;;qDAKhD;AAID;IAFC,GAAG,CAAC,UAAU,CAAC;IACf,SAAS,CAAC,iBAAiB,CAAC;IAChB,WAAA,WAAW,EAAE,CAAA;;;;qDAEzB;AAKD;IAHC,GAAG,CAAC,OAAO,CAAC;IACZ,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC;IACvC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;;;;kDAGtB;AAID;IAFC,GAAG,CAAC,SAAS,CAAC;IACd,SAAS,CAAC,iBAAiB,CAAC;IACjB,WAAA,WAAW,EAAE,CAAA;;;;oDAExB;AA5BU,kBAAkB;IAD9B,UAAU,CAAC,MAAM,CAAC;GACN,kBAAkB,CA6B9B"}
|
|
@@ -5,9 +5,9 @@ import * as jose from 'jose';
|
|
|
5
5
|
import { Test } from '@nestjs/testing';
|
|
6
6
|
import request from 'supertest';
|
|
7
7
|
import { JwtService, AccessTokenMiddleware, AccessTokenGuard, RolesGuard, GrpcInternalInterceptor, GrpcInternalGuard, GrpcMetadataHelper, INTERNAL_TOKEN_METADATA_KEY, } from '../../index.js';
|
|
8
|
-
import { createAuthUser } from '../factories/auth-user.factory.js';
|
|
9
8
|
import { createMock } from '@golevelup/ts-jest';
|
|
10
9
|
import { AuthTestController } from '../example/auth-test.controller.js';
|
|
10
|
+
import { UserRoles } from '@volontariapp/shared';
|
|
11
11
|
describe('Full Auth Flow (Integration)', () => {
|
|
12
12
|
let app;
|
|
13
13
|
let jwtService;
|
|
@@ -46,17 +46,18 @@ describe('Full Auth Flow (Integration)', () => {
|
|
|
46
46
|
refreshTokenExpiresIn: '7d',
|
|
47
47
|
};
|
|
48
48
|
jest.spyOn(fs, 'readFileSync').mockImplementation((path) => {
|
|
49
|
-
|
|
49
|
+
const p = path;
|
|
50
|
+
if (p === 'access-public.pem')
|
|
50
51
|
return accessTokenPublic;
|
|
51
|
-
if (
|
|
52
|
+
if (p === 'access-private.pem')
|
|
52
53
|
return accessTokenPrivate;
|
|
53
|
-
if (
|
|
54
|
+
if (p === 'internal-public.pem')
|
|
54
55
|
return internalPublic;
|
|
55
|
-
if (
|
|
56
|
+
if (p === 'internal-private.pem')
|
|
56
57
|
return internalPrivate;
|
|
57
|
-
if (
|
|
58
|
+
if (p === 'refresh-public.pem')
|
|
58
59
|
return refreshTokenPublic;
|
|
59
|
-
if (
|
|
60
|
+
if (p === 'refresh-private.pem')
|
|
60
61
|
return refreshTokenPrivate;
|
|
61
62
|
return '';
|
|
62
63
|
});
|
|
@@ -87,7 +88,7 @@ describe('Full Auth Flow (Integration)', () => {
|
|
|
87
88
|
}
|
|
88
89
|
});
|
|
89
90
|
it('should complete the full auth lifecycle (HTTP AT -> Internal Token -> gRPC Verification)', async () => {
|
|
90
|
-
const user =
|
|
91
|
+
const user = { id: 'gateway-to-ms-user', role: UserRoles.VOLUNTEER };
|
|
91
92
|
const accessToken = await jwtService.signAccessToken(user);
|
|
92
93
|
const atGuard = app.get(AccessTokenGuard);
|
|
93
94
|
const atGuardSpy = jest.spyOn(atGuard, 'canActivate');
|
|
@@ -132,7 +133,7 @@ describe('Full Auth Flow (Integration)', () => {
|
|
|
132
133
|
expect(response.status).toBe(401);
|
|
133
134
|
});
|
|
134
135
|
it('should allow access if role is correct', async () => {
|
|
135
|
-
const user =
|
|
136
|
+
const user = { id: 'admin-user', role: UserRoles.ADMIN };
|
|
136
137
|
const accessToken = await jwtService.signAccessToken(user);
|
|
137
138
|
const response = await request(app.getHttpServer())
|
|
138
139
|
.get('/test/admin')
|
|
@@ -140,7 +141,7 @@ describe('Full Auth Flow (Integration)', () => {
|
|
|
140
141
|
expect(response.status).toBe(200);
|
|
141
142
|
});
|
|
142
143
|
it('should throw 403 if role is insufficient', async () => {
|
|
143
|
-
const user =
|
|
144
|
+
const user = { id: 'normal-user', role: UserRoles.VOLUNTEER };
|
|
144
145
|
const accessToken = await jwtService.signAccessToken(user);
|
|
145
146
|
const response = await request(app.getHttpServer())
|
|
146
147
|
.get('/test/admin')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full-auth-flow.int.spec.js","sourceRoot":"","sources":["../../../src/test/integration/full-auth-flow.int.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,OAAO,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"full-auth-flow.int.spec.js","sourceRoot":"","sources":["../../../src/test/integration/full-auth-flow.int.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAMlE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,GAAqB,CAAC;IAC1B,IAAI,UAAsB,CAAC;IAC3B,IAAI,iBAAyB,CAAC;IAC9B,IAAI,kBAA0B,CAAC;IAC/B,IAAI,cAAsB,CAAC;IAC3B,IAAI,eAAuB,CAAC;IAC5B,IAAI,mBAA2B,CAAC;IAChC,IAAI,kBAA0B,CAAC;IAE/B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,iBAAiB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChE,kBAAkB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/D,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClE,mBAAmB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG;YACb,wBAAwB,EAAE,mBAAmB;YAC7C,yBAAyB,EAAE,oBAAoB;YAC/C,qBAAqB,EAAE,qBAAqB;YAC5C,sBAAsB,EAAE,sBAAsB;YAC9C,yBAAyB,EAAE,oBAAoB;YAC/C,0BAA0B,EAAE,qBAAqB;YACjD,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,IAAI;YACvB,qBAAqB,EAAE,IAAI;SAC5B,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;YACzD,MAAM,CAAC,GAAG,IAAc,CAAC;YACzB,IAAI,CAAC,KAAK,mBAAmB;gBAAE,OAAO,iBAAiB,CAAC;YACxD,IAAI,CAAC,KAAK,oBAAoB;gBAAE,OAAO,kBAAkB,CAAC;YAC1D,IAAI,CAAC,KAAK,qBAAqB;gBAAE,OAAO,cAAc,CAAC;YACvD,IAAI,CAAC,KAAK,sBAAsB;gBAAE,OAAO,eAAe,CAAC;YACzD,IAAI,CAAC,KAAK,oBAAoB;gBAAE,OAAO,kBAAkB,CAAC;YAC1D,IAAI,CAAC,KAAK,qBAAqB;gBAAE,OAAO,mBAAmB,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC/C,WAAW,EAAE,CAAC,kBAAkB,CAAC;YACjC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;iBACjC;gBACD,gBAAgB;gBAChB,UAAU;gBACV,iBAAiB;gBACjB,kBAAkB;gBAClB,uBAAuB;aACxB;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,IAAI,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,IAAI,GAAe,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;QACjF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aACpD,GAAG,CAAC,gBAAgB,CAAC;aACrB,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAE7C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAuD,CAAC;QAClF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,gBAAgB,GAAG,UAAU,CAAW;YAC5C,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5F,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,UAAU,CAAmB;YAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;YACpB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClB,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB;gBAClC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACpB,CAAC;YACF,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACvB,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE1D,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAI,gBAA0D,CAAC,IAAI,CAAC;QACtF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC1E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAe,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAChD,GAAG,CAAC,aAAa,CAAC;aAClB,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAe,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAChD,GAAG,CAAC,aAAa,CAAC;aAClB,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, jest } from '@jest/globals';
|
|
2
2
|
import { AccessTokenMiddleware } from '../../middlewares/access-token.middleware.js';
|
|
3
3
|
import { Logger } from '@volontariapp/logger';
|
|
4
|
+
import { createMock } from '@golevelup/ts-jest';
|
|
4
5
|
describe('AccessTokenMiddleware (Unit)', () => {
|
|
5
6
|
let middleware;
|
|
6
7
|
beforeEach(() => {
|
|
@@ -10,55 +11,61 @@ describe('AccessTokenMiddleware (Unit)', () => {
|
|
|
10
11
|
jest.spyOn(Logger.prototype, 'warn').mockImplementation(() => { });
|
|
11
12
|
});
|
|
12
13
|
it('should extract token from Authorization header', () => {
|
|
13
|
-
const req = {
|
|
14
|
+
const req = createMock({
|
|
14
15
|
headers: {
|
|
15
16
|
authorization: 'Bearer my-token',
|
|
16
17
|
},
|
|
17
|
-
};
|
|
18
|
+
});
|
|
19
|
+
const res = createMock();
|
|
18
20
|
const next = jest.fn();
|
|
19
|
-
middleware.use(req,
|
|
20
|
-
expect(req).
|
|
21
|
+
middleware.use(req, res, next);
|
|
22
|
+
expect(req.accessToken).toBe('my-token');
|
|
21
23
|
expect(next).toHaveBeenCalled();
|
|
22
24
|
});
|
|
23
25
|
it('should extract token from cookies (accessToken)', () => {
|
|
24
|
-
const req = {
|
|
26
|
+
const req = createMock({
|
|
25
27
|
headers: {},
|
|
26
28
|
cookies: {
|
|
27
29
|
accessToken: 'cookie-token',
|
|
28
30
|
},
|
|
29
|
-
};
|
|
31
|
+
});
|
|
32
|
+
const res = createMock();
|
|
30
33
|
const next = jest.fn();
|
|
31
|
-
middleware.use(req,
|
|
32
|
-
expect(req).
|
|
34
|
+
middleware.use(req, res, next);
|
|
35
|
+
expect(req.accessToken).toBe('cookie-token');
|
|
33
36
|
expect(next).toHaveBeenCalled();
|
|
34
37
|
});
|
|
35
38
|
it('should extract token from cookies (access_token)', () => {
|
|
36
|
-
const req = {
|
|
39
|
+
const req = createMock({
|
|
37
40
|
headers: {},
|
|
38
41
|
cookies: {
|
|
39
42
|
access_token: 'cookie-token-2',
|
|
40
43
|
},
|
|
41
|
-
};
|
|
44
|
+
});
|
|
45
|
+
const res = createMock();
|
|
42
46
|
const next = jest.fn();
|
|
43
|
-
middleware.use(req,
|
|
44
|
-
expect(req).
|
|
47
|
+
middleware.use(req, res, next);
|
|
48
|
+
expect(req.accessToken).toBe('cookie-token-2');
|
|
45
49
|
expect(next).toHaveBeenCalled();
|
|
46
50
|
});
|
|
47
51
|
it('should log debug and call next if no token is found', () => {
|
|
48
|
-
const req = {
|
|
52
|
+
const req = createMock({
|
|
49
53
|
headers: {},
|
|
50
|
-
|
|
54
|
+
cookies: {},
|
|
55
|
+
});
|
|
56
|
+
const res = createMock();
|
|
51
57
|
const next = jest.fn();
|
|
52
58
|
const debugSpy = jest.spyOn(Logger.prototype, 'debug');
|
|
53
|
-
middleware.use(req,
|
|
54
|
-
expect(req).not.
|
|
59
|
+
middleware.use(req, res, next);
|
|
60
|
+
expect(typeof req.accessToken).not.toBe('string');
|
|
55
61
|
expect(next).toHaveBeenCalled();
|
|
56
62
|
expect(debugSpy).toHaveBeenCalledWith('No access token found in headers or cookies');
|
|
57
63
|
});
|
|
58
64
|
it('should handle missing headers or cookies gracefully', () => {
|
|
59
|
-
const req =
|
|
65
|
+
const req = createMock();
|
|
66
|
+
const res = createMock();
|
|
60
67
|
const next = jest.fn();
|
|
61
|
-
middleware.use(req,
|
|
68
|
+
middleware.use(req, res, next);
|
|
62
69
|
expect(next).toHaveBeenCalled();
|
|
63
70
|
});
|
|
64
71
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-token.middleware.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/access-token.middleware.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-token.middleware.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/access-token.middleware.unit.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,19 +41,20 @@ describe('JwtService (Unit)', () => {
|
|
|
41
41
|
jest.spyOn(jwtService['logger'], 'warn').mockImplementation(() => undefined);
|
|
42
42
|
const readSpy = jest.spyOn(fs, 'readFileSync');
|
|
43
43
|
readSpy.mockImplementation((path) => {
|
|
44
|
-
|
|
44
|
+
const p = path;
|
|
45
|
+
if (p === 'internal-private-path')
|
|
45
46
|
return internalPrivate;
|
|
46
|
-
if (
|
|
47
|
+
if (p === 'internal-public-path')
|
|
47
48
|
return internalPublic;
|
|
48
|
-
if (
|
|
49
|
+
if (p === 'access-private-path')
|
|
49
50
|
return accessTokenPrivate;
|
|
50
|
-
if (
|
|
51
|
+
if (p === 'access-public-path')
|
|
51
52
|
return accessTokenPublic;
|
|
52
|
-
if (
|
|
53
|
+
if (p === 'refresh-private-path')
|
|
53
54
|
return refreshTokenPrivate;
|
|
54
|
-
if (
|
|
55
|
+
if (p === 'refresh-public-path')
|
|
55
56
|
return refreshTokenPublic;
|
|
56
|
-
throw new Error(`Unexpected path: ${
|
|
57
|
+
throw new Error(`Unexpected path: ${p}`);
|
|
57
58
|
});
|
|
58
59
|
});
|
|
59
60
|
describe('signInternal', () => {
|
|
@@ -65,7 +66,7 @@ describe('JwtService (Unit)', () => {
|
|
|
65
66
|
});
|
|
66
67
|
});
|
|
67
68
|
describe('verifyInternal', () => {
|
|
68
|
-
it('should verify a valid internal token', async () => {
|
|
69
|
+
it('should verify a valid internal token as JwtPayload', async () => {
|
|
69
70
|
const user = createAuthUser();
|
|
70
71
|
const token = await jwtService.signInternal(user);
|
|
71
72
|
const payload = await jwtService.verifyInternal(token);
|
|
@@ -78,23 +79,23 @@ describe('JwtService (Unit)', () => {
|
|
|
78
79
|
});
|
|
79
80
|
describe('Delayed Configuration Errors', () => {
|
|
80
81
|
it('should not throw on construction if expiration is missing', () => {
|
|
81
|
-
expect(() => new JwtService({ ...config, internalExpiresIn:
|
|
82
|
+
expect(() => new JwtService({ ...config, internalExpiresIn: '' })).not.toThrow();
|
|
82
83
|
});
|
|
83
84
|
it('should throw when signing if internal expiration is missing', async () => {
|
|
84
|
-
const svc = new JwtService({ ...config, internalExpiresIn:
|
|
85
|
+
const svc = new JwtService({ ...config, internalExpiresIn: '' });
|
|
85
86
|
await expect(svc.signInternal(createAuthUser())).rejects.toThrow('Internal expiration time not configured');
|
|
86
87
|
});
|
|
87
88
|
it('should throw when signing if access token expiration is missing', async () => {
|
|
88
89
|
const svc = new JwtService({
|
|
89
90
|
...config,
|
|
90
|
-
accessTokenExpiresIn:
|
|
91
|
+
accessTokenExpiresIn: '',
|
|
91
92
|
});
|
|
92
93
|
await expect(svc.signAccessToken(createAuthUser())).rejects.toThrow('Access expiration time not configured');
|
|
93
94
|
});
|
|
94
95
|
it('should throw when signing if refresh token expiration is missing', async () => {
|
|
95
96
|
const svc = new JwtService({
|
|
96
97
|
...config,
|
|
97
|
-
refreshTokenExpiresIn:
|
|
98
|
+
refreshTokenExpiresIn: '',
|
|
98
99
|
});
|
|
99
100
|
await expect(svc.signRefreshToken(createAuthUser())).rejects.toThrow('Refresh expiration time not configured');
|
|
100
101
|
});
|
|
@@ -103,28 +104,28 @@ describe('JwtService (Unit)', () => {
|
|
|
103
104
|
it('should throw if internal private key path is missing when signing', async () => {
|
|
104
105
|
const svc = new JwtService({
|
|
105
106
|
...config,
|
|
106
|
-
internalPrivateKeyPath:
|
|
107
|
+
internalPrivateKeyPath: '',
|
|
107
108
|
});
|
|
108
109
|
await expect(svc.signInternal(createAuthUser())).rejects.toThrow('Internal private key path not configured');
|
|
109
110
|
});
|
|
110
111
|
it('should throw if internal public key path is missing when verifying', async () => {
|
|
111
112
|
const svc = new JwtService({
|
|
112
113
|
...config,
|
|
113
|
-
internalPublicKeyPath:
|
|
114
|
+
internalPublicKeyPath: '',
|
|
114
115
|
});
|
|
115
116
|
await expect(svc.verifyInternal('token')).rejects.toThrow('Internal public key path not configured');
|
|
116
117
|
});
|
|
117
118
|
it('should throw if access public key path is missing when verifying', async () => {
|
|
118
119
|
const svc = new JwtService({
|
|
119
120
|
...config,
|
|
120
|
-
accessTokenPublicKeyPath:
|
|
121
|
+
accessTokenPublicKeyPath: '',
|
|
121
122
|
});
|
|
122
123
|
await expect(svc.verifyAccessToken('token')).rejects.toThrow('Access public key path not configured');
|
|
123
124
|
});
|
|
124
125
|
it('should throw if refresh public key path is missing when verifying', async () => {
|
|
125
126
|
const svc = new JwtService({
|
|
126
127
|
...config,
|
|
127
|
-
refreshTokenPublicKeyPath:
|
|
128
|
+
refreshTokenPublicKeyPath: '',
|
|
128
129
|
});
|
|
129
130
|
await expect(svc.verifyRefreshToken('token')).rejects.toThrow('Refresh public key path not configured');
|
|
130
131
|
});
|
|
@@ -139,17 +140,19 @@ describe('JwtService (Unit)', () => {
|
|
|
139
140
|
});
|
|
140
141
|
});
|
|
141
142
|
describe('AccessToken / RefreshToken', () => {
|
|
142
|
-
it('should verify a valid access token', async () => {
|
|
143
|
+
it('should verify a valid access token as JwtPayload', async () => {
|
|
143
144
|
const user = createAuthUser();
|
|
144
145
|
const token = await jwtService.signAccessToken(user);
|
|
145
146
|
const payload = await jwtService.verifyAccessToken(token);
|
|
146
147
|
expect(payload.id).toBe(user.id);
|
|
148
|
+
expect(payload.role).toBe(user.role);
|
|
147
149
|
});
|
|
148
|
-
it('should verify a valid refresh token', async () => {
|
|
150
|
+
it('should verify a valid refresh token as JwtPayload', async () => {
|
|
149
151
|
const user = createAuthUser();
|
|
150
152
|
const token = await jwtService.signRefreshToken(user);
|
|
151
153
|
const payload = await jwtService.verifyRefreshToken(token);
|
|
152
154
|
expect(payload.id).toBe(user.id);
|
|
155
|
+
expect(payload.role).toBe(user.role);
|
|
153
156
|
});
|
|
154
157
|
it('should throw on invalid token payload', async () => {
|
|
155
158
|
const key = await jose.generateKeyPair('RS256', { extractable: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/jwt.service.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"jwt.service.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/jwt.service.unit.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, jest } from '@jest/globals';
|
|
2
2
|
import { RefreshTokenMiddleware } from '../../middlewares/refresh-token.middleware.js';
|
|
3
3
|
import { Logger } from '@volontariapp/logger';
|
|
4
|
+
import { createMock } from '@golevelup/ts-jest';
|
|
4
5
|
describe('RefreshTokenMiddleware (Unit)', () => {
|
|
5
6
|
let middleware;
|
|
6
7
|
beforeEach(() => {
|
|
@@ -10,34 +11,40 @@ describe('RefreshTokenMiddleware (Unit)', () => {
|
|
|
10
11
|
jest.spyOn(Logger.prototype, 'warn').mockImplementation(() => { });
|
|
11
12
|
});
|
|
12
13
|
it('should extract token from Authorization header', () => {
|
|
13
|
-
const req = {
|
|
14
|
+
const req = createMock({
|
|
14
15
|
headers: {
|
|
15
16
|
authorization: 'Bearer refresh-token-123',
|
|
16
17
|
},
|
|
17
|
-
};
|
|
18
|
+
});
|
|
19
|
+
const res = createMock();
|
|
18
20
|
const next = jest.fn();
|
|
19
|
-
middleware.use(req,
|
|
20
|
-
expect(req).
|
|
21
|
+
middleware.use(req, res, next);
|
|
22
|
+
expect(req.refreshToken).toBe('refresh-token-123');
|
|
21
23
|
expect(next).toHaveBeenCalled();
|
|
22
24
|
});
|
|
23
25
|
it('should extract token from cookies', () => {
|
|
24
|
-
const req = {
|
|
26
|
+
const req = createMock({
|
|
25
27
|
headers: {},
|
|
26
28
|
cookies: {
|
|
27
29
|
refreshToken: 'cookie-refresh-token',
|
|
28
30
|
},
|
|
29
|
-
};
|
|
31
|
+
});
|
|
32
|
+
const res = createMock();
|
|
30
33
|
const next = jest.fn();
|
|
31
|
-
middleware.use(req,
|
|
32
|
-
expect(req).
|
|
34
|
+
middleware.use(req, res, next);
|
|
35
|
+
expect(req.refreshToken).toBe('cookie-refresh-token');
|
|
33
36
|
expect(next).toHaveBeenCalled();
|
|
34
37
|
});
|
|
35
38
|
it('should log warning if no refresh token is found', () => {
|
|
36
|
-
const req = {
|
|
39
|
+
const req = createMock({
|
|
40
|
+
headers: {},
|
|
41
|
+
cookies: {},
|
|
42
|
+
});
|
|
43
|
+
const res = createMock();
|
|
37
44
|
const next = jest.fn();
|
|
38
45
|
const warnSpy = jest.spyOn(Logger.prototype, 'warn');
|
|
39
|
-
middleware.use(req,
|
|
40
|
-
expect(req).not.
|
|
46
|
+
middleware.use(req, res, next);
|
|
47
|
+
expect(typeof req.refreshToken).not.toBe('string');
|
|
41
48
|
expect(warnSpy).toHaveBeenCalledWith('No refresh token found in headers or cookies');
|
|
42
49
|
});
|
|
43
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-token.middleware.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/refresh-token.middleware.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-token.middleware.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/refresh-token.middleware.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAI,UAAkC,CAAC;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,UAAU,CAAU;YAC9B,OAAO,EAAE;gBACP,aAAa,EAAE,0BAA0B;aAC1C;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAY,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAA4B,CAAC;QAEjD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAE/B,MAAM,CAAE,GAA4B,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAU;YAC9B,OAAO,EAAE,EAAE;YACX,OAAO,EAAE;gBACP,YAAY,EAAE,sBAAsB;aACrC;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAY,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAA4B,CAAC;QAEjD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAE/B,MAAM,CAAE,GAA4B,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,UAAU,CAAU;YAC9B,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAY,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAA4B,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAErD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAG/B,MAAM,CAAC,OAAQ,GAA4B,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,8CAA8C,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { ForbiddenError } from '@volontariapp/errors';
|
|
|
3
3
|
import { RolesGuard } from '../../guards/roles.guard.js';
|
|
4
4
|
import { createAuthUser } from '../factories/auth-user.factory.js';
|
|
5
5
|
import { createMock } from '@golevelup/ts-jest';
|
|
6
|
+
import { UserRoles } from '@volontariapp/shared';
|
|
6
7
|
describe('RolesGuard (Unit)', () => {
|
|
7
8
|
let guard;
|
|
8
9
|
let reflector;
|
|
@@ -20,8 +21,8 @@ describe('RolesGuard (Unit)', () => {
|
|
|
20
21
|
expect(guard.canActivate(context)).toBe(true);
|
|
21
22
|
});
|
|
22
23
|
it('should allow access if user has the required role', () => {
|
|
23
|
-
const user = createAuthUser({ role:
|
|
24
|
-
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([
|
|
24
|
+
const user = createAuthUser({ role: UserRoles.ADMIN });
|
|
25
|
+
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([UserRoles.ADMIN]);
|
|
25
26
|
const context = createMock({
|
|
26
27
|
switchToHttp: () => ({
|
|
27
28
|
getRequest: () => ({ user }),
|
|
@@ -30,8 +31,8 @@ describe('RolesGuard (Unit)', () => {
|
|
|
30
31
|
expect(guard.canActivate(context)).toBe(true);
|
|
31
32
|
});
|
|
32
33
|
it('should throw 403 if user has insufficient role', () => {
|
|
33
|
-
const user = createAuthUser({ role:
|
|
34
|
-
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([
|
|
34
|
+
const user = createAuthUser({ role: UserRoles.VOLUNTEER });
|
|
35
|
+
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([UserRoles.ADMIN]);
|
|
35
36
|
const context = createMock({
|
|
36
37
|
switchToHttp: () => ({
|
|
37
38
|
getRequest: () => ({ user }),
|
|
@@ -40,7 +41,7 @@ describe('RolesGuard (Unit)', () => {
|
|
|
40
41
|
expect(() => guard.canActivate(context)).toThrow(ForbiddenError);
|
|
41
42
|
});
|
|
42
43
|
it('should throw 403 if user is missing', () => {
|
|
43
|
-
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([
|
|
44
|
+
jest.spyOn(reflector, 'getAllAndOverride').mockReturnValue([UserRoles.ADMIN]);
|
|
44
45
|
const context = createMock({
|
|
45
46
|
switchToHttp: () => ({
|
|
46
47
|
getRequest: () => ({ user: undefined }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.guard.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/roles.guard.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"roles.guard.unit.spec.js","sourceRoot":"","sources":["../../../src/test/unit/roles.guard.unit.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volontariapp/auth",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0-snap-8ad3602",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"@volontariapp/errors": "0.5.0",
|
|
39
39
|
"@volontariapp/errors-nest": "0.10.2",
|
|
40
40
|
"@volontariapp/logger": "0.2.3",
|
|
41
|
+
"@volontariapp/shared": "0.3.0-snap-8ad3602",
|
|
41
42
|
"jose": "^6.2.2",
|
|
42
43
|
"reflect-metadata": "^0.2.2",
|
|
43
44
|
"rxjs": "^7.8.1"
|