@point3/logto-module 1.0.5 → 1.0.6
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/client/__tests__/m2m-client.spec.js +14 -16
- package/dist/client/__tests__/m2m-client.spec.js.map +1 -1
- package/dist/client/__tests__/oauth-client.spec.js +15 -17
- package/dist/client/__tests__/oauth-client.spec.js.map +1 -1
- package/dist/client/config.js +4 -7
- package/dist/client/config.js.map +1 -1
- package/dist/client/index.js +5 -21
- package/dist/client/index.js.map +1 -1
- package/dist/client/logto-login-session.js +17 -23
- package/dist/client/logto-login-session.js.map +1 -1
- package/dist/client/m2m-client.js +29 -33
- package/dist/client/m2m-client.js.map +1 -1
- package/dist/client/oauth-client.js +26 -32
- package/dist/client/oauth-client.js.map +1 -1
- package/dist/client/types.js +10 -17
- package/dist/client/types.js.map +1 -1
- package/dist/errors.js +8 -19
- package/dist/errors.js.map +1 -1
- package/dist/index.js +4 -40
- package/dist/index.js.map +1 -1
- package/dist/module.js +19 -23
- package/dist/module.js.map +1 -1
- package/dist/stateless/decorator.js +4 -7
- package/dist/stateless/decorator.js.map +1 -1
- package/dist/stateless/guard.js +19 -55
- package/dist/stateless/guard.js.map +1 -1
- package/dist/stateless/guard.spec.js +22 -24
- package/dist/stateless/guard.spec.js.map +1 -1
- package/dist/stateless/index.js +2 -18
- package/dist/stateless/index.js.map +1 -1
- package/dist/token/access-token.js +1 -5
- package/dist/token/access-token.js.map +1 -1
- package/dist/token/index.js +2 -18
- package/dist/token/index.js.map +1 -1
- package/dist/token/verifier.js +15 -18
- package/dist/token/verifier.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/tsconfig.json +23 -22
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const token_1 = require("../../token");
|
|
8
|
-
const common_1 = require("@nestjs/common");
|
|
1
|
+
import { Test } from "@nestjs/testing";
|
|
2
|
+
import { ConfigModule } from "@nestjs/config";
|
|
3
|
+
import { p3Values } from "point3-common-tool";
|
|
4
|
+
import { LogtoLoggerServiceToken, LogtoM2MClientToken } from "..";
|
|
5
|
+
import { LogtoTokenVerifier, LogtoTokenVerifierToken } from "../../token";
|
|
6
|
+
import { ConsoleLogger } from "@nestjs/common";
|
|
9
7
|
describe('M2mclient를 이용한 Logto API 테스트', () => {
|
|
10
8
|
let m2mClient;
|
|
11
9
|
let testUser;
|
|
12
10
|
let testUserId = 'bead71jr45u1';
|
|
13
11
|
let testRoleId = '0fwcgs8okjy7lav216sb3';
|
|
14
12
|
beforeAll(async () => {
|
|
15
|
-
const module = await
|
|
13
|
+
const module = await Test.createTestingModule({
|
|
16
14
|
imports: [
|
|
17
|
-
|
|
15
|
+
ConfigModule.forRoot({
|
|
18
16
|
envFilePath: `env/.env.${process.env.NODE_ENV}`,
|
|
19
17
|
isGlobal: true,
|
|
20
18
|
})
|
|
21
19
|
],
|
|
22
20
|
providers: [
|
|
23
21
|
{
|
|
24
|
-
provide:
|
|
25
|
-
useClass:
|
|
22
|
+
provide: LogtoTokenVerifierToken,
|
|
23
|
+
useClass: LogtoTokenVerifier
|
|
26
24
|
},
|
|
27
25
|
{
|
|
28
|
-
provide:
|
|
29
|
-
useClass:
|
|
26
|
+
provide: LogtoLoggerServiceToken,
|
|
27
|
+
useClass: ConsoleLogger
|
|
30
28
|
}
|
|
31
29
|
],
|
|
32
30
|
}).compile();
|
|
33
|
-
m2mClient = module.get(
|
|
31
|
+
m2mClient = module.get(LogtoM2MClientToken);
|
|
34
32
|
const randomNumber = Math.floor(1000 + Math.random() * 9000);
|
|
35
33
|
testUser = {
|
|
36
|
-
username:
|
|
34
|
+
username: p3Values.Guid.create('test').toString().replace(/-/g, '_'),
|
|
37
35
|
name: 'test' + randomNumber,
|
|
38
36
|
primaryEmail: 'test' + randomNumber + '@test.com',
|
|
39
37
|
password: 'test123',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"m2m-client.spec.js","sourceRoot":"","sources":["../../../client/__tests__/m2m-client.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"m2m-client.spec.js","sourceRoot":"","sources":["../../../client/__tests__/m2m-client.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAkB,mBAAmB,EAAa,MAAM,IAAI,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,IAAI,SAAyB,CAAC;IAC9B,IAAI,QAAoB,CAAC;IACzB,IAAI,UAAU,GAAY,cAAc,CAAC;IACzC,IAAI,UAAU,GAAY,uBAAuB,CAAC;IAClD,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzD,OAAO,EAAE;gBACL,YAAY,CAAC,OAAO,CAAC;oBACjB,WAAW,EAAE,YAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAC/C,QAAQ,EAAE,IAAI;iBACjB,CAAC;aACL;YACD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,kBAAkB;iBAC/B;gBACD;oBACI,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,aAAa;iBAC1B;aACJ;SACJ,CAAC,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,GAAG,MAAM,CAAC,GAAG,CAAiB,mBAAmB,CAAC,CAAC;QAG5D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,QAAQ,GAAG;YACP,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YACpE,IAAI,EAAE,MAAM,GAAG,YAAY;YAC3B,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,WAAW;YACjD,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,SAAS,GAAG,YAAY;SACzC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACnB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,UAAU,GAAG,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACnB,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,SAAS,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const common_1 = require("@nestjs/common");
|
|
7
|
-
const token_1 = require("../../token");
|
|
1
|
+
import { Test } from "@nestjs/testing";
|
|
2
|
+
import { LogtoLoggerServiceToken, OAuthClient, OAuthClientToken, SignInType } from "..";
|
|
3
|
+
import { ConfigModule } from "@nestjs/config";
|
|
4
|
+
import { ConsoleLogger } from "@nestjs/common";
|
|
5
|
+
import { LogtoTokenVerifierToken, LogtoTokenVerifier } from "../../token";
|
|
8
6
|
describe('OAuthClient', () => {
|
|
9
7
|
let oauthClient;
|
|
10
8
|
beforeEach(async () => {
|
|
11
|
-
const testingModule = await
|
|
9
|
+
const testingModule = await Test.createTestingModule({
|
|
12
10
|
imports: [
|
|
13
|
-
|
|
11
|
+
ConfigModule.forRoot({
|
|
14
12
|
envFilePath: `env/.env.${process.env.NODE_ENV}`,
|
|
15
13
|
isGlobal: true,
|
|
16
14
|
}),
|
|
17
15
|
],
|
|
18
16
|
providers: [
|
|
19
17
|
{
|
|
20
|
-
provide:
|
|
21
|
-
useClass:
|
|
18
|
+
provide: LogtoLoggerServiceToken,
|
|
19
|
+
useClass: ConsoleLogger
|
|
22
20
|
},
|
|
23
21
|
{
|
|
24
|
-
provide:
|
|
25
|
-
useClass:
|
|
22
|
+
provide: OAuthClientToken,
|
|
23
|
+
useClass: OAuthClient
|
|
26
24
|
},
|
|
27
25
|
{
|
|
28
|
-
provide:
|
|
29
|
-
useClass:
|
|
26
|
+
provide: LogtoTokenVerifierToken,
|
|
27
|
+
useClass: LogtoTokenVerifier
|
|
30
28
|
}
|
|
31
29
|
],
|
|
32
30
|
}).compile();
|
|
33
|
-
oauthClient = testingModule.get(
|
|
31
|
+
oauthClient = testingModule.get(OAuthClientToken);
|
|
34
32
|
});
|
|
35
33
|
it('로그인/ 회원가입을 위한 로그인 페이지 요청 URI 생성', () => {
|
|
36
|
-
const uri = oauthClient.getSignInURI(
|
|
34
|
+
const uri = oauthClient.getSignInURI(SignInType.Admin);
|
|
37
35
|
expect(uri).toContain('prompt=login');
|
|
38
36
|
});
|
|
39
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.spec.js","sourceRoot":"","sources":["../../../client/__tests__/oauth-client.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-client.spec.js","sourceRoot":"","sources":["../../../client/__tests__/oauth-client.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAI,WAAwB,CAAC;IAE7B,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACjD,OAAO,EAAE;gBACL,YAAY,CAAC,OAAO,CAAC;oBACnB,WAAW,EAAE,YAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAC/C,QAAQ,EAAE,IAAI;iBACf,CAAC;aACH;YACH,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,aAAa;iBAC1B;gBACD;oBACI,OAAO,EAAE,gBAAgB;oBACzB,QAAQ,EAAE,WAAW;iBACxB;gBACD;oBACI,OAAO,EAAE,uBAAuB;oBAChC,QAAQ,EAAE,kBAAkB;iBAC/B;aACJ;SACJ,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,WAAW,GAAG,aAAa,CAAC,GAAG,CAAc,gBAAgB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAEvC,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/client/config.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GrantType = exports.Prompt = void 0;
|
|
4
|
-
var Prompt;
|
|
1
|
+
export var Prompt;
|
|
5
2
|
(function (Prompt) {
|
|
6
3
|
Prompt["None"] = "none";
|
|
7
4
|
Prompt["Consent"] = "consent";
|
|
8
5
|
Prompt["Login"] = "login";
|
|
9
|
-
})(Prompt || (
|
|
10
|
-
var GrantType;
|
|
6
|
+
})(Prompt || (Prompt = {}));
|
|
7
|
+
export var GrantType;
|
|
11
8
|
(function (GrantType) {
|
|
12
9
|
GrantType["AuthorizationCode"] = "authorization_code";
|
|
13
10
|
GrantType["ClientCredentials"] = "client_credentials";
|
|
14
11
|
GrantType["RefreshToken"] = "refresh_token";
|
|
15
|
-
})(GrantType || (
|
|
12
|
+
})(GrantType || (GrantType = {}));
|
|
16
13
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../client/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../client/config.ts"],"names":[],"mappings":"AA4DA,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IACd,uBAAa,CAAA;IACb,6BAAmB,CAAA;IACnB,yBAAe,CAAA;AACnB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB;AAUD,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,2CAA8B,CAAA;AAClC,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./config"), exports);
|
|
18
|
-
__exportStar(require("./m2m-client"), exports);
|
|
19
|
-
__exportStar(require("./oauth-client"), exports);
|
|
20
|
-
__exportStar(require("./logto-login-session"), exports);
|
|
21
|
-
__exportStar(require("./types"), exports);
|
|
1
|
+
export * from "./config";
|
|
2
|
+
export * from "./m2m-client";
|
|
3
|
+
export * from "./oauth-client";
|
|
4
|
+
export * from "./logto-login-session";
|
|
5
|
+
export * from "./types";
|
|
22
6
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,28 +10,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
const config_1 = require("@nestjs/config");
|
|
21
|
-
const axios_1 = __importDefault(require("axios"));
|
|
22
|
-
const oauth_client_1 = require("./oauth-client");
|
|
23
|
-
const types_1 = require("./types");
|
|
24
|
-
exports.LogtoLoginSessionToken = Symbol.for("LogtoLoginSession");
|
|
13
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
14
|
+
import { ConfigService } from "@nestjs/config";
|
|
15
|
+
import axios from "axios";
|
|
16
|
+
import { OAuthClient, OAuthClientToken, } from "./oauth-client";
|
|
17
|
+
import { LogtoLoggerServiceToken, LogtoOAuthRESTTemplate, } from "./types";
|
|
18
|
+
export const LogtoLoginSessionToken = Symbol.for("LogtoLoginSession");
|
|
25
19
|
let LogtoLoginSession = class LogtoLoginSession {
|
|
26
20
|
constructor(logger, configService, oauthClient) {
|
|
27
21
|
this.logger = logger;
|
|
28
22
|
this.configService = configService;
|
|
29
23
|
this.oauthClient = oauthClient;
|
|
30
24
|
const baseURL = this.configService.get("LOGTO_M2M_API_URL");
|
|
31
|
-
this.apiRestTemplate = new
|
|
25
|
+
this.apiRestTemplate = new LogtoOAuthRESTTemplate(this.logger, baseURL);
|
|
32
26
|
}
|
|
33
27
|
async createSignInSession(signInType) {
|
|
34
28
|
const { uri, state } = this.oauthClient.getSignInURI(signInType);
|
|
35
|
-
const response = await
|
|
29
|
+
const response = await axios.get(uri, {
|
|
36
30
|
maxRedirects: 0,
|
|
37
31
|
validateStatus: (status) => status >= 200 && status <= 400,
|
|
38
32
|
withCredentials: true,
|
|
@@ -95,7 +89,7 @@ let LogtoLoginSession = class LogtoLoginSession {
|
|
|
95
89
|
}
|
|
96
90
|
}
|
|
97
91
|
async redirectToConsent(redirectTo, cookie) {
|
|
98
|
-
const response = await
|
|
92
|
+
const response = await axios.get(redirectTo, {
|
|
99
93
|
maxRedirects: 0,
|
|
100
94
|
validateStatus: (status) => status >= 200 && status <= 400,
|
|
101
95
|
withCredentials: true,
|
|
@@ -116,13 +110,13 @@ let LogtoLoginSession = class LogtoLoginSession {
|
|
|
116
110
|
}
|
|
117
111
|
}
|
|
118
112
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
(0,
|
|
122
|
-
__param(
|
|
123
|
-
__param(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
oauth_client_1.OAuthClient])
|
|
113
|
+
LogtoLoginSession = __decorate([
|
|
114
|
+
Injectable(),
|
|
115
|
+
__param(0, Inject(LogtoLoggerServiceToken)),
|
|
116
|
+
__param(1, Inject(ConfigService)),
|
|
117
|
+
__param(2, Inject(OAuthClientToken)),
|
|
118
|
+
__metadata("design:paramtypes", [Object, ConfigService,
|
|
119
|
+
OAuthClient])
|
|
127
120
|
], LogtoLoginSession);
|
|
121
|
+
export { LogtoLoginSession };
|
|
128
122
|
//# sourceMappingURL=logto-login-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logto-login-session.js","sourceRoot":"","sources":["../../client/logto-login-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logto-login-session.js","sourceRoot":"","sources":["../../client/logto-login-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,17 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
const point3_common_tool_1 = require("point3-common-tool");
|
|
23
|
-
const errors_1 = require("../errors");
|
|
24
|
-
exports.LogtoM2MClientToken = Symbol.for("LogtoM2MClient");
|
|
13
|
+
import { Inject, Injectable, Global, } from "@nestjs/common";
|
|
14
|
+
import { ConfigService } from "@nestjs/config";
|
|
15
|
+
import { GrantType, } from "./config";
|
|
16
|
+
import { AccessToken, LogtoTokenVerifier, LogtoTokenVerifierToken, } from "../token";
|
|
17
|
+
import { LogtoOAuthRESTTemplate, LogtoPasswordAlgorithm, VerificationMethodType, LogtoLoggerServiceToken } from "./types";
|
|
18
|
+
import { axiosAdapter } from "point3-common-tool";
|
|
19
|
+
import { UserMissingRequiredFieldsError, UserNotFoundError, MultipleUsersFoundError, } from "../errors";
|
|
20
|
+
export const LogtoM2MClientToken = Symbol.for("LogtoM2MClient");
|
|
25
21
|
let LogtoM2MClient = class LogtoM2MClient {
|
|
26
22
|
constructor(configService, tokenVerifier, logger) {
|
|
27
23
|
this.configService = configService;
|
|
@@ -33,11 +29,11 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
33
29
|
appSecret: this.configService.get('LOGTO_M2M_CLIENT_SECRET'),
|
|
34
30
|
scopes: ['all'],
|
|
35
31
|
resources: [this.configService.get('LOGTO_M2M_RESOURCE')],
|
|
36
|
-
grantType:
|
|
32
|
+
grantType: GrantType.ClientCredentials,
|
|
37
33
|
};
|
|
38
|
-
this.authRestTemplate = new
|
|
34
|
+
this.authRestTemplate = new LogtoOAuthRESTTemplate(this.logger, this.logtoConfig.endpoint);
|
|
39
35
|
this.authRestTemplate.setBasic(this.logtoConfig.appId, this.logtoConfig.appSecret);
|
|
40
|
-
this.apiRestTemplate = new
|
|
36
|
+
this.apiRestTemplate = new LogtoOAuthRESTTemplate(this.logger, this.configService.get('LOGTO_M2M_API_URL'));
|
|
41
37
|
}
|
|
42
38
|
async fetchAccessToken() {
|
|
43
39
|
const params = new URLSearchParams();
|
|
@@ -49,7 +45,7 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
49
45
|
});
|
|
50
46
|
const { access_token, expires_in } = response.data;
|
|
51
47
|
const payload = await this.tokenVerifier.verifyToken(access_token);
|
|
52
|
-
this.accessToken = new
|
|
48
|
+
this.accessToken = new AccessToken(payload.sub, access_token, expires_in);
|
|
53
49
|
this.apiRestTemplate.setBearer(access_token);
|
|
54
50
|
}
|
|
55
51
|
async getAccessToken() {
|
|
@@ -78,7 +74,7 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
78
74
|
type: role.type,
|
|
79
75
|
};
|
|
80
76
|
const response = await this.apiRestTemplate.post('/roles', body);
|
|
81
|
-
if (response instanceof
|
|
77
|
+
if (response instanceof axiosAdapter.ValidationError) {
|
|
82
78
|
if (response.code === 'role.name_in_use') {
|
|
83
79
|
this.logger.error(`이미 존재하는 역할: ${response.code}`, this.constructor.name);
|
|
84
80
|
return this.getRoleByName(role.name);
|
|
@@ -96,12 +92,12 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
96
92
|
async createUser(user) {
|
|
97
93
|
await this.getAccessToken();
|
|
98
94
|
if (user.username && user.primaryEmail && user.password && user.primaryPhone && user.name) {
|
|
99
|
-
user.passwordAlgorithm = user.passwordAlgorithm ??
|
|
95
|
+
user.passwordAlgorithm = user.passwordAlgorithm ?? LogtoPasswordAlgorithm.Argon2i;
|
|
100
96
|
const response = await this.apiRestTemplate.post('/users', user);
|
|
101
97
|
return response.data.id;
|
|
102
98
|
}
|
|
103
99
|
this.logger.error(`필수 필드 누락`, this.constructor.name);
|
|
104
|
-
throw new
|
|
100
|
+
throw new UserMissingRequiredFieldsError();
|
|
105
101
|
}
|
|
106
102
|
async updateUserClientInfo(userId, clientId) {
|
|
107
103
|
await this.getAccessToken();
|
|
@@ -129,11 +125,11 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
129
125
|
}
|
|
130
126
|
if (logtoUsers.length === 0) {
|
|
131
127
|
this.logger.error(`사용자 없음: email=${email}, phone=${phone}`, this.constructor.name);
|
|
132
|
-
throw new
|
|
128
|
+
throw new UserNotFoundError(email, phone);
|
|
133
129
|
}
|
|
134
130
|
this.logger.error(`여러 사용자 발견: email=${email}, phone=${phone}`, this.constructor.name);
|
|
135
131
|
this.logger.error(JSON.stringify(logtoUsers), this.constructor.name);
|
|
136
|
-
throw new
|
|
132
|
+
throw new MultipleUsersFoundError(email, phone);
|
|
137
133
|
}
|
|
138
134
|
async getUserByUsername(username) {
|
|
139
135
|
await this.getAccessToken();
|
|
@@ -159,7 +155,7 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
159
155
|
}
|
|
160
156
|
async sendVerificationCode(identifier) {
|
|
161
157
|
await this.getAccessToken();
|
|
162
|
-
const method = identifier instanceof
|
|
158
|
+
const method = identifier instanceof VerificationMethodType.email
|
|
163
159
|
? "email"
|
|
164
160
|
: "phone";
|
|
165
161
|
await this.apiRestTemplate.post('/verification-codes', {
|
|
@@ -168,7 +164,7 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
168
164
|
}
|
|
169
165
|
async verifyCode(identifier, code) {
|
|
170
166
|
await this.getAccessToken();
|
|
171
|
-
const method = identifier instanceof
|
|
167
|
+
const method = identifier instanceof VerificationMethodType.email
|
|
172
168
|
? 'email'
|
|
173
169
|
: 'phone';
|
|
174
170
|
await this.apiRestTemplate.post(`/verification-codes/verify`, {
|
|
@@ -182,17 +178,17 @@ let LogtoM2MClient = class LogtoM2MClient {
|
|
|
182
178
|
return response.data;
|
|
183
179
|
}
|
|
184
180
|
};
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
(
|
|
188
|
-
(0,
|
|
189
|
-
__param(
|
|
190
|
-
__param(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
token_1.LogtoTokenVerifier, Object])
|
|
181
|
+
LogtoM2MClient = __decorate([
|
|
182
|
+
Global(),
|
|
183
|
+
Injectable(),
|
|
184
|
+
__param(0, Inject(ConfigService)),
|
|
185
|
+
__param(1, Inject(LogtoTokenVerifierToken)),
|
|
186
|
+
__param(2, Inject(LogtoLoggerServiceToken)),
|
|
187
|
+
__metadata("design:paramtypes", [ConfigService,
|
|
188
|
+
LogtoTokenVerifier, Object])
|
|
194
189
|
], LogtoM2MClient);
|
|
195
|
-
|
|
190
|
+
export { LogtoM2MClient };
|
|
191
|
+
export function generatePhoneNumberWithCountryCode(countryCode, phoneNumber) {
|
|
196
192
|
if (phoneNumber.startsWith('0')) {
|
|
197
193
|
phoneNumber = phoneNumber.slice(1);
|
|
198
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"m2m-client.js","sourceRoot":"","sources":["../../client/m2m-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"m2m-client.js","sourceRoot":"","sources":["../../client/m2m-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,21 +10,16 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
-
};
|
|
17
13
|
var OAuthClient_1;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const Gulid = point3_common_tool_1.p3Values.Gulid;
|
|
28
|
-
exports.OAuthClientToken = "OAuthClient";
|
|
14
|
+
import { Inject, Injectable, Global } from "@nestjs/common";
|
|
15
|
+
import axios from "axios";
|
|
16
|
+
import { GrantType } from "./config";
|
|
17
|
+
import { ConfigService } from "@nestjs/config";
|
|
18
|
+
import { p3Values } from "point3-common-tool";
|
|
19
|
+
import { TokenRevocationFailedError, AuthorizationCodeTokenFetchError, SignInUriGenerationError, SignOutUriGenerationError, } from "../errors";
|
|
20
|
+
import { LogtoLoggerServiceToken, LogtoOAuthRESTTemplate } from "./types";
|
|
21
|
+
const Gulid = p3Values.Gulid;
|
|
22
|
+
export const OAuthClientToken = "OAuthClient";
|
|
29
23
|
let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
30
24
|
constructor(configService, logger) {
|
|
31
25
|
this.configService = configService;
|
|
@@ -38,9 +32,9 @@ let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
|
38
32
|
scopes: this.configService.get("LOGTO_SCOPES").split(","),
|
|
39
33
|
prompt: this.configService.get("LOGTO_PROMPT"),
|
|
40
34
|
redirectUri: this.configService.get("LOGTO_REDIRECT_URI"),
|
|
41
|
-
grantType:
|
|
35
|
+
grantType: GrantType.AuthorizationCode,
|
|
42
36
|
};
|
|
43
|
-
this.logtoRestTemplate = new
|
|
37
|
+
this.logtoRestTemplate = new LogtoOAuthRESTTemplate(logger, this.logtoConfig.endpoint);
|
|
44
38
|
this.logtoRestTemplate.setBasic(this.logtoConfig.appId, this.logtoConfig.appSecret);
|
|
45
39
|
}
|
|
46
40
|
getSignInURI(signInType) {
|
|
@@ -69,7 +63,7 @@ let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
|
69
63
|
return { uri: uri.toString(), state: state.toString() };
|
|
70
64
|
}
|
|
71
65
|
catch (error) {
|
|
72
|
-
throw new
|
|
66
|
+
throw new SignInUriGenerationError(signInType);
|
|
73
67
|
}
|
|
74
68
|
}
|
|
75
69
|
async getSignOutURI() {
|
|
@@ -80,7 +74,7 @@ let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
|
80
74
|
return uri.toString();
|
|
81
75
|
}
|
|
82
76
|
catch (error) {
|
|
83
|
-
throw new
|
|
77
|
+
throw new SignOutUriGenerationError();
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
async fetchTokenByAuthorizationCode(code) {
|
|
@@ -98,12 +92,12 @@ let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
|
98
92
|
};
|
|
99
93
|
}
|
|
100
94
|
catch (error) {
|
|
101
|
-
throw new
|
|
95
|
+
throw new AuthorizationCodeTokenFetchError(code);
|
|
102
96
|
}
|
|
103
97
|
}
|
|
104
98
|
async revokeToken(token) {
|
|
105
99
|
try {
|
|
106
|
-
const response = await
|
|
100
|
+
const response = await axios.post(`${this.logtoConfig.endpoint}/token/revoke`, new URLSearchParams({
|
|
107
101
|
token: token,
|
|
108
102
|
client_id: this.logtoConfig.appId,
|
|
109
103
|
}).toString(), {
|
|
@@ -111,25 +105,25 @@ let OAuthClient = OAuthClient_1 = class OAuthClient {
|
|
|
111
105
|
});
|
|
112
106
|
if (response.status === 200)
|
|
113
107
|
return;
|
|
114
|
-
throw new
|
|
108
|
+
throw new TokenRevocationFailedError();
|
|
115
109
|
}
|
|
116
110
|
catch (error) {
|
|
117
|
-
throw new
|
|
111
|
+
throw new TokenRevocationFailedError();
|
|
118
112
|
}
|
|
119
113
|
}
|
|
120
114
|
};
|
|
121
|
-
exports.OAuthClient = OAuthClient;
|
|
122
115
|
OAuthClient.prefix = "signin";
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
__param(0,
|
|
127
|
-
__param(1,
|
|
128
|
-
__metadata("design:paramtypes", [
|
|
116
|
+
OAuthClient = OAuthClient_1 = __decorate([
|
|
117
|
+
Global(),
|
|
118
|
+
Injectable(),
|
|
119
|
+
__param(0, Inject(ConfigService)),
|
|
120
|
+
__param(1, Inject(LogtoLoggerServiceToken)),
|
|
121
|
+
__metadata("design:paramtypes", [ConfigService, Object])
|
|
129
122
|
], OAuthClient);
|
|
130
|
-
|
|
123
|
+
export { OAuthClient };
|
|
124
|
+
export var SignInType;
|
|
131
125
|
(function (SignInType) {
|
|
132
126
|
SignInType["Admin"] = "admin";
|
|
133
127
|
SignInType["Dashboard"] = "dashboard";
|
|
134
|
-
})(SignInType || (
|
|
128
|
+
})(SignInType || (SignInType = {}));
|
|
135
129
|
//# sourceMappingURL=oauth-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../client/oauth-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../client/oauth-client.ts"],"names":[],"mappings":"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"}
|