@builder6/oidc 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/oidc/oidc.controller.d.ts +9 -0
- package/dist/oidc/oidc.controller.js +110 -0
- package/dist/oidc/oidc.controller.js.map +1 -0
- package/dist/oidc/oidc.controller.spec.d.ts +1 -0
- package/dist/oidc/oidc.controller.spec.js +17 -0
- package/dist/oidc/oidc.controller.spec.js.map +1 -0
- package/dist/oidc/oidc.module.d.ts +2 -0
- package/dist/oidc/oidc.module.js +24 -0
- package/dist/oidc/oidc.module.js.map +1 -0
- package/dist/oidc/oidc.service.d.ts +18 -0
- package/dist/oidc/oidc.service.js +46 -0
- package/dist/oidc/oidc.service.js.map +1 -0
- package/dist/oidc/oidc.service.spec.d.ts +1 -0
- package/dist/oidc/oidc.service.spec.js +17 -0
- package/dist/oidc/oidc.service.spec.js.map +1 -0
- package/package.json +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Builder6 Email Module
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## Environment Variables
|
|
5
|
+
|
|
6
|
+
```shell
|
|
7
|
+
B6_EMAIL_FROM=Steedos <noreply@steedos.com>
|
|
8
|
+
B6_EMAIL_HOST=email.xxxx.amazonaws.com
|
|
9
|
+
B6_EMAIL_PORT=465
|
|
10
|
+
B6_EMAIL_USERNAME=xxxxx
|
|
11
|
+
B6_EMAIL_PASSWORD=xxxxx
|
|
12
|
+
B6_EMAIL_SECURE=false
|
|
13
|
+
B6_EMAIL_DEBUG=true
|
|
14
|
+
B6_EMAIL_LOGGER=true
|
|
15
|
+
B6_EMAIL_ENABLED=true
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 配置定时发送
|
|
19
|
+
|
|
20
|
+
B6_EMAIL_ENABLED 时会启动定时发送任务,从 _mail_queue 集合中读取邮件发送任务,发送成功后删除任务。
|
|
21
|
+
|
|
22
|
+
以下环境变量非必须配置。
|
|
23
|
+
|
|
24
|
+
```shell
|
|
25
|
+
STEEDOS_EMAIL_QUEUE_INTERVAL=3000 # 邮件定时器,单位:毫秒, 默认值:3000
|
|
26
|
+
STEEDOS_EMAIL_QUEUE_BATCH_SIZE=1 # 邮件队列批量发送数量,默认值:1
|
|
27
|
+
STEEDOS_EMAIL_QUEUE_TIMEOUT=60000 # 邮件队列超时时间,单位:毫秒,默认值:60000
|
|
28
|
+
STEEDOS_EMAIL_QUEUE_KEEPS=false # 邮件发送之后是否保留邮件队列,默认值:false
|
|
29
|
+
```
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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 __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("./oidc/oidc.module"), exports);
|
|
18
|
+
__exportStar(require("./oidc/oidc.service"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { OidcService } from './oidc.service';
|
|
2
|
+
import { AuthService } from '@builder6/core';
|
|
3
|
+
export declare class OidcController {
|
|
4
|
+
private readonly oidcService;
|
|
5
|
+
private readonly authService;
|
|
6
|
+
constructor(oidcService: OidcService, authService: AuthService);
|
|
7
|
+
login(providerId: string, req: any, res: any): Promise<any>;
|
|
8
|
+
callback(providerId: string, req: any, res: any): Promise<any>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OidcController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const openid_client_1 = require("openid-client");
|
|
18
|
+
const oidc_service_1 = require("./oidc.service");
|
|
19
|
+
const core_1 = require("@builder6/core");
|
|
20
|
+
let OidcController = class OidcController {
|
|
21
|
+
constructor(oidcService, authService) {
|
|
22
|
+
this.oidcService = oidcService;
|
|
23
|
+
this.authService = authService;
|
|
24
|
+
}
|
|
25
|
+
async login(providerId, req, res) {
|
|
26
|
+
const provider = await this.oidcService.getProviderFromDB(providerId);
|
|
27
|
+
console.log(provider);
|
|
28
|
+
const issuer = await openid_client_1.Issuer.discover(provider.issuer);
|
|
29
|
+
const client = new issuer.Client({
|
|
30
|
+
client_id: provider.client_id,
|
|
31
|
+
client_secret: provider.client_secret,
|
|
32
|
+
redirect_uris: [provider.redirect_uri],
|
|
33
|
+
response_types: ['code'],
|
|
34
|
+
});
|
|
35
|
+
const redirectTo = client.authorizationUrl({
|
|
36
|
+
scope: provider.scope,
|
|
37
|
+
state: provider.state,
|
|
38
|
+
nonce: provider.nonce,
|
|
39
|
+
code_challenge: provider.code_challenge,
|
|
40
|
+
code_challenge_method: provider.code_challenge_method,
|
|
41
|
+
});
|
|
42
|
+
req.session[`oidc_${providerId}_state`] = provider.state;
|
|
43
|
+
req.session[`oidc_${providerId}_code_verifier`] = provider.code_verifier;
|
|
44
|
+
req.session[`oidc_${providerId}_nonce`] = provider.nonce;
|
|
45
|
+
return res.redirect(redirectTo);
|
|
46
|
+
}
|
|
47
|
+
async callback(providerId, req, res) {
|
|
48
|
+
const storedState = req.session[`oidc_${providerId}_state`];
|
|
49
|
+
const storedVerifier = req.session[`oidc_${providerId}_code_verifier`];
|
|
50
|
+
const storedNonce = req.session[`oidc_${providerId}_nonce`];
|
|
51
|
+
const provider = await this.oidcService.getProviderFromDB(providerId);
|
|
52
|
+
const issuer = await openid_client_1.Issuer.discover(provider.issuer);
|
|
53
|
+
const client = new issuer.Client({
|
|
54
|
+
client_id: provider.client_id,
|
|
55
|
+
client_secret: provider.client_secret,
|
|
56
|
+
redirect_uris: [provider.redirect_uri],
|
|
57
|
+
response_types: ['code'],
|
|
58
|
+
});
|
|
59
|
+
const params = client.callbackParams(req);
|
|
60
|
+
const tokenSet = await client.callback(provider.redirect_uri, params, {
|
|
61
|
+
state: storedState,
|
|
62
|
+
code_verifier: storedVerifier,
|
|
63
|
+
nonce: storedNonce,
|
|
64
|
+
});
|
|
65
|
+
console.log('validated ID Token claims %j', tokenSet.claims());
|
|
66
|
+
delete req.session[`oidc_${providerId}_state`];
|
|
67
|
+
delete req.session[`oidc_${providerId}_code_verifier`];
|
|
68
|
+
delete req.session[`oidc_${providerId}_nonce`];
|
|
69
|
+
const email = tokenSet.claims().email;
|
|
70
|
+
if (email) {
|
|
71
|
+
const userSession = await this.authService.signIn(email);
|
|
72
|
+
const { user, space, auth_token, access_token } = userSession;
|
|
73
|
+
this.authService.setAuthCookies(res, {
|
|
74
|
+
user_id: user,
|
|
75
|
+
space_id: space,
|
|
76
|
+
auth_token,
|
|
77
|
+
access_token,
|
|
78
|
+
});
|
|
79
|
+
return res.redirect('/');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return res.status(401).send(tokenSet.claims());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, common_1.Get)(':providerId/login'),
|
|
88
|
+
__param(0, (0, common_1.Param)('providerId')),
|
|
89
|
+
__param(1, (0, common_1.Req)()),
|
|
90
|
+
__param(2, (0, common_1.Res)()),
|
|
91
|
+
__metadata("design:type", Function),
|
|
92
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
93
|
+
__metadata("design:returntype", Promise)
|
|
94
|
+
], OidcController.prototype, "login", null);
|
|
95
|
+
__decorate([
|
|
96
|
+
(0, common_1.Get)(':providerId/login/callback'),
|
|
97
|
+
__param(0, (0, common_1.Param)('providerId')),
|
|
98
|
+
__param(1, (0, common_1.Req)()),
|
|
99
|
+
__param(2, (0, common_1.Res)()),
|
|
100
|
+
__metadata("design:type", Function),
|
|
101
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
102
|
+
__metadata("design:returntype", Promise)
|
|
103
|
+
], OidcController.prototype, "callback", null);
|
|
104
|
+
OidcController = __decorate([
|
|
105
|
+
(0, common_1.Controller)('api/v6/oidc'),
|
|
106
|
+
__metadata("design:paramtypes", [oidc_service_1.OidcService,
|
|
107
|
+
core_1.AuthService])
|
|
108
|
+
], OidcController);
|
|
109
|
+
exports.OidcController = OidcController;
|
|
110
|
+
//# sourceMappingURL=oidc.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.controller.js","sourceRoot":"","sources":["../../src/oidc/oidc.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const testing_1 = require("@nestjs/testing");
|
|
4
|
+
const oidc_controller_1 = require("./oidc.controller");
|
|
5
|
+
describe('OidcController', () => {
|
|
6
|
+
let controller;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
const module = await testing_1.Test.createTestingModule({
|
|
9
|
+
controllers: [oidc_controller_1.OidcController],
|
|
10
|
+
}).compile();
|
|
11
|
+
controller = module.get(oidc_controller_1.OidcController);
|
|
12
|
+
});
|
|
13
|
+
it('should be defined', () => {
|
|
14
|
+
expect(controller).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=oidc.controller.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.controller.spec.js","sourceRoot":"","sources":["../../src/oidc/oidc.controller.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AACtD,uDAAmD;AAEnD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,UAA0B,CAAC;IAE/B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC3D,WAAW,EAAE,CAAC,gCAAc,CAAC;SAC9B,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,UAAU,GAAG,MAAM,CAAC,GAAG,CAAiB,gCAAc,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OidcModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const core_1 = require("@builder6/core");
|
|
12
|
+
const oidc_service_1 = require("./oidc.service");
|
|
13
|
+
const oidc_controller_1 = require("./oidc.controller");
|
|
14
|
+
let OidcModule = class OidcModule {
|
|
15
|
+
};
|
|
16
|
+
OidcModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [core_1.AuthModule],
|
|
19
|
+
providers: [oidc_service_1.OidcService],
|
|
20
|
+
controllers: [oidc_controller_1.OidcController],
|
|
21
|
+
})
|
|
22
|
+
], OidcModule);
|
|
23
|
+
exports.OidcModule = OidcModule;
|
|
24
|
+
//# sourceMappingURL=oidc.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.module.js","sourceRoot":"","sources":["../../src/oidc/oidc.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yCAA4C;AAC5C,iDAA6C;AAC7C,uDAAmD;AAO5C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,UAAU;IALtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,CAAC;QACrB,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,WAAW,EAAE,CAAC,gCAAc,CAAC;KAC9B,CAAC;GACW,UAAU,CAAG;AAAb,gCAAU"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
export declare class OidcService {
|
|
3
|
+
private configService;
|
|
4
|
+
constructor(configService: ConfigService);
|
|
5
|
+
getProviderFromDB(providerId: string): Promise<{
|
|
6
|
+
issuer: any;
|
|
7
|
+
config_url: any;
|
|
8
|
+
client_id: any;
|
|
9
|
+
client_secret: any;
|
|
10
|
+
redirect_uri: string;
|
|
11
|
+
scope: any;
|
|
12
|
+
state: string;
|
|
13
|
+
nonce: string;
|
|
14
|
+
code_challenge_method: string;
|
|
15
|
+
code_verifier: string;
|
|
16
|
+
code_challenge: string;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OidcService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const config_1 = require("@nestjs/config");
|
|
15
|
+
const openid_client_1 = require("openid-client");
|
|
16
|
+
let OidcService = class OidcService {
|
|
17
|
+
constructor(configService) {
|
|
18
|
+
this.configService = configService;
|
|
19
|
+
}
|
|
20
|
+
async getProviderFromDB(providerId) {
|
|
21
|
+
const code_challenge_method = 'S256';
|
|
22
|
+
const code_verifier = openid_client_1.generators.codeVerifier();
|
|
23
|
+
const code_challenge = openid_client_1.generators.codeChallenge(code_verifier);
|
|
24
|
+
const state = openid_client_1.generators.random();
|
|
25
|
+
const nonce = openid_client_1.generators.random();
|
|
26
|
+
return {
|
|
27
|
+
issuer: this.configService.get('oidc.issuer'),
|
|
28
|
+
config_url: this.configService.get('oidc.config.url'),
|
|
29
|
+
client_id: this.configService.get('oidc.client.id'),
|
|
30
|
+
client_secret: this.configService.get('oidc.client.secret'),
|
|
31
|
+
redirect_uri: `${this.configService.get('host')}/api/v6/oidc/${providerId}/login/callback`,
|
|
32
|
+
scope: this.configService.get('oidc.scope') || 'openid email profile',
|
|
33
|
+
state,
|
|
34
|
+
nonce,
|
|
35
|
+
code_challenge_method,
|
|
36
|
+
code_verifier,
|
|
37
|
+
code_challenge,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
OidcService = __decorate([
|
|
42
|
+
(0, common_1.Injectable)(),
|
|
43
|
+
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
44
|
+
], OidcService);
|
|
45
|
+
exports.OidcService = OidcService;
|
|
46
|
+
//# sourceMappingURL=oidc.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.service.js","sourceRoot":"","sources":["../../src/oidc/oidc.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAC/C,iDAA2C;AAGpC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IACpD,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QACxC,MAAM,qBAAqB,GAAG,MAAM,CAAC;QACrC,MAAM,aAAa,GAAG,0BAAU,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,0BAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,0BAAU,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,0BAAU,CAAC,MAAM,EAAE,CAAC;QAGlC,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACnD,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC;YAC3D,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,UAAU,iBAAiB;YAC1F,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,sBAAsB;YACrE,KAAK;YACL,KAAK;YACL,qBAAqB;YACrB,aAAa;YACb,cAAc;SACf,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEwB,sBAAa;GADrC,WAAW,CAwBvB;AAxBY,kCAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const testing_1 = require("@nestjs/testing");
|
|
4
|
+
const oidc_service_1 = require("./oidc.service");
|
|
5
|
+
describe('OidcService', () => {
|
|
6
|
+
let service;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
const module = await testing_1.Test.createTestingModule({
|
|
9
|
+
providers: [oidc_service_1.OidcService],
|
|
10
|
+
}).compile();
|
|
11
|
+
service = module.get(oidc_service_1.OidcService);
|
|
12
|
+
});
|
|
13
|
+
it('should be defined', () => {
|
|
14
|
+
expect(service).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=oidc.service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.service.spec.js","sourceRoot":"","sources":["../../src/oidc/oidc.service.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AACtD,iDAA6C;AAE7C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAoB,CAAC;IAEzB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE,CAAC,0BAAW,CAAC;SACzB,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,GAAG,MAAM,CAAC,GAAG,CAAc,0BAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@builder6/oidc",
|
|
3
|
+
"version": "0.14.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
11
|
+
"build": "rimraf dist && tsc",
|
|
12
|
+
"build:watch": "rimraf dist && tsc --watch"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@builder6/core": "0.14.0",
|
|
16
|
+
"bluebird": "^3.7.2",
|
|
17
|
+
"lodash": "^4.17.5",
|
|
18
|
+
"nodemailer": "^6.9.16"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"gitHead": "7770aaa5d223a460c1e953c15337faf217c24411",
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/bluebird": "^3.5.42"
|
|
26
|
+
}
|
|
27
|
+
}
|