@social.dev/server-sdk 0.0.1-alpha.4 → 0.0.1-alpha.40
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 +691 -40
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/auth/auth.controller.d.ts +2 -0
- package/dist/auth/auth.controller.js +26 -0
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.js +2 -0
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +4 -8
- package/dist/auth/auth.service.js +6 -18
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/login-success.dto.d.ts +1 -1
- package/dist/auth/dto/login-success.dto.js +3 -3
- package/dist/auth/dto/login-success.dto.js.map +1 -1
- package/dist/auth/enums/auth-method.enum.d.ts +2 -2
- package/dist/auth/enums/auth-method.enum.js +2 -2
- package/dist/auth/enums/auth-method.enum.js.map +1 -1
- package/dist/auth/oidc/dto/requests.d.ts +6 -0
- package/dist/auth/oidc/dto/requests.js +47 -0
- package/dist/auth/oidc/dto/requests.js.map +1 -0
- package/dist/auth/oidc/dto/responses.js +1 -1
- package/dist/auth/oidc/dto/responses.js.map +1 -1
- package/dist/auth/oidc/oidc.controller.d.ts +7 -2
- package/dist/auth/oidc/oidc.controller.js +31 -17
- package/dist/auth/oidc/oidc.controller.js.map +1 -1
- package/dist/auth/oidc/oidc.module.js +2 -0
- package/dist/auth/oidc/oidc.module.js.map +1 -1
- package/dist/auth/oidc/oidc.service.d.ts +13 -7
- package/dist/auth/oidc/oidc.service.js +38 -30
- package/dist/auth/oidc/oidc.service.js.map +1 -1
- package/dist/auth/session/session.controller.js +8 -3
- package/dist/auth/session/session.controller.js.map +1 -1
- package/dist/auth/session/session.service.d.ts +2 -2
- package/dist/auth/session/session.service.js +9 -5
- package/dist/auth/session/session.service.js.map +1 -1
- package/dist/bootstrap.d.ts +2 -1
- package/dist/bootstrap.js +3 -1
- package/dist/bootstrap.js.map +1 -1
- package/dist/chat/chat.controller.d.ts +1 -2
- package/dist/chat/chat.controller.js +8 -4
- package/dist/chat/chat.controller.js.map +1 -1
- package/dist/chat/chat.module.js +4 -0
- package/dist/chat/chat.module.js.map +1 -1
- package/dist/chat/chat.service.d.ts +8 -2
- package/dist/chat/chat.service.js +66 -16
- package/dist/chat/chat.service.js.map +1 -1
- package/dist/chat/dto/responses.dto.d.ts +4 -0
- package/dist/chat/dto/responses.dto.js +25 -1
- package/dist/chat/dto/responses.dto.js.map +1 -1
- package/dist/chat/entities/conversation-member.entity.js +1 -1
- package/dist/chat/entities/conversation-member.entity.js.map +1 -1
- package/dist/chat/entities/conversation.entity.d.ts +1 -0
- package/dist/chat/entities/conversation.entity.js +8 -1
- package/dist/chat/entities/conversation.entity.js.map +1 -1
- package/dist/chat/entities/message.entity.js.map +1 -1
- package/dist/common/decorators/api-paginated-response.d.ts +1 -1
- package/dist/common/decorators/api-paginated-response.js +2 -2
- package/dist/common/decorators/api-paginated-response.js.map +1 -1
- package/dist/common/dto/paginated-response.dto.d.ts +2 -0
- package/dist/common/dto/paginated-response.dto.js +14 -3
- package/dist/common/dto/paginated-response.dto.js.map +1 -1
- package/dist/community/community.acl.js.map +1 -1
- package/dist/community/community.controller.d.ts +1 -2
- package/dist/community/community.controller.js +9 -5
- package/dist/community/community.controller.js.map +1 -1
- package/dist/community/community.module.js +1 -0
- package/dist/community/community.module.js.map +1 -1
- package/dist/community/community.service.d.ts +10 -3
- package/dist/community/community.service.js +30 -12
- package/dist/community/community.service.js.map +1 -1
- package/dist/configs/configs.module.js +3 -0
- package/dist/configs/configs.module.js.map +1 -1
- package/dist/configs/configs.service.d.ts +20 -0
- package/dist/configs/configs.service.js +14 -1
- package/dist/configs/configs.service.js.map +1 -1
- package/dist/core/hook/hook.module.d.ts +4 -0
- package/dist/core/hook/hook.module.js +30 -0
- package/dist/core/hook/hook.module.js.map +1 -0
- package/dist/core/hook/hook.service.d.ts +7 -0
- package/dist/core/{plugin/plugin-hook.service.js → hook/hook.service.js} +10 -10
- package/dist/core/hook/hook.service.js.map +1 -0
- package/dist/core/plugin/plugin.module.js +7 -5
- package/dist/core/plugin/plugin.module.js.map +1 -1
- package/dist/db.js +1 -1
- package/dist/db.js.map +1 -1
- package/dist/file-storage/file-storage.service.d.ts +1 -1
- package/dist/file-storage/file-storage.service.js +6 -6
- package/dist/file-storage/file-storage.service.js.map +1 -1
- package/dist/file-storage/utils.js +1 -1
- package/dist/file-storage/utils.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/media/entities/media.entity.js +1 -1
- package/dist/media/entities/media.entity.js.map +1 -1
- package/dist/media/media.acl.d.ts +2 -4
- package/dist/media/media.acl.js +3 -0
- package/dist/media/media.acl.js.map +1 -1
- package/dist/media/media.service.js +15 -12
- package/dist/media/media.service.js.map +1 -1
- package/dist/migrations/1757061785934-PushNotificationTokens.d.ts +6 -0
- package/dist/migrations/1757061785934-PushNotificationTokens.js +20 -0
- package/dist/migrations/1757061785934-PushNotificationTokens.js.map +1 -0
- package/dist/migrations/1758623241397-AddUserTimestamps.d.ts +6 -0
- package/dist/migrations/1758623241397-AddUserTimestamps.js +16 -0
- package/dist/migrations/1758623241397-AddUserTimestamps.js.map +1 -0
- package/dist/{1756201302119-migrations.d.ts → migrations/1758704603161-UserFollows.d.ts} +1 -1
- package/dist/migrations/1758704603161-UserFollows.js +18 -0
- package/dist/migrations/1758704603161-UserFollows.js.map +1 -0
- package/dist/network/entities/network.entity.js +0 -3
- package/dist/network/entities/network.entity.js.map +1 -1
- package/dist/network/network.middleware.js +2 -2
- package/dist/network/network.middleware.js.map +1 -1
- package/dist/network/network.module.js +2 -1
- package/dist/network/network.module.js.map +1 -1
- package/dist/network/network.service.d.ts +5 -2
- package/dist/network/network.service.js +23 -6
- package/dist/network/network.service.js.map +1 -1
- package/dist/notification/dto/delete-push-token.dto.d.ts +3 -0
- package/dist/{common/entities/base.repository.js → notification/dto/delete-push-token.dto.js} +14 -20
- package/dist/notification/dto/delete-push-token.dto.js.map +1 -0
- package/dist/notification/dto/register-push-token.dto.d.ts +5 -0
- package/dist/notification/dto/register-push-token.dto.js +38 -0
- package/dist/notification/dto/register-push-token.dto.js.map +1 -0
- package/dist/notification/entities/push-token.entity.d.ts +11 -0
- package/dist/notification/entities/push-token.entity.js +60 -0
- package/dist/notification/entities/push-token.entity.js.map +1 -0
- package/dist/notification/enums/push-service.enum.d.ts +6 -0
- package/dist/notification/enums/push-service.enum.js +11 -0
- package/dist/notification/enums/push-service.enum.js.map +1 -0
- package/dist/notification/hook-listener.service.d.ts +13 -0
- package/dist/notification/hook-listener.service.js +58 -0
- package/dist/notification/hook-listener.service.js.map +1 -0
- package/dist/notification/notification.module.d.ts +2 -0
- package/dist/notification/notification.module.js +24 -0
- package/dist/notification/notification.module.js.map +1 -0
- package/dist/notification/push-notification.controller.d.ts +9 -0
- package/dist/notification/push-notification.controller.js +69 -0
- package/dist/notification/push-notification.controller.js.map +1 -0
- package/dist/notification/push-notification.module.d.ts +2 -0
- package/dist/notification/push-notification.module.js +27 -0
- package/dist/notification/push-notification.module.js.map +1 -0
- package/dist/notification/push-notification.service.d.ts +22 -0
- package/dist/notification/push-notification.service.js +84 -0
- package/dist/notification/push-notification.service.js.map +1 -0
- package/dist/post/post.controller.d.ts +3 -2
- package/dist/post/post.controller.js +28 -8
- package/dist/post/post.controller.js.map +1 -1
- package/dist/post/post.module.js +2 -0
- package/dist/post/post.module.js.map +1 -1
- package/dist/post/post.service.d.ts +7 -3
- package/dist/post/post.service.js +18 -8
- package/dist/post/post.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/user/avatar/avatar.controller.d.ts +10 -0
- package/dist/user/avatar/avatar.controller.js +89 -0
- package/dist/user/avatar/avatar.controller.js.map +1 -0
- package/dist/user/avatar/avatar.service.d.ts +12 -0
- package/dist/user/avatar/avatar.service.js +57 -0
- package/dist/user/avatar/avatar.service.js.map +1 -0
- package/dist/user/constants.d.ts +1 -0
- package/dist/user/constants.js +5 -0
- package/dist/user/constants.js.map +1 -0
- package/dist/user/dto/update-profile.dto.d.ts +3 -0
- package/dist/user/dto/update-profile.dto.js +26 -0
- package/dist/user/dto/update-profile.dto.js.map +1 -0
- package/dist/user/dto/user-response.dto.d.ts +6 -0
- package/dist/user/dto/user-response.dto.js +37 -1
- package/dist/user/dto/user-response.dto.js.map +1 -1
- package/dist/user/dto/user.dto.d.ts +8 -0
- package/dist/user/dto/user.dto.js +21 -0
- package/dist/user/dto/user.dto.js.map +1 -0
- package/dist/user/entities/user.entity.d.ts +4 -0
- package/dist/user/entities/user.entity.js +19 -1
- package/dist/user/entities/user.entity.js.map +1 -1
- package/dist/user/follow/dto/follow-response.dto.d.ts +4 -0
- package/dist/user/follow/dto/follow-response.dto.js +38 -0
- package/dist/user/follow/dto/follow-response.dto.js.map +1 -0
- package/dist/user/follow/dto/follow.dto.d.ts +4 -0
- package/dist/user/follow/dto/follow.dto.js +26 -0
- package/dist/user/follow/dto/follow.dto.js.map +1 -0
- package/dist/user/follow/entities/follow.entity.d.ts +10 -0
- package/dist/user/follow/entities/follow.entity.js +60 -0
- package/dist/user/follow/entities/follow.entity.js.map +1 -0
- package/dist/user/follow/follow.controller.d.ts +9 -0
- package/dist/user/follow/follow.controller.js +56 -0
- package/dist/user/follow/follow.controller.js.map +1 -0
- package/dist/user/follow/follow.module.d.ts +2 -0
- package/dist/user/follow/follow.module.js +26 -0
- package/dist/user/follow/follow.module.js.map +1 -0
- package/dist/user/follow/follow.service.d.ts +11 -0
- package/dist/user/follow/follow.service.js +56 -0
- package/dist/user/follow/follow.service.js.map +1 -0
- package/dist/user/user.controller.d.ts +6 -2
- package/dist/user/user.controller.js +47 -8
- package/dist/user/user.controller.js.map +1 -1
- package/dist/user/user.module.js +12 -3
- package/dist/user/user.module.js.map +1 -1
- package/dist/user/user.service.d.ts +12 -5
- package/dist/user/user.service.js +48 -10
- package/dist/user/user.service.js.map +1 -1
- package/package.json +3 -2
- package/dist/1756201302119-migrations.js +0 -84
- package/dist/1756201302119-migrations.js.map +0 -1
- package/dist/auth/enums/auth-methods.enum.d.ts +0 -2
- package/dist/auth/enums/auth-methods.enum.js +0 -7
- package/dist/auth/enums/auth-methods.enum.js.map +0 -1
- package/dist/auth/session/auth.controller.d.ts +0 -10
- package/dist/auth/session/auth.controller.js +0 -92
- package/dist/auth/session/auth.controller.js.map +0 -1
- package/dist/auth/session/auth.service.d.ts +0 -12
- package/dist/auth/session/auth.service.js +0 -46
- package/dist/auth/session/auth.service.js.map +0 -1
- package/dist/common/constants.d.ts +0 -1
- package/dist/common/constants.js +0 -5
- package/dist/common/constants.js.map +0 -1
- package/dist/common/entities/base.repository.d.ts +0 -7
- package/dist/common/entities/base.repository.js.map +0 -1
- package/dist/core/plugin/plugin-hook.service.d.ts +0 -7
- package/dist/core/plugin/plugin-hook.service.js.map +0 -1
- package/dist/user/dto/update-user.dto.d.ts +0 -5
- package/dist/user/dto/update-user.dto.js +0 -13
- package/dist/user/dto/update-user.dto.js.map +0 -1
package/dist/app.module.js
CHANGED
|
@@ -33,6 +33,7 @@ const core_module_1 = require("./core/core.module");
|
|
|
33
33
|
const context_module_1 = require("./core/context/context.module");
|
|
34
34
|
const typeorm_2 = require("typeorm");
|
|
35
35
|
const db_1 = __importDefault(require("./db"));
|
|
36
|
+
const notification_module_1 = require("./notification/notification.module");
|
|
36
37
|
let AppModule = class AppModule {
|
|
37
38
|
contextService;
|
|
38
39
|
dataSource;
|
|
@@ -67,6 +68,7 @@ exports.AppModule = AppModule = __decorate([
|
|
|
67
68
|
post_module_1.PostModule,
|
|
68
69
|
media_module_1.MediaModule,
|
|
69
70
|
chat_module_1.ChatModule,
|
|
71
|
+
notification_module_1.NotificationModule,
|
|
70
72
|
],
|
|
71
73
|
providers: [
|
|
72
74
|
{
|
package/dist/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,6CAAgD;AAChD,2CAA8C;AAC9C,oDAAgD;AAEhD,6DAAyD;AAEzD,mEAA+D;AAC/D,oDAAgD;AAEhD,uCAA0D;AAC1D,oDAAgD;AAChD,4DAAwD;AACxD,6DAAyD;AACzD,qEAAwE;AACxE,uDAAmD;AACnD,oDAAiD;AACjD,oEAAgE;AAChE,oDAAgD;AAChD,oDAAgD;AAChD,kEAA8D;AAC9D,qCAAqC;AACrC,8CAAmC;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,6CAAgD;AAChD,2CAA8C;AAC9C,oDAAgD;AAEhD,6DAAyD;AAEzD,mEAA+D;AAC/D,oDAAgD;AAEhD,uCAA0D;AAC1D,oDAAgD;AAChD,4DAAwD;AACxD,6DAAyD;AACzD,qEAAwE;AACxE,uDAAmD;AACnD,oDAAiD;AACjD,oEAAgE;AAChE,oDAAgD;AAChD,oDAAgD;AAChD,kEAA8D;AAC9D,qCAAqC;AACrC,8CAAmC;AACnC,4EAAwE;AAkCjE,IAAM,SAAS,GAAf,MAAM,SAAS;IAED;IACA;IAFnB,YACmB,cAA8B,EAC9B,UAAsB;QADtB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAEJ,YAAY;QAEV,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,QAAQ,CAAC,KAAK,CAAC,6CAAwB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxD,QAAQ,CAAC,KAAK,CAAC,gCAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAfY,8BAAS;oBAAT,SAAS;IAhCrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,8BAAa;YACb,qBAAY,CAAC,OAAO,CAAC;gBACnB,WAAW,EAAE,YAAY;gBACzB,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,uBAAa,CAAC,OAAO,CAAC,YAAe,CAAC,OAAO,CAAC;YAC9C,wBAAU;YACV,wBAAU;YACV,8BAAa;YACb,kCAAe;YACf,wBAAU;YACV,8BAAa;YACb,wBAAU;YACV,0BAAW;YACX,wBAAU;YACV,wCAAkB;SACnB;QACD,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,sBAAe;gBACxB,MAAM,EAAE,CAAC,gBAAS,CAAC;gBACnB,UAAU,EAAE,CAAC,SAAoB,EAAE,EAAE;oBACnC,OAAO,IAAI,mCAA0B,CAAC,SAAS,EAAE;wBAC/C,wBAAwB,EAAE,IAAI;wBAC9B,uBAAuB,EAAE,IAAI;qBAC9B,CAAC,CAAC;gBACL,CAAC;aACF;SACF;KACF,CAAC;qCAGmC,gCAAc;QAClB,oBAAU;GAH9B,SAAS,CAerB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AuthService } from './auth.service';
|
|
2
|
+
import { AuthMethodEnum } from './enums/auth-method.enum';
|
|
2
3
|
export declare class AuthController {
|
|
3
4
|
private authService;
|
|
4
5
|
constructor(authService: AuthService);
|
|
6
|
+
listAuthMethod(): AuthMethodEnum[];
|
|
5
7
|
getProfile(req: any): any;
|
|
6
8
|
}
|
|
@@ -17,16 +17,41 @@ const openapi = require("@nestjs/swagger");
|
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const auth_service_1 = require("./auth.service");
|
|
19
19
|
const auth_guard_1 = require("./auth.guard");
|
|
20
|
+
const auth_method_enum_1 = require("./enums/auth-method.enum");
|
|
21
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
22
|
let AuthController = class AuthController {
|
|
21
23
|
authService;
|
|
22
24
|
constructor(authService) {
|
|
23
25
|
this.authService = authService;
|
|
24
26
|
}
|
|
27
|
+
listAuthMethod() {
|
|
28
|
+
return this.authService.getAuthMethods();
|
|
29
|
+
}
|
|
25
30
|
getProfile(req) {
|
|
26
31
|
return req.user;
|
|
27
32
|
}
|
|
28
33
|
};
|
|
29
34
|
exports.AuthController = AuthController;
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, common_1.Get)('auth.method.list'),
|
|
37
|
+
(0, swagger_1.ApiOperation)({ summary: 'List available authentication methods' }),
|
|
38
|
+
(0, swagger_1.ApiResponse)({
|
|
39
|
+
status: 200,
|
|
40
|
+
description: 'List of available authentication methods',
|
|
41
|
+
schema: {
|
|
42
|
+
type: 'array',
|
|
43
|
+
items: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
enum: Object.values(auth_method_enum_1.AuthMethodEnum),
|
|
46
|
+
},
|
|
47
|
+
example: [auth_method_enum_1.AuthMethodEnum.Password, auth_method_enum_1.AuthMethodEnum.Oidc],
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
openapi.ApiResponse({ status: 200 }),
|
|
51
|
+
__metadata("design:type", Function),
|
|
52
|
+
__metadata("design:paramtypes", []),
|
|
53
|
+
__metadata("design:returntype", Array)
|
|
54
|
+
], AuthController.prototype, "listAuthMethod", null);
|
|
30
55
|
__decorate([
|
|
31
56
|
(0, common_1.UseGuards)(auth_guard_1.AuthGuard),
|
|
32
57
|
(0, common_1.Get)('auth.profile.info'),
|
|
@@ -37,6 +62,7 @@ __decorate([
|
|
|
37
62
|
__metadata("design:returntype", void 0)
|
|
38
63
|
], AuthController.prototype, "getProfile", null);
|
|
39
64
|
exports.AuthController = AuthController = __decorate([
|
|
65
|
+
(0, swagger_1.ApiTags)('Auth'),
|
|
40
66
|
(0, common_1.Controller)(),
|
|
41
67
|
__metadata("design:paramtypes", [auth_service_1.AuthService])
|
|
42
68
|
], AuthController);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA2E;AAC3E,iDAA6C;AAC7C,6CAAyC;AACzC,+DAA0D;AAC1D,6CAAqE;AAI9D,IAAM,cAAc,GAApB,MAAM,cAAc;IACL;IAApB,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAgBhD,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAID,UAAU,CAAY,GAAG;QACvB,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;CACF,CAAA;AA1BY,wCAAc;AAiBzB;IAdC,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IAClE,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0CAA0C;QACvD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,iCAAc,CAAC;aACpC;YACD,OAAO,EAAE,CAAC,iCAAc,CAAC,QAAQ,EAAE,iCAAc,CAAC,IAAI,CAAC;SACxD;KACF,CAAC;;;;;oDAGD;AAID;IAFC,IAAA,kBAAS,EAAC,sBAAS,CAAC;IACpB,IAAA,YAAG,EAAC,mBAAmB,CAAC;;IACb,WAAA,IAAA,gBAAO,GAAE,CAAA;;;;gDAEpB;yBAzBU,cAAc;IAF1B,IAAA,iBAAO,EAAC,MAAM,CAAC;IACf,IAAA,mBAAU,GAAE;qCAEsB,0BAAW;GADjC,cAAc,CA0B1B"}
|
package/dist/auth/auth.module.js
CHANGED
|
@@ -14,6 +14,7 @@ const user_module_1 = require("../user/user.module");
|
|
|
14
14
|
const jwt_1 = require("@nestjs/jwt");
|
|
15
15
|
const constants_1 = require("./constants");
|
|
16
16
|
const oidc_module_1 = require("./oidc/oidc.module");
|
|
17
|
+
const configs_module_1 = require("../configs/configs.module");
|
|
17
18
|
let AuthModule = class AuthModule {
|
|
18
19
|
};
|
|
19
20
|
exports.AuthModule = AuthModule;
|
|
@@ -26,6 +27,7 @@ exports.AuthModule = AuthModule = __decorate([
|
|
|
26
27
|
secret: constants_1.jwtConstants.secret,
|
|
27
28
|
signOptions: { expiresIn: '30d' },
|
|
28
29
|
}),
|
|
30
|
+
configs_module_1.ConfigsModule,
|
|
29
31
|
oidc_module_1.OidcModule,
|
|
30
32
|
],
|
|
31
33
|
controllers: [auth_controller_1.AuthController],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,iDAA6C;AAC7C,qDAAgD;AAChD,qCAAwC;AACxC,2CAA2C;AAC3C,oDAAgD;
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,iDAA6C;AAC7C,qDAAgD;AAChD,qCAAwC;AACxC,2CAA2C;AAC3C,oDAAgD;AAChD,8DAAyD;AAgBlD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAdtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,eAAS,CAAC,QAAQ,CAAC;gBACjB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,wBAAY,CAAC,MAAM;gBAC3B,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;aAClC,CAAC;YACF,8BAAa;YACb,wBAAU;SACX;QACD,WAAW,EAAE,CAAC,gCAAc,CAAC;QAC7B,SAAS,EAAE,CAAC,0BAAW,CAAC;KACzB,CAAC;GACW,UAAU,CAAG"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { UserService } from '../user/user.service';
|
|
2
|
-
import { JwtService } from '@nestjs/jwt';
|
|
3
1
|
import { AuthMethodEnum } from './enums/auth-method.enum';
|
|
2
|
+
import { ConfigsService } from '~/configs/configs.service';
|
|
4
3
|
export declare class AuthService {
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
getAuthMethods(): {
|
|
9
|
-
method: AuthMethodEnum;
|
|
10
|
-
}[];
|
|
4
|
+
private configs;
|
|
5
|
+
constructor(configs: ConfigsService);
|
|
6
|
+
getAuthMethods(): AuthMethodEnum[];
|
|
11
7
|
}
|
|
@@ -11,31 +11,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AuthService = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
-
const
|
|
15
|
-
const jwt_1 = require("@nestjs/jwt");
|
|
16
|
-
const auth_method_enum_1 = require("./enums/auth-method.enum");
|
|
14
|
+
const configs_service_1 = require("../configs/configs.service");
|
|
17
15
|
let AuthService = class AuthService {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.userService = userService;
|
|
22
|
-
this.jwtService = jwtService;
|
|
16
|
+
configs;
|
|
17
|
+
constructor(configs) {
|
|
18
|
+
this.configs = configs;
|
|
23
19
|
}
|
|
24
20
|
getAuthMethods() {
|
|
25
|
-
return [
|
|
26
|
-
{
|
|
27
|
-
method: auth_method_enum_1.AuthMethodEnum.Password,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
method: auth_method_enum_1.AuthMethodEnum.Oidc,
|
|
31
|
-
},
|
|
32
|
-
];
|
|
21
|
+
return this.configs.get('auth')?.methods || [];
|
|
33
22
|
}
|
|
34
23
|
};
|
|
35
24
|
exports.AuthService = AuthService;
|
|
36
25
|
exports.AuthService = AuthService = __decorate([
|
|
37
26
|
(0, common_1.Injectable)(),
|
|
38
|
-
__metadata("design:paramtypes", [
|
|
39
|
-
jwt_1.JwtService])
|
|
27
|
+
__metadata("design:paramtypes", [configs_service_1.ConfigsService])
|
|
40
28
|
], AuthService);
|
|
41
29
|
//# sourceMappingURL=auth.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;
|
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AAKnE,gEAA2D;AAGpD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACF;IAApB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAK/C,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IACjD,CAAC;CACF,CAAA;AATY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEkB,gCAAc;GADhC,WAAW,CASvB"}
|
|
@@ -14,17 +14,17 @@ const openapi = require("@nestjs/swagger");
|
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
15
|
const user_response_dto_1 = require("../../user/dto/user-response.dto");
|
|
16
16
|
class LoginSuccessResponseDto {
|
|
17
|
-
|
|
17
|
+
authToken;
|
|
18
18
|
user;
|
|
19
19
|
static _OPENAPI_METADATA_FACTORY() {
|
|
20
|
-
return {
|
|
20
|
+
return { authToken: { required: true, type: () => String }, user: { required: true, type: () => require("../../user/dto/user-response.dto").UserResponseDto } };
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
exports.LoginSuccessResponseDto = LoginSuccessResponseDto;
|
|
24
24
|
__decorate([
|
|
25
25
|
(0, swagger_1.ApiProperty)({ description: 'The session token' }),
|
|
26
26
|
__metadata("design:type", String)
|
|
27
|
-
], LoginSuccessResponseDto.prototype, "
|
|
27
|
+
], LoginSuccessResponseDto.prototype, "authToken", void 0);
|
|
28
28
|
__decorate([
|
|
29
29
|
(0, swagger_1.ApiProperty)({
|
|
30
30
|
description: 'User information',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-success.dto.js","sourceRoot":"","sources":["../../../src/auth/dto/login-success.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,wEAA+D;AAG/D,MAAa,uBAAuB;IAElC,
|
|
1
|
+
{"version":3,"file":"login-success.dto.js","sourceRoot":"","sources":["../../../src/auth/dto/login-success.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,wEAA+D;AAG/D,MAAa,uBAAuB;IAElC,SAAS,CAAS;IAWlB,IAAI,CAAkB;;;;CACvB;AAdD,0DAcC;AAZC;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;;0DAChC;AAWlB;IATC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE;YACP,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,CAAC;SACX;KACF,CAAC;8BACI,mCAAe;qDAAC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AuthMethodEnum = void 0;
|
|
4
4
|
var AuthMethodEnum;
|
|
5
5
|
(function (AuthMethodEnum) {
|
|
6
|
-
AuthMethodEnum[
|
|
7
|
-
AuthMethodEnum[
|
|
6
|
+
AuthMethodEnum["Password"] = "PASSWORD";
|
|
7
|
+
AuthMethodEnum["Oidc"] = "OIDC";
|
|
8
8
|
})(AuthMethodEnum || (exports.AuthMethodEnum = AuthMethodEnum = {}));
|
|
9
9
|
//# sourceMappingURL=auth-method.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-method.enum.js","sourceRoot":"","sources":["../../../src/auth/enums/auth-method.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAKX;AALD,WAAY,cAAc;IAExB,
|
|
1
|
+
{"version":3,"file":"auth-method.enum.js","sourceRoot":"","sources":["../../../src/auth/enums/auth-method.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAKX;AALD,WAAY,cAAc;IAExB,uCAAqB,CAAA;IAErB,+BAAa,CAAA;AACf,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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.OidcExchangeCodeDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
class OidcExchangeCodeDto {
|
|
15
|
+
code;
|
|
16
|
+
provider;
|
|
17
|
+
redirectUri;
|
|
18
|
+
codeVerifier;
|
|
19
|
+
}
|
|
20
|
+
exports.OidcExchangeCodeDto = OidcExchangeCodeDto;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, swagger_1.ApiProperty)({
|
|
23
|
+
description: 'Authorization code, obtained from the authorization flow',
|
|
24
|
+
}),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], OidcExchangeCodeDto.prototype, "code", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, swagger_1.ApiProperty)({
|
|
29
|
+
description: 'OIDC provider ID, relevant to the code that was obtained',
|
|
30
|
+
}),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], OidcExchangeCodeDto.prototype, "provider", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, swagger_1.ApiProperty)({
|
|
35
|
+
description: 'Redirect Uri that was used to obtain the authorization code',
|
|
36
|
+
required: false,
|
|
37
|
+
}),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], OidcExchangeCodeDto.prototype, "redirectUri", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, swagger_1.ApiProperty)({
|
|
42
|
+
description: 'The same code_verifier that was used to obtain the authorization code. Required if PKCE was used in the authorization code grant request',
|
|
43
|
+
required: false,
|
|
44
|
+
}),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], OidcExchangeCodeDto.prototype, "codeVerifier", void 0);
|
|
47
|
+
//# sourceMappingURL=requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../../src/auth/oidc/dto/requests.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAE9C,MAAa,mBAAmB;IAI9B,IAAI,CAAS;IAKb,QAAQ,CAAS;IAMjB,WAAW,CAAS;IAOpB,YAAY,CAAS;CACtB;AAvBD,kDAuBC;AAnBC;IAHC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0DAA0D;KACxE,CAAC;;iDACW;AAKb;IAHC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,0DAA0D;KACxE,CAAC;;qDACe;AAMjB;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6DAA6D;QAC1E,QAAQ,EAAE,KAAK;KAChB,CAAC;;wDACkB;AAOpB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,0IAA0I;QAC5I,QAAQ,EAAE,KAAK;KAChB,CAAC;;yDACmB"}
|
|
@@ -37,7 +37,7 @@ __decorate([
|
|
|
37
37
|
description: 'Url to redirect the user to in order to start the OIDC flow',
|
|
38
38
|
}),
|
|
39
39
|
(0, class_transformer_1.Transform)(({ obj }) => {
|
|
40
|
-
const baseUrl = context_1.Context.getNetwork().getBaseUrl() + 'api/auth.oidc.
|
|
40
|
+
const baseUrl = context_1.Context.getNetwork().getBaseUrl() + 'api/auth.oidc.authorize';
|
|
41
41
|
return baseUrl + '?id=' + obj.id;
|
|
42
42
|
}),
|
|
43
43
|
__metadata("design:type", String)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../src/auth/oidc/dto/responses.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAsD;AACtD,2DAAiD;AAEjD,MAAa,uBAAuB;IAGlC,EAAE,CAAS;IAMX,IAAI,CAAS;
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../src/auth/oidc/dto/responses.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAsD;AACtD,2DAAiD;AAEjD,MAAa,uBAAuB;IAGlC,EAAE,CAAS;IAMX,IAAI,CAAS;IAYb,QAAQ,CAAS;CAClB;AAtBD,0DAsBC;AAnBC;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;mDAC3C;AAMX;IAJC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4DAA4D;KAC1E,CAAC;;qDACW;AAYb;IAVC,IAAA,0BAAM,GAAE;IACR,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6DAA6D;KAC3E,CAAC;IACD,IAAA,6BAAS,EAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACrB,MAAM,OAAO,GACX,iBAAO,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,GAAG,yBAAyB,CAAC;QAEhE,OAAO,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;IACnC,CAAC,CAAC;;yDACe"}
|
|
@@ -2,11 +2,16 @@ import { Response } from 'express';
|
|
|
2
2
|
import { OidcService } from './oidc.service';
|
|
3
3
|
import { OidcProviderResponseDto } from './dto/responses';
|
|
4
4
|
import { SessionService } from '../session/session.service';
|
|
5
|
+
import { OidcExchangeCodeDto } from './dto/requests';
|
|
6
|
+
import { UserResponseDto } from '~/user/dto/user-response.dto';
|
|
5
7
|
export declare class OidcController {
|
|
6
8
|
private service;
|
|
7
9
|
private sessions;
|
|
8
10
|
constructor(service: OidcService, sessions: SessionService);
|
|
9
11
|
listOidcProviders(): OidcProviderResponseDto[];
|
|
10
|
-
login(id: string, res: Response): Promise<void>;
|
|
11
|
-
|
|
12
|
+
login(id: string, params: Record<string, string>, res: Response): Promise<void>;
|
|
13
|
+
exchangeCode(dto: OidcExchangeCodeDto, res: Response): Promise<{
|
|
14
|
+
authToken: string;
|
|
15
|
+
user: UserResponseDto;
|
|
16
|
+
}>;
|
|
12
17
|
}
|
|
@@ -20,6 +20,8 @@ const oidc_service_1 = require("./oidc.service");
|
|
|
20
20
|
const class_transformer_1 = require("class-transformer");
|
|
21
21
|
const responses_1 = require("./dto/responses");
|
|
22
22
|
const session_service_1 = require("../session/session.service");
|
|
23
|
+
const requests_1 = require("./dto/requests");
|
|
24
|
+
const user_response_dto_1 = require("../../user/dto/user-response.dto");
|
|
23
25
|
let OidcController = class OidcController {
|
|
24
26
|
service;
|
|
25
27
|
sessions;
|
|
@@ -32,16 +34,26 @@ let OidcController = class OidcController {
|
|
|
32
34
|
.getProviders()
|
|
33
35
|
.map((p) => (0, class_transformer_1.plainToInstance)(responses_1.OidcProviderResponseDto, p));
|
|
34
36
|
}
|
|
35
|
-
async login(id, res) {
|
|
37
|
+
async login(id, params, res) {
|
|
36
38
|
const provider = this.service.getProviders()[0];
|
|
37
|
-
const url = await this.service.getAuthorizationUrl(provider, 'todo');
|
|
39
|
+
const url = await this.service.getAuthorizationUrl(provider, 'todo', params);
|
|
38
40
|
res.redirect(302, url);
|
|
39
41
|
}
|
|
40
|
-
async
|
|
42
|
+
async exchangeCode(dto, res) {
|
|
41
43
|
const provider = this.service.getProviders()[0];
|
|
42
|
-
const {
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const { authToken, user } = await this.service.processAuthorizationCode({
|
|
45
|
+
provider,
|
|
46
|
+
code: dto.code,
|
|
47
|
+
redirectUri: dto.redirectUri,
|
|
48
|
+
codeVerifier: dto.codeVerifier,
|
|
49
|
+
});
|
|
50
|
+
this.sessions.setSessionCookie(authToken, res);
|
|
51
|
+
return {
|
|
52
|
+
authToken,
|
|
53
|
+
user: (0, class_transformer_1.plainToInstance)(user_response_dto_1.UserResponseDto, user, {
|
|
54
|
+
excludeExtraneousValues: true,
|
|
55
|
+
}),
|
|
56
|
+
};
|
|
45
57
|
}
|
|
46
58
|
};
|
|
47
59
|
exports.OidcController = OidcController;
|
|
@@ -58,30 +70,32 @@ __decorate([
|
|
|
58
70
|
], OidcController.prototype, "listOidcProviders", null);
|
|
59
71
|
__decorate([
|
|
60
72
|
(0, swagger_1.ApiOperation)({
|
|
61
|
-
summary: 'Initiates an oidc
|
|
73
|
+
summary: 'Initiates an oidc authorization flow',
|
|
62
74
|
description: `This OIDC API method kicks off the login flow for a given provider.`,
|
|
63
75
|
}),
|
|
64
|
-
(0, common_1.Get)('auth.oidc.
|
|
76
|
+
(0, common_1.Get)('auth.oidc.authorize'),
|
|
65
77
|
openapi.ApiResponse({ status: 200 }),
|
|
66
78
|
__param(0, (0, common_1.Query)('id')),
|
|
67
|
-
__param(1, (0, common_1.
|
|
79
|
+
__param(1, (0, common_1.Query)()),
|
|
80
|
+
__param(2, (0, common_1.Res)()),
|
|
68
81
|
__metadata("design:type", Function),
|
|
69
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
82
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
70
83
|
__metadata("design:returntype", Promise)
|
|
71
84
|
], OidcController.prototype, "login", null);
|
|
72
85
|
__decorate([
|
|
73
86
|
(0, swagger_1.ApiOperation)({
|
|
74
|
-
summary: '
|
|
75
|
-
description: `This OIDC API method is to be used
|
|
87
|
+
summary: 'Exchange an OIDC Authorization Code for a Social.Dev session',
|
|
88
|
+
description: `This OIDC API method is to be used to exchange and OAuth2 Authorization Code, obtained from the OIDC authorization flow,
|
|
89
|
+
for a Social.Dev session.`,
|
|
76
90
|
}),
|
|
77
|
-
(0, common_1.
|
|
78
|
-
openapi.ApiResponse({ status:
|
|
79
|
-
__param(0, (0, common_1.
|
|
91
|
+
(0, common_1.Post)('auth.oidc.exchangeCode'),
|
|
92
|
+
openapi.ApiResponse({ status: 201 }),
|
|
93
|
+
__param(0, (0, common_1.Body)()),
|
|
80
94
|
__param(1, (0, common_1.Res)({ passthrough: true })),
|
|
81
95
|
__metadata("design:type", Function),
|
|
82
|
-
__metadata("design:paramtypes", [
|
|
96
|
+
__metadata("design:paramtypes", [requests_1.OidcExchangeCodeDto, Object]),
|
|
83
97
|
__metadata("design:returntype", Promise)
|
|
84
|
-
], OidcController.prototype, "
|
|
98
|
+
], OidcController.prototype, "exchangeCode", null);
|
|
85
99
|
exports.OidcController = OidcController = __decorate([
|
|
86
100
|
(0, common_1.Controller)(),
|
|
87
101
|
(0, swagger_1.ApiTags)('Auth'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.controller.js","sourceRoot":"","sources":["../../../src/auth/oidc/oidc.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"oidc.controller.js","sourceRoot":"","sources":["../../../src/auth/oidc/oidc.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyE;AACzE,6CAAwD;AAExD,iDAA6C;AAC7C,yDAAoD;AACpD,+CAA0D;AAC1D,gEAA4D;AAC5D,6CAAqD;AACrD,wEAA+D;AAIxD,IAAM,cAAc,GAApB,MAAM,cAAc;IAEf;IACA;IAFV,YACU,OAAoB,EACpB,QAAwB;QADxB,YAAO,GAAP,OAAO,CAAa;QACpB,aAAQ,GAAR,QAAQ,CAAgB;IAC/B,CAAC;IAOJ,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO;aAChB,YAAY,EAAE;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mCAAe,EAAC,mCAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAOK,AAAN,KAAK,CAAC,KAAK,CACI,EAAU,EACd,MAA8B,EAChC,GAAa;QAGpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAChD,QAAQ,EACR,MAAM,EACN,MAAM,CACP,CAAC;QAEF,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAQK,AAAN,KAAK,CAAC,YAAY,CACR,GAAwB,EACJ,GAAa;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACtE,QAAQ;YACR,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE/C,OAAO;YACL,SAAS;YACT,IAAI,EAAE,IAAA,mCAAe,EAAC,mCAAe,EAAE,IAAI,EAAE;gBAC3C,uBAAuB,EAAE,IAAI;aAC9B,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAA;AAjEY,wCAAc;AAWzB;IALC,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EAAE,kFAAkF;KAChG,CAAC;IACD,IAAA,YAAG,EAAC,0BAA0B,CAAC;;;;;uDAK/B;AAOK;IALL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,sCAAsC;QAC/C,WAAW,EAAE,qEAAqE;KACnF,CAAC;IACD,IAAA,YAAG,EAAC,qBAAqB,CAAC;;IAExB,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,cAAK,GAAE,CAAA;IACP,WAAA,IAAA,YAAG,GAAE,CAAA;;;;2CAWP;AAQK;IANL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE;8BACa;KAC3B,CAAC;IACD,IAAA,aAAI,EAAC,wBAAwB,CAAC;;IAE5B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;;qCADd,8BAAmB;;kDAmBjC;yBAhEU,cAAc;IAF1B,IAAA,mBAAU,GAAE;IACZ,IAAA,iBAAO,EAAC,MAAM,CAAC;qCAGK,0BAAW;QACV,gCAAc;GAHvB,cAAc,CAiE1B"}
|
|
@@ -15,6 +15,7 @@ const user_module_1 = require("../../user/user.module");
|
|
|
15
15
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
16
16
|
const oidc_user_entity_1 = require("./entities/oidc-user.entity");
|
|
17
17
|
const session_module_1 = require("../session/session.module");
|
|
18
|
+
const configs_module_1 = require("../../configs/configs.module");
|
|
18
19
|
let OidcModule = class OidcModule {
|
|
19
20
|
};
|
|
20
21
|
exports.OidcModule = OidcModule;
|
|
@@ -25,6 +26,7 @@ exports.OidcModule = OidcModule = __decorate([
|
|
|
25
26
|
axios_1.HttpModule,
|
|
26
27
|
(0, common_1.forwardRef)(() => user_module_1.UserModule),
|
|
27
28
|
session_module_1.SessionModule,
|
|
29
|
+
configs_module_1.ConfigsModule,
|
|
28
30
|
],
|
|
29
31
|
providers: [oidc_service_1.OidcService],
|
|
30
32
|
controllers: [oidc_controller_1.OidcController],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.module.js","sourceRoot":"","sources":["../../../src/auth/oidc/oidc.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,iDAA6C;AAC7C,yCAA2C;AAC3C,wDAAgD;AAChD,6CAAgD;AAChD,kEAAuD;AACvD,8DAA0D;
|
|
1
|
+
{"version":3,"file":"oidc.module.js","sourceRoot":"","sources":["../../../src/auth/oidc/oidc.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,uDAAmD;AACnD,iDAA6C;AAC7C,yCAA2C;AAC3C,wDAAgD;AAChD,6CAAgD;AAChD,kEAAuD;AACvD,8DAA0D;AAC1D,iEAAyD;AAalD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAXtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,2BAAQ,CAAC,CAAC;YACpC,kBAAU;YACV,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,8BAAa;YACb,8BAAa;SACd;QACD,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,WAAW,EAAE,CAAC,gCAAc,CAAC;KAC9B,CAAC;GACW,UAAU,CAAG"}
|
|
@@ -4,7 +4,8 @@ import { User } from '~/user/entities/user.entity';
|
|
|
4
4
|
import { DataSource, Repository } from 'typeorm';
|
|
5
5
|
import { OidcUser } from './entities/oidc-user.entity';
|
|
6
6
|
import { SessionService } from '../session/session.service';
|
|
7
|
-
|
|
7
|
+
import { ConfigsService } from '~/configs/configs.service';
|
|
8
|
+
export type OidcProvider = {
|
|
8
9
|
id: string;
|
|
9
10
|
name: string;
|
|
10
11
|
issuer: string;
|
|
@@ -17,16 +18,21 @@ export declare class OidcService {
|
|
|
17
18
|
private http;
|
|
18
19
|
private users;
|
|
19
20
|
private sessions;
|
|
20
|
-
|
|
21
|
+
private configs;
|
|
22
|
+
constructor(oidcUserRepository: Repository<OidcUser>, dataSource: DataSource, http: HttpService, users: UserService, sessions: SessionService, configs: ConfigsService);
|
|
21
23
|
getProviders(): OidcProvider[];
|
|
22
|
-
getAuthorizationUrl(provider: OidcProvider, stateToken: string): Promise<string>;
|
|
23
|
-
processAuthorizationCode(provider
|
|
24
|
-
|
|
24
|
+
getAuthorizationUrl(provider: OidcProvider, stateToken: string, extraParams?: Record<string, string>): Promise<string>;
|
|
25
|
+
processAuthorizationCode({ provider, code, redirectUri, codeVerifier, }: {
|
|
26
|
+
provider: OidcProvider;
|
|
27
|
+
code: string;
|
|
28
|
+
redirectUri?: string;
|
|
29
|
+
codeVerifier?: string;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
authToken: string;
|
|
25
32
|
user: User;
|
|
26
33
|
}>;
|
|
27
|
-
getUserInfo(endpoint: string,
|
|
34
|
+
getUserInfo(endpoint: string, authToken: string): Promise<Object>;
|
|
28
35
|
getUserFromSub(provider: OidcProvider, sub: string): Promise<User | null>;
|
|
29
36
|
private getOpenIdConfiguration;
|
|
30
37
|
private getJwk;
|
|
31
38
|
}
|
|
32
|
-
export {};
|
|
@@ -25,60 +25,66 @@ const typeorm_1 = require("typeorm");
|
|
|
25
25
|
const oidc_user_entity_1 = require("./entities/oidc-user.entity");
|
|
26
26
|
const typeorm_2 = require("@nestjs/typeorm");
|
|
27
27
|
const session_service_1 = require("../session/session.service");
|
|
28
|
+
const configs_service_1 = require("../../configs/configs.service");
|
|
28
29
|
let OidcService = class OidcService {
|
|
29
30
|
oidcUserRepository;
|
|
30
31
|
dataSource;
|
|
31
32
|
http;
|
|
32
33
|
users;
|
|
33
34
|
sessions;
|
|
34
|
-
|
|
35
|
+
configs;
|
|
36
|
+
constructor(oidcUserRepository, dataSource, http, users, sessions, configs) {
|
|
35
37
|
this.oidcUserRepository = oidcUserRepository;
|
|
36
38
|
this.dataSource = dataSource;
|
|
37
39
|
this.http = http;
|
|
38
40
|
this.users = users;
|
|
39
41
|
this.sessions = sessions;
|
|
42
|
+
this.configs = configs;
|
|
40
43
|
}
|
|
41
44
|
getProviders() {
|
|
42
|
-
return [
|
|
43
|
-
{
|
|
44
|
-
id: 'test',
|
|
45
|
-
name: 'Zitadel',
|
|
46
|
-
issuer: 'https://minds-test-hlrirg.zitadel.cloud',
|
|
47
|
-
clientId: '241850086068397974@minds-test',
|
|
48
|
-
clientSecret: '2QzFBlXKXCUall4gbU706hLKyOgfLQANLIFao7agxR33tRRV4SIJcgZJrAQT2IGP',
|
|
49
|
-
},
|
|
50
|
-
];
|
|
45
|
+
return this.configs.get('auth')?.oidc?.providers || [];
|
|
51
46
|
}
|
|
52
|
-
async getAuthorizationUrl(provider, stateToken) {
|
|
47
|
+
async getAuthorizationUrl(provider, stateToken, extraParams) {
|
|
53
48
|
const openidConfig = await this.getOpenIdConfiguration(provider);
|
|
54
49
|
const authUrl = openidConfig['authorization_endpoint'];
|
|
55
50
|
const supportedScopes = openidConfig['scopes_supported'];
|
|
56
51
|
const scopes = ['openid', 'profile', 'email'].filter((scope) => supportedScopes.includes(scope));
|
|
57
52
|
const params = new URLSearchParams({
|
|
53
|
+
...extraParams,
|
|
58
54
|
response_type: 'code',
|
|
59
55
|
client_id: provider.clientId,
|
|
60
56
|
state: stateToken,
|
|
61
57
|
scope: scopes.join(' '),
|
|
62
|
-
redirect_uri:
|
|
58
|
+
redirect_uri: extraParams?.redirect_uri ||
|
|
59
|
+
context_1.Context.getNetwork().getBaseUrl() + 'api/auth.oidc.callback',
|
|
63
60
|
provider_id: provider.id,
|
|
64
61
|
});
|
|
65
62
|
return `${authUrl}?${params.toString()}`;
|
|
66
63
|
}
|
|
67
|
-
async processAuthorizationCode(provider, code) {
|
|
64
|
+
async processAuthorizationCode({ provider, code, redirectUri, codeVerifier, }) {
|
|
68
65
|
const openidConfig = await this.getOpenIdConfiguration(provider);
|
|
69
66
|
const tokenUrl = openidConfig['token_endpoint'];
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
67
|
+
let data;
|
|
68
|
+
try {
|
|
69
|
+
const res = await (0, rxjs_1.firstValueFrom)(this.http.post(tokenUrl, {
|
|
70
|
+
code,
|
|
71
|
+
client_id: provider.clientId,
|
|
72
|
+
client_secret: provider.clientSecret,
|
|
73
|
+
redirect_uri: redirectUri ||
|
|
74
|
+
context_1.Context.getNetwork().getBaseUrl() + 'api/auth.oidc.callback',
|
|
75
|
+
grant_type: 'authorization_code',
|
|
76
|
+
code_verifier: codeVerifier,
|
|
77
|
+
}, {
|
|
78
|
+
headers: {
|
|
79
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
80
|
+
},
|
|
81
|
+
}));
|
|
82
|
+
data = res.data;
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
console.log(err);
|
|
86
|
+
throw new common_1.InternalServerErrorException();
|
|
87
|
+
}
|
|
82
88
|
const jwks = await this.getJwk(provider);
|
|
83
89
|
if (!jwks) {
|
|
84
90
|
throw new common_1.NotAcceptableException("The OIDC provider does not have JWK's");
|
|
@@ -93,6 +99,7 @@ let OidcService = class OidcService {
|
|
|
93
99
|
let user = await this.getUserFromSub(provider, sub);
|
|
94
100
|
if (!user) {
|
|
95
101
|
let preferredUsername = userInfo['preferred_username'] ||
|
|
102
|
+
userInfo['nickname'] ||
|
|
96
103
|
userInfo['name'].replace(' ', '');
|
|
97
104
|
try {
|
|
98
105
|
await this.users.verifyUsername(preferredUsername);
|
|
@@ -131,13 +138,13 @@ let OidcService = class OidcService {
|
|
|
131
138
|
await queryRunner.commitTransaction();
|
|
132
139
|
queryRunner.release();
|
|
133
140
|
}
|
|
134
|
-
const {
|
|
135
|
-
return {
|
|
141
|
+
const { authToken } = await this.sessions.create(user);
|
|
142
|
+
return { authToken, user };
|
|
136
143
|
}
|
|
137
|
-
async getUserInfo(endpoint,
|
|
144
|
+
async getUserInfo(endpoint, authToken) {
|
|
138
145
|
const res = await (0, rxjs_1.firstValueFrom)(this.http.get(endpoint, {
|
|
139
146
|
headers: {
|
|
140
|
-
Authorization: `Bearer ${
|
|
147
|
+
Authorization: `Bearer ${authToken}`,
|
|
141
148
|
},
|
|
142
149
|
}));
|
|
143
150
|
return res.data;
|
|
@@ -176,6 +183,7 @@ exports.OidcService = OidcService = __decorate([
|
|
|
176
183
|
typeorm_1.DataSource,
|
|
177
184
|
axios_1.HttpService,
|
|
178
185
|
user_service_1.UserService,
|
|
179
|
-
session_service_1.SessionService
|
|
186
|
+
session_service_1.SessionService,
|
|
187
|
+
configs_service_1.ConfigsService])
|
|
180
188
|
], OidcService);
|
|
181
189
|
//# sourceMappingURL=oidc.service.js.map
|