@point3/logto-module 1.0.12 → 1.0.13
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/README.md +59 -16
- package/dist/module.js +54 -32
- package/dist/module.js.map +1 -1
- package/dist/stateless/guard.d.ts +3 -2
- package/dist/stateless/guard.js +6 -38
- package/dist/stateless/guard.js.map +1 -1
- package/dist/token/verifier.js +0 -1
- package/dist/token/verifier.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/module.ts +120 -63
- package/package.json +3 -2
- package/stateless/guard.ts +5 -5
- package/token/verifier.ts +1 -2
package/README.md
CHANGED
|
@@ -10,8 +10,25 @@ NestJS 기반 Logto 인증/권한 통합 모듈
|
|
|
10
10
|
`@point3-logto-module`은 [Logto](https://logto.io/) 인증 시스템을 NestJS 환경에서 손쉽게 통합할 수 있도록 설계된 모듈 번들입니다.
|
|
11
11
|
OAuth, M2M(Machine-to-Machine), 사용자/역할 관리, 토큰 검증, 인증 가드 등 인증/권한 관련 기능을 일관된 DI 패턴으로 제공합니다.
|
|
12
12
|
|
|
13
|
+
### 동작 모드
|
|
14
|
+
|
|
15
|
+
`LOGTO_CLIENT` 환경변수 값에 따라 두 가지 모드로 동작합니다:
|
|
16
|
+
|
|
17
|
+
- **Stateless 모드 (`LOGTO_CLIENT=false` 또는 미설정)**:
|
|
18
|
+
- API 서버와 같이 토큰 검증만 필요한 경우 사용
|
|
19
|
+
- `@LogtoProtected()` 가드와 `LogtoTokenVerifier`만 활성화
|
|
20
|
+
- 필수 환경변수: `LOGTO_JWKS_URI`, `LOGTO_AUTH_ISSUER`만 필요
|
|
21
|
+
|
|
22
|
+
- **Stateful 모드 (`LOGTO_CLIENT=true`)**:
|
|
23
|
+
- 로그인/로그아웃 처리가 필요한 웹 애플리케이션이나 M2M 통신이 필요한 경우 사용
|
|
24
|
+
- `OAuthClient`, `LogtoM2MClient` 등 모든 클라이언트 기능 활성화
|
|
25
|
+
- 추가 환경변수 필요 (OAuth, M2M 관련)
|
|
26
|
+
|
|
27
|
+
### 주요 특징
|
|
28
|
+
|
|
13
29
|
- **유연한 로깅 연동**: 외부 로거 모듈/토큰을 DI로 주입받아, 다양한 로깅 시스템과 쉽게 통합
|
|
14
30
|
- **NestJS Dynamic Module 패턴**: 환경/구성에 따라 동적으로 모듈 생성
|
|
31
|
+
- **Global 모듈 지원**: 애플리케이션 전체에서 사용할 수 있는 글로벌 모듈로 설정 가능
|
|
15
32
|
- **실제 서비스에서 검증된 인증/권한 관리 기능**: OAuth, M2M, 사용자/역할 관리, 토큰 검증, 인증 가드 등
|
|
16
33
|
|
|
17
34
|
---
|
|
@@ -21,7 +38,8 @@ OAuth, M2M(Machine-to-Machine), 사용자/역할 관리, 토큰 검증, 인증
|
|
|
21
38
|
### 1. LogtoModule (Dynamic Module)
|
|
22
39
|
|
|
23
40
|
- 외부에서 로거 모듈과 토큰을 주입받아, Logto 인증/권한 기능을 번들로 제공
|
|
24
|
-
- `logto.module.LogtoModule.forLogger(loggerModule, loggerToken)` 패턴으로 사용
|
|
41
|
+
- `logto.module.LogtoModule.forLogger(loggerModule, loggerToken, global?)` 패턴으로 사용
|
|
42
|
+
- global 파라미터를 true로 설정하면 애플리케이션 전체에서 사용 가능한 글로벌 모듈로 등록
|
|
25
43
|
|
|
26
44
|
### 2. 핵심 서비스/토큰
|
|
27
45
|
|
|
@@ -76,12 +94,17 @@ export class MyLoggerModule {}
|
|
|
76
94
|
|
|
77
95
|
```ts
|
|
78
96
|
import { Module } from '@nestjs/common';
|
|
97
|
+
import { ConfigModule } from '@nestjs/config';
|
|
79
98
|
import * as logto from '@point3/logto-module';
|
|
80
99
|
import { MyLoggerModule, MY_LOGGER_TOKEN } from './my-logger.module';
|
|
81
100
|
|
|
82
101
|
@Module({
|
|
83
102
|
imports: [
|
|
84
|
-
|
|
103
|
+
// 환경변수를 먼저 로드
|
|
104
|
+
ConfigModule.forRoot({ isGlobal: true }),
|
|
105
|
+
|
|
106
|
+
// LogtoModule을 글로벌 모듈로 설정 (세 번째 파라미터를 true로 설정)
|
|
107
|
+
logto.module.LogtoModule.forLogger(MyLoggerModule, MY_LOGGER_TOKEN, true),
|
|
85
108
|
],
|
|
86
109
|
})
|
|
87
110
|
export class AppModule {}
|
|
@@ -334,25 +357,35 @@ const config: LogtoConfig = {
|
|
|
334
357
|
|
|
335
358
|
## 🗂️ 환경변수 목록 및 설명
|
|
336
359
|
|
|
360
|
+
### 필수 환경변수 (Stateless/Stateful 모드 공통)
|
|
361
|
+
|
|
337
362
|
| 환경변수명 | 설명 | 예시 값 |
|
|
338
363
|
|-----------------------------------|---------------------------------------------------|------------------------------------------|
|
|
339
|
-
| LOGTO_AUTH_ENDPOINT | Logto 인증 서버 OIDC 엔드포인트 | https://auth.example.com/oidc |
|
|
340
|
-
| LOGTO_CLIENT_ID | OAuth 클라이언트 ID | my-client-id |
|
|
341
|
-
| LOGTO_CLIENT_SECRET | OAuth 클라이언트 시크릿 | my-client-secret |
|
|
342
|
-
| LOGTO_RESOURCES | 접근할 리소스 서버(여러 개일 경우 쉼표로 구분) | https://api.example.com |
|
|
343
|
-
| LOGTO_SCOPES | 요청할 OAuth 스코프(쉼표로 구분) | openid,profile,email |
|
|
344
|
-
| LOGTO_PROMPT | OAuth prompt 파라미터 | login |
|
|
345
|
-
| LOGTO_REDIRECT_URI | 인증 후 리다이렉트될 URI | https://myapp.com/callback |
|
|
346
|
-
| LOGTO_SIGN_IN_URI | 기본 로그인 URI | https://auth.example.com |
|
|
347
|
-
| LOGTO_DASHBOARD_SIGN_IN_URI | 대시보드 로그인 URI(선택) | https://dashboard.example.com |
|
|
348
|
-
| LOGTO_M2M_CLIENT_ID | M2M 인증용 클라이언트 ID | my-m2m-client-id |
|
|
349
|
-
| LOGTO_M2M_CLIENT_SECRET | M2M 인증용 클라이언트 시크릿 | my-m2m-client-secret |
|
|
350
|
-
| LOGTO_M2M_RESOURCE | M2M 인증용 리소스 | https://api.example.com |
|
|
351
|
-
| LOGTO_M2M_API_URL | M2M API 서버의 base URL | https://api.example.com/api |
|
|
352
364
|
| LOGTO_JWKS_URI | JWT 검증용 JWKS 엔드포인트 | https://auth.example.com/oidc/jwks |
|
|
353
365
|
| LOGTO_AUTH_ISSUER | JWT 발급자(iss) | https://auth.example.com/oidc |
|
|
354
366
|
|
|
355
|
-
|
|
367
|
+
### 선택적 환경변수
|
|
368
|
+
|
|
369
|
+
| 환경변수명 | 설명 | 예시 값 | 필요 조건 |
|
|
370
|
+
|-----------------------------------|---------------------------------------------------|------------------------------------------|-----------------------------------------|
|
|
371
|
+
| LOGTO_CLIENT | Stateful 모드 활성화 (클라이언트 기능 사용) | true | 클라이언트 기능 사용 시 |
|
|
372
|
+
| LOGTO_AUTH_ENDPOINT | Logto 인증 서버 OIDC 엔드포인트 | https://auth.example.com/oidc | LOGTO_CLIENT=true |
|
|
373
|
+
| LOGTO_CLIENT_ID | OAuth 클라이언트 ID | my-client-id | LOGTO_CLIENT=true |
|
|
374
|
+
| LOGTO_CLIENT_SECRET | OAuth 클라이언트 시크릿 | my-client-secret | LOGTO_CLIENT=true |
|
|
375
|
+
| LOGTO_RESOURCES | 접근할 리소스 서버(여러 개일 경우 쉼표로 구분) | https://api.example.com | LOGTO_CLIENT=true |
|
|
376
|
+
| LOGTO_SCOPES | 요청할 OAuth 스코프(쉼표로 구분) | openid,profile,email | LOGTO_CLIENT=true |
|
|
377
|
+
| LOGTO_PROMPT | OAuth prompt 파라미터 | login | LOGTO_CLIENT=true |
|
|
378
|
+
| LOGTO_REDIRECT_URI | 인증 후 리다이렉트될 URI | https://myapp.com/callback | LOGTO_CLIENT=true |
|
|
379
|
+
| LOGTO_SIGN_IN_URI | 기본 로그인 URI | https://auth.example.com | LOGTO_CLIENT=true |
|
|
380
|
+
| LOGTO_DASHBOARD_SIGN_IN_URI | 대시보드 로그인 URI(선택) | https://dashboard.example.com | LOGTO_CLIENT=true |
|
|
381
|
+
| LOGTO_M2M_CLIENT_ID | M2M 인증용 클라이언트 ID | my-m2m-client-id | LOGTO_CLIENT=true & M2M 기능 사용 시 |
|
|
382
|
+
| LOGTO_M2M_CLIENT_SECRET | M2M 인증용 클라이언트 시크릿 | my-m2m-client-secret | LOGTO_CLIENT=true & M2M 기능 사용 시 |
|
|
383
|
+
| LOGTO_M2M_RESOURCE | M2M 인증용 리소스 | https://api.example.com | LOGTO_CLIENT=true & M2M 기능 사용 시 |
|
|
384
|
+
| LOGTO_M2M_API_URL | M2M API 서버의 base URL | https://api.example.com/api | LOGTO_CLIENT=true & M2M 기능 사용 시 |
|
|
385
|
+
|
|
386
|
+
> ⚠️ **중요**:
|
|
387
|
+
> - Stateless 모드(기본값): `LOGTO_JWKS_URI`와 `LOGTO_AUTH_ISSUER`만 설정하면 토큰 검증 기능을 사용할 수 있습니다.
|
|
388
|
+
> - Stateful 모드: `LOGTO_CLIENT=true`로 설정하고 OAuth/M2M 관련 환경변수를 추가로 설정해야 합니다.
|
|
356
389
|
|
|
357
390
|
---
|
|
358
391
|
|
|
@@ -375,6 +408,16 @@ const config: LogtoConfig = {
|
|
|
375
408
|
- **Q. 인증/권한 외에 사용자/역할 관리도 가능한가요?**
|
|
376
409
|
→ 네, `LogtoM2MClient`를 통해 사용자/역할 생성, 조회, 수정, 삭제, 할당 등 모든 관리가 가능합니다.
|
|
377
410
|
|
|
411
|
+
- **Q. Stateless 모드와 Stateful 모드의 차이는 무엇인가요?**
|
|
412
|
+
→ Stateless 모드는 토큰 검증만 필요한 API 서버에 적합하며, 최소한의 환경변수(`LOGTO_JWKS_URI`, `LOGTO_AUTH_ISSUER`)만 필요합니다.
|
|
413
|
+
→ Stateful 모드는 `LOGTO_CLIENT=true`로 설정하여 로그인/로그아웃, M2M 통신 등 클라이언트 기능을 모두 사용할 수 있습니다.
|
|
414
|
+
|
|
415
|
+
- **Q. global 파라미터는 언제 사용하나요?**
|
|
416
|
+
→ `forLogger`의 세 번째 파라미터를 `true`로 설정하면 LogtoModule이 글로벌 모듈로 등록되어, 다른 모듈에서 별도의 import 없이 Logto 서비스들을 사용할 수 있습니다.
|
|
417
|
+
|
|
418
|
+
- **Q. 토큰 검증만 필요한데 모든 환경변수를 설정해야 하나요?**
|
|
419
|
+
→ 아니요. 토큰 검증만 필요하다면 `LOGTO_JWKS_URI`와 `LOGTO_AUTH_ISSUER`만 설정하면 됩니다. `LOGTO_CLIENT`를 설정하지 않거나 `false`로 설정하면 자동으로 Stateless 모드가 활성화됩니다.
|
|
420
|
+
|
|
378
421
|
---
|
|
379
422
|
|
|
380
423
|
## 🏷️ 내보내는 토큰/서비스
|
package/dist/module.js
CHANGED
|
@@ -1,45 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LogtoModule = void 0;
|
|
4
|
-
const
|
|
5
|
-
const token_1 = require("./token");
|
|
4
|
+
const config_1 = require("@nestjs/config");
|
|
6
5
|
const client_1 = require("./client");
|
|
6
|
+
const token_1 = require("./token");
|
|
7
|
+
const stateless_1 = require("./stateless");
|
|
7
8
|
class LogtoModule {
|
|
8
9
|
static forLogger(loggerModule, loggerToken, global = false) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
const baseProviders = [
|
|
11
|
+
{
|
|
12
|
+
provide: client_1.LogtoLoggerServiceToken,
|
|
13
|
+
useExisting: loggerToken,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
provide: token_1.LogtoTokenVerifierToken,
|
|
17
|
+
useClass: token_1.LogtoTokenVerifier,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
provide: stateless_1.LogtoTokenGuardToken,
|
|
21
|
+
useClass: stateless_1.LogtoTokenGuard,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
const statefulProviders = [
|
|
25
|
+
{
|
|
26
|
+
provide: client_1.OAuthClientToken,
|
|
27
|
+
useFactory: (configService, logger) => {
|
|
28
|
+
if (configService.get('LOGTO_CLIENT')?.toLowerCase() === 'true') {
|
|
29
|
+
return new client_1.OAuthClient(configService, logger);
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
25
32
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
inject: [config_1.ConfigService, client_1.LogtoLoggerServiceToken],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
provide: client_1.LogtoLoginSessionToken,
|
|
37
|
+
useFactory: (configService, logger, oauthClient) => {
|
|
38
|
+
if (configService.get('LOGTO_CLIENT')?.toLowerCase() === 'true') {
|
|
39
|
+
return new client_1.LogtoLoginSession(logger, configService, oauthClient);
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
29
42
|
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
inject: [config_1.ConfigService, client_1.LogtoLoggerServiceToken, client_1.OAuthClientToken],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
provide: client_1.LogtoM2MClientToken,
|
|
47
|
+
useFactory: (configService, tokenVerifier, logger) => {
|
|
48
|
+
if (configService.get('LOGTO_CLIENT')?.toLowerCase() === 'true') {
|
|
49
|
+
return new client_1.LogtoM2MClient(configService, tokenVerifier, logger);
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
33
52
|
},
|
|
34
|
-
|
|
53
|
+
inject: [config_1.ConfigService, token_1.LogtoTokenVerifierToken, client_1.LogtoLoggerServiceToken],
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const providers = [...baseProviders, ...statefulProviders];
|
|
57
|
+
return {
|
|
58
|
+
module: LogtoModule,
|
|
59
|
+
global: global,
|
|
60
|
+
imports: [
|
|
61
|
+
loggerModule,
|
|
35
62
|
],
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
client_1.LogtoM2MClientToken,
|
|
39
|
-
token_1.LogtoTokenVerifierToken,
|
|
40
|
-
client_1.LogtoLoginSessionToken,
|
|
41
|
-
stateless_1.LogtoTokenGuard,
|
|
42
|
-
]
|
|
63
|
+
providers: providers,
|
|
64
|
+
exports: providers,
|
|
43
65
|
};
|
|
44
66
|
}
|
|
45
67
|
}
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../module.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../module.ts"],"names":[],"mappings":";;;AACA,2CAA6D;AAC7D,qCAQkB;AAClB,mCAAsE;AACtE,2CAAoE;AAmBpE,MAAa,WAAW;IAgDpB,MAAM,CAAC,SAAS,CACZ,YAAuB,EACvB,WAA4B,EAC5B,SAAkB,KAAK;QAEvB,MAAM,aAAa,GAAe;YAC9B;gBACI,OAAO,EAAE,gCAAuB;gBAChC,WAAW,EAAE,WAAW;aAC3B;YACD;gBACI,OAAO,EAAE,+BAAuB;gBAChC,QAAQ,EAAE,0BAAkB;aAC/B;YACD;gBACI,OAAO,EAAE,gCAAoB;gBAC7B,QAAQ,EAAE,2BAAe;aAC5B;SACJ,CAAC;QAEF,MAAM,iBAAiB,GAAe;YAClC;gBACI,OAAO,EAAE,yBAAgB;gBACzB,UAAU,EAAE,CAAC,aAA4B,EAAE,MAAW,EAAE,EAAE;oBACtD,IAAI,aAAa,CAAC,GAAG,CAAS,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;wBACtE,OAAO,IAAI,oBAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,EAAE,CAAC,sBAAa,EAAE,gCAAuB,CAAC;aACnD;YACD;gBACI,OAAO,EAAE,+BAAsB;gBAC/B,UAAU,EAAE,CAAC,aAA4B,EAAE,MAAW,EAAE,WAAwB,EAAE,EAAE;oBAChF,IAAI,aAAa,CAAC,GAAG,CAAS,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;wBACtE,OAAO,IAAI,0BAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;oBACrE,CAAC;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,EAAE,CAAC,sBAAa,EAAE,gCAAuB,EAAE,yBAAgB,CAAC;aACrE;YACD;gBACI,OAAO,EAAE,4BAAmB;gBAC5B,UAAU,EAAE,CAAC,aAA4B,EAAE,aAAiC,EAAE,MAAW,EAAE,EAAE;oBACzF,IAAI,aAAa,CAAC,GAAG,CAAS,cAAc,CAAC,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;wBACtE,OAAO,IAAI,uBAAc,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;oBACpE,CAAC;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,EAAE,CAAC,sBAAa,EAAE,+BAAuB,EAAE,gCAAuB,CAAC;aAC5E;SACJ,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,iBAAiB,CAAC,CAAC;QAE3D,OAAO;YACH,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,YAAY;aACf;YACD,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;SACrB,CAAC;IACN,CAAC;CACJ;AAjHD,kCAiHC;AAAA,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
2
|
import { Reflector } from '@nestjs/core';
|
|
3
|
-
import
|
|
3
|
+
import { LogtoTokenVerifier } from '../token';
|
|
4
|
+
export declare const LogtoTokenGuardToken: unique symbol;
|
|
4
5
|
export declare class LogtoTokenGuard implements CanActivate {
|
|
5
6
|
private reflector;
|
|
6
7
|
private tokenVerifier;
|
|
7
|
-
constructor(reflector: Reflector, tokenVerifier:
|
|
8
|
+
constructor(reflector: Reflector, tokenVerifier: LogtoTokenVerifier);
|
|
8
9
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
9
10
|
private extractBearerTokenFrom;
|
|
10
11
|
}
|
package/dist/stateless/guard.js
CHANGED
|
@@ -1,43 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
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;
|
|
22
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
7
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
10
|
};
|
|
@@ -45,12 +12,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
45
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
13
|
};
|
|
47
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.LogtoTokenGuard = void 0;
|
|
15
|
+
exports.LogtoTokenGuard = exports.LogtoTokenGuardToken = void 0;
|
|
49
16
|
const common_1 = require("@nestjs/common");
|
|
50
17
|
const core_1 = require("@nestjs/core");
|
|
51
18
|
const jose_1 = require("jose");
|
|
52
19
|
const point3_common_tool_1 = require("point3-common-tool");
|
|
53
|
-
const
|
|
20
|
+
const token_1 = require("../token");
|
|
21
|
+
exports.LogtoTokenGuardToken = Symbol('LogtoTokenGuard');
|
|
54
22
|
let LogtoTokenGuard = class LogtoTokenGuard {
|
|
55
23
|
constructor(reflector, tokenVerifier) {
|
|
56
24
|
this.reflector = reflector;
|
|
@@ -94,9 +62,9 @@ let LogtoTokenGuard = class LogtoTokenGuard {
|
|
|
94
62
|
};
|
|
95
63
|
exports.LogtoTokenGuard = LogtoTokenGuard;
|
|
96
64
|
exports.LogtoTokenGuard = LogtoTokenGuard = __decorate([
|
|
97
|
-
(0, common_1.Global)(),
|
|
98
65
|
(0, common_1.Injectable)(),
|
|
99
|
-
__param(1, (0, common_1.Inject)(
|
|
100
|
-
__metadata("design:paramtypes", [core_1.Reflector,
|
|
66
|
+
__param(1, (0, common_1.Inject)(token_1.LogtoTokenVerifierToken)),
|
|
67
|
+
__metadata("design:paramtypes", [core_1.Reflector,
|
|
68
|
+
token_1.LogtoTokenVerifier])
|
|
101
69
|
], LogtoTokenGuard);
|
|
102
70
|
//# sourceMappingURL=guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../stateless/guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../stateless/guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,uCAAyC;AAGzC,+BAA8B;AAE9B,2DAA8C;AAC9C,oCAAuE;AAE1D,QAAA,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAGvD,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YACU,SAAoB,EAGpB,aAAiC;QAHjC,cAAS,GAAT,SAAS,CAAW;QAGpB,kBAAa,GAAb,aAAa,CAAoB;IACvC,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAW,gBAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAW,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAE1F,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAGpD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;YAGhG,OAAO,CAAC,IAAI,GAAG;gBACb,MAAM,EAAE,MAAM,CAAC,GAAG;gBAClB,SAAS,EAAE,6BAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBAChD,QAAQ,EAAE,6BAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC/C,CAAA;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,8BAAqB;gBAAE,MAAM,KAAK,CAAC;YACxD,IAAI,KAAK,YAAY,aAAM,CAAC,SAAS;gBAAE,MAAM,IAAI,8BAAqB,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,KAAK,YAAY,KAAK;gBAAE,MAAM,IAAI,qCAA4B,CAAC,kBAAkB,EAAE,GAAG,mBAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAE9H,MAAM,IAAI,8BAAqB,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAQO,sBAAsB,CAAC,OAA4B;QACzD,MAAM,qBAAqB,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,8BAAqB,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,8BAAqB,CAAC,wCAAwC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAAA,CAAC;CACH,CAAA;AAvDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,+BAAuB,CAAC,CAAA;qCAFb,gBAAS;QAGL,0BAAkB;GALhC,eAAe,CAuD3B"}
|
package/dist/token/verifier.js
CHANGED
|
@@ -58,7 +58,6 @@ let LogtoTokenVerifier = class LogtoTokenVerifier {
|
|
|
58
58
|
};
|
|
59
59
|
exports.LogtoTokenVerifier = LogtoTokenVerifier;
|
|
60
60
|
exports.LogtoTokenVerifier = LogtoTokenVerifier = __decorate([
|
|
61
|
-
(0, common_1.Global)(),
|
|
62
61
|
(0, common_1.Injectable)(),
|
|
63
62
|
__param(0, (0, common_1.Inject)(config_1.ConfigService)),
|
|
64
63
|
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../token/verifier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../token/verifier.ts"],"names":[],"mappings":"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"}
|