@echo-nova-404/sso-tool 0.1.12-beta

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.
Files changed (65) hide show
  1. package/README.md +86 -0
  2. package/dist/constants/index.d.ts +1 -0
  3. package/dist/constants/index.js +18 -0
  4. package/dist/constants/index.js.map +1 -0
  5. package/dist/constants/sso-tool.constant.d.ts +7 -0
  6. package/dist/constants/sso-tool.constant.js +12 -0
  7. package/dist/constants/sso-tool.constant.js.map +1 -0
  8. package/dist/decorators/auth.decorator.d.ts +5 -0
  9. package/dist/decorators/auth.decorator.js +14 -0
  10. package/dist/decorators/auth.decorator.js.map +1 -0
  11. package/dist/decorators/index.d.ts +2 -0
  12. package/dist/decorators/index.js +19 -0
  13. package/dist/decorators/index.js.map +1 -0
  14. package/dist/decorators/roles-check.decorator.d.ts +1 -0
  15. package/dist/decorators/roles-check.decorator.js +6 -0
  16. package/dist/decorators/roles-check.decorator.js.map +1 -0
  17. package/dist/guards/auth.guard.d.ts +10 -0
  18. package/dist/guards/auth.guard.js +43 -0
  19. package/dist/guards/auth.guard.js.map +1 -0
  20. package/dist/guards/index.d.ts +1 -0
  21. package/dist/guards/index.js +18 -0
  22. package/dist/guards/index.js.map +1 -0
  23. package/dist/index.d.ts +4 -0
  24. package/dist/index.js +25 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/sso-tool-v1/guards/auth-v1.guard.d.ts +9 -0
  27. package/dist/sso-tool-v1/guards/auth-v1.guard.js +58 -0
  28. package/dist/sso-tool-v1/guards/auth-v1.guard.js.map +1 -0
  29. package/dist/sso-tool-v1/guards/index.d.ts +1 -0
  30. package/dist/sso-tool-v1/guards/index.js +18 -0
  31. package/dist/sso-tool-v1/guards/index.js.map +1 -0
  32. package/dist/sso-tool-v1/index.d.ts +3 -0
  33. package/dist/sso-tool-v1/index.js +20 -0
  34. package/dist/sso-tool-v1/index.js.map +1 -0
  35. package/dist/sso-tool-v1/services/index.d.ts +1 -0
  36. package/dist/sso-tool-v1/services/index.js +18 -0
  37. package/dist/sso-tool-v1/services/index.js.map +1 -0
  38. package/dist/sso-tool-v1/services/sso-tool-v1.service.d.ts +28 -0
  39. package/dist/sso-tool-v1/services/sso-tool-v1.service.js +92 -0
  40. package/dist/sso-tool-v1/services/sso-tool-v1.service.js.map +1 -0
  41. package/dist/sso-tool-v1/sso-tool-v1.module.d.ts +4 -0
  42. package/dist/sso-tool-v1/sso-tool-v1.module.js +27 -0
  43. package/dist/sso-tool-v1/sso-tool-v1.module.js.map +1 -0
  44. package/dist/sso-tool-v1/types/index.d.ts +1 -0
  45. package/dist/sso-tool-v1/types/index.js +18 -0
  46. package/dist/sso-tool-v1/types/index.js.map +1 -0
  47. package/dist/sso-tool-v1/types/sso-tool-v1.type.d.ts +82 -0
  48. package/dist/sso-tool-v1/types/sso-tool-v1.type.js +3 -0
  49. package/dist/sso-tool-v1/types/sso-tool-v1.type.js.map +1 -0
  50. package/dist/sso-tool.module.d.ts +11 -0
  51. package/dist/sso-tool.module.js +41 -0
  52. package/dist/sso-tool.module.js.map +1 -0
  53. package/dist/types/index.d.ts +1 -0
  54. package/dist/types/index.js +18 -0
  55. package/dist/types/index.js.map +1 -0
  56. package/dist/types/sso-tool.type.d.ts +30 -0
  57. package/dist/types/sso-tool.type.js +3 -0
  58. package/dist/types/sso-tool.type.js.map +1 -0
  59. package/dist/utils/index.d.ts +1 -0
  60. package/dist/utils/index.js +18 -0
  61. package/dist/utils/index.js.map +1 -0
  62. package/dist/utils/service.util.d.ts +1 -0
  63. package/dist/utils/service.util.js +13 -0
  64. package/dist/utils/service.util.js.map +1 -0
  65. package/package.json +44 -0
package/README.md ADDED
@@ -0,0 +1,86 @@
1
+ ## @nch-nestjs/sso-tool
2
+
3
+ Библиотека для NestJS для проверки авторизации в серверных приложениях, использующих `SSO`.
4
+
5
+ ### Установка
6
+
7
+ ```
8
+ npm install @nch-nestjs/sso-tool
9
+ ```
10
+
11
+ ### Подключение и использование
12
+
13
+ В `app.module.ts` подключите `SsoToolModule`
14
+
15
+ ```typescript
16
+ import { Module } from '@nestjs/common';
17
+ import { ConfigModule, ConfigService } from '@nestjs/config';
18
+ import { SsoApiVersion, SsoToolModule } from '@nch-nestjs/sso-tool';
19
+
20
+ @Module({
21
+ imports: [
22
+ ConfigModule.forRoot({
23
+ isGlobal: true
24
+ }),
25
+ SsoToolModule.forRootAsync({
26
+ inject: [ConfigService],
27
+ useFactory: async (configService: ConfigService) => ({
28
+ domain: configService.getOrThrow<string>('SSO_DOMAIN'),
29
+ version: SsoApiVersion.V1,
30
+ projectId: configService.getOrThrow<string>('SSO_PROJECT_ID'),
31
+ }),
32
+ }),
33
+ ],
34
+ controllers: [],
35
+ providers: [],
36
+ })
37
+ export class AppModule {}
38
+ ```
39
+
40
+ Подключите декоратор `@Auth`
41
+
42
+ ```typescript
43
+ import { Controller, Get } from '@nestjs/common';
44
+ import { Auth } from '@nch-nestjs/sso-tool';
45
+
46
+
47
+ @Controller({
48
+ path: 'user',
49
+ version: '1',
50
+ })
51
+ export class UserController {
52
+
53
+ @Auth(['default'])
54
+ @Get('')
55
+ async getUsers() {
56
+ return [
57
+ {
58
+ id: 1,
59
+ name: 'Пользователь'
60
+ }
61
+ ]
62
+ }
63
+
64
+ }
65
+ ```
66
+
67
+ Использование API SSO
68
+
69
+ ```typescript
70
+ import { Injectable } from '@nestjs/common';
71
+ import { SsoToolV1Service } from "@nch-nestjs/sso-tool";
72
+
73
+
74
+ @Injectable()
75
+ export class GeneralService {
76
+
77
+ constructor(
78
+ private readonly ssoToolV1Service: SsoToolV1Service
79
+ ) {}
80
+
81
+ async getMyUser(token: string) {
82
+ return await this.ssoToolV1Service.getUser(token);
83
+ }
84
+ }
85
+
86
+ ```
@@ -0,0 +1 @@
1
+ export * from './sso-tool.constant';
@@ -0,0 +1,18 @@
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("./sso-tool.constant"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -0,0 +1,7 @@
1
+ export declare const SSO_TOOL_DEFAULT_NAME = "sso-tool";
2
+ /**
3
+ * Версия API
4
+ */
5
+ export declare enum SsoApiVersion {
6
+ V1 = "v1"
7
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SsoApiVersion = exports.SSO_TOOL_DEFAULT_NAME = void 0;
4
+ exports.SSO_TOOL_DEFAULT_NAME = 'sso-tool';
5
+ /**
6
+ * Версия API
7
+ */
8
+ var SsoApiVersion;
9
+ (function (SsoApiVersion) {
10
+ SsoApiVersion["V1"] = "v1";
11
+ })(SsoApiVersion || (exports.SsoApiVersion = SsoApiVersion = {}));
12
+ //# sourceMappingURL=sso-tool.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool.constant.js","sourceRoot":"","sources":["../../src/constants/sso-tool.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,UAAU,CAAC;AAEhD;;GAEG;AACH,IAAY,aAEX;AAFD,WAAY,aAAa;IACxB,0BAAS,CAAA;AACV,CAAC,EAFW,aAAa,6BAAb,aAAa,QAExB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Декоратор, проверяющий авторизацию
3
+ * @param {string[]} roles список роллей, которым предоставлен доступ
4
+ */
5
+ export declare const Auth: (roles?: string[]) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Auth = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const guards_1 = require("../guards");
7
+ const roles_check_decorator_1 = require("./roles-check.decorator");
8
+ /**
9
+ * Декоратор, проверяющий авторизацию
10
+ * @param {string[]} roles список роллей, которым предоставлен доступ
11
+ */
12
+ const Auth = (roles = []) => (0, common_1.applyDecorators)((0, common_1.UseGuards)(guards_1.AuthGuard), (0, roles_check_decorator_1.RolesCheck)(roles), (0, swagger_1.ApiBearerAuth)());
13
+ exports.Auth = Auth;
14
+ //# sourceMappingURL=auth.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.decorator.js","sourceRoot":"","sources":["../../src/decorators/auth.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA4D;AAC5D,6CAAgD;AAChD,sCAAsC;AACtC,mEAAqD;AAErD;;;GAGG;AACI,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAE,EAAE,EAAE,CAC5C,IAAA,wBAAe,EAAC,IAAA,kBAAS,EAAC,kBAAS,CAAC,EAAE,IAAA,kCAAU,EAAC,KAAK,CAAC,EAAE,IAAA,uBAAa,GAAE,CAAC,CAAC;AAD9D,QAAA,IAAI,QAC0D"}
@@ -0,0 +1,2 @@
1
+ export * from './auth.decorator';
2
+ export * from './roles-check.decorator';
@@ -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("./auth.decorator"), exports);
18
+ __exportStar(require("./roles-check.decorator"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0DAAwC"}
@@ -0,0 +1 @@
1
+ export declare const RolesCheck: import("@nestjs/core").ReflectableDecorator<string[], string[]>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RolesCheck = void 0;
4
+ const core_1 = require("@nestjs/core");
5
+ exports.RolesCheck = core_1.Reflector.createDecorator();
6
+ //# sourceMappingURL=roles-check.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles-check.decorator.js","sourceRoot":"","sources":["../../src/decorators/roles-check.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAE5B,QAAA,UAAU,GAAG,gBAAS,CAAC,eAAe,EAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { AuthV1Guard } from '../sso-tool-v1';
3
+ import { type SsoToolOptions } from '../types';
4
+ export declare class AuthGuard implements CanActivate {
5
+ private readonly authCheckOptions;
6
+ private readonly authV1Guard;
7
+ private readonly version;
8
+ constructor(authCheckOptions: SsoToolOptions, authV1Guard: AuthV1Guard);
9
+ canActivate(context: ExecutionContext): Promise<boolean>;
10
+ }
@@ -0,0 +1,43 @@
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.AuthGuard = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const constants_1 = require("../constants");
18
+ const sso_tool_v1_1 = require("../sso-tool-v1");
19
+ let AuthGuard = class AuthGuard {
20
+ authCheckOptions;
21
+ authV1Guard;
22
+ version;
23
+ constructor(authCheckOptions, authV1Guard) {
24
+ this.authCheckOptions = authCheckOptions;
25
+ this.authV1Guard = authV1Guard;
26
+ this.version = this.authCheckOptions.version;
27
+ }
28
+ async canActivate(context) {
29
+ switch (this.version) {
30
+ case constants_1.SsoApiVersion.V1:
31
+ return this.authV1Guard.canActivate(context);
32
+ default:
33
+ throw new Error('Неуказан параметр "version"');
34
+ }
35
+ }
36
+ };
37
+ exports.AuthGuard = AuthGuard;
38
+ exports.AuthGuard = AuthGuard = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __param(0, (0, common_1.Inject)(constants_1.SSO_TOOL_DEFAULT_NAME)),
41
+ __metadata("design:paramtypes", [Object, sso_tool_v1_1.AuthV1Guard])
42
+ ], AuthGuard);
43
+ //# sourceMappingURL=auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/guards/auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmF;AACnF,4CAAoE;AACpE,gDAA6C;AAItC,IAAM,SAAS,GAAf,MAAM,SAAS;IAKH;IACA;IALD,OAAO,CAA4B;IAEpD,YAEkB,gBAAgC,EAChC,WAAwB;QADxB,qBAAgB,GAAhB,gBAAgB,CAAgB;QAChC,gBAAW,GAAX,WAAW,CAAa;QAEzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC1C,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,KAAK,yBAAa,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9C;gBACC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;CACD,CAAA;AAnBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAKV,WAAA,IAAA,eAAM,EAAC,iCAAqB,CAAC,CAAA;6CAEA,yBAAW;GAN9B,SAAS,CAmBrB"}
@@ -0,0 +1 @@
1
+ export * from './auth.guard';
@@ -0,0 +1,18 @@
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("./auth.guard"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B"}
@@ -0,0 +1,4 @@
1
+ export { SsoApiVersion } from './constants';
2
+ export { Auth } from './decorators';
3
+ export * from './sso-tool.module';
4
+ export { SsoToolV1Service } from './sso-tool-v1';
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
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
+ exports.SsoToolV1Service = exports.Auth = exports.SsoApiVersion = void 0;
18
+ var constants_1 = require("./constants");
19
+ Object.defineProperty(exports, "SsoApiVersion", { enumerable: true, get: function () { return constants_1.SsoApiVersion; } });
20
+ var decorators_1 = require("./decorators");
21
+ Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return decorators_1.Auth; } });
22
+ __exportStar(require("./sso-tool.module"), exports);
23
+ var sso_tool_v1_1 = require("./sso-tool-v1");
24
+ Object.defineProperty(exports, "SsoToolV1Service", { enumerable: true, get: function () { return sso_tool_v1_1.SsoToolV1Service; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AACtB,2CAAoC;AAA3B,kGAAA,IAAI,OAAA;AACb,oDAAkC;AAClC,6CAAiD;AAAxC,+GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,9 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { SsoToolV1Service } from '../services';
4
+ export declare class AuthV1Guard implements CanActivate {
5
+ private reflector;
6
+ private readonly ssoToolV1Service;
7
+ constructor(reflector: Reflector, ssoToolV1Service: SsoToolV1Service);
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
9
+ }
@@ -0,0 +1,58 @@
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.AuthV1Guard = void 0;
13
+ const i18n_kit_1 = require("@nch-nestjs/i18n-kit");
14
+ const common_1 = require("@nestjs/common");
15
+ const core_1 = require("@nestjs/core");
16
+ const decorators_1 = require("../../decorators");
17
+ const services_1 = require("../services");
18
+ let AuthV1Guard = class AuthV1Guard {
19
+ reflector;
20
+ ssoToolV1Service;
21
+ constructor(reflector, ssoToolV1Service) {
22
+ this.reflector = reflector;
23
+ this.ssoToolV1Service = ssoToolV1Service;
24
+ }
25
+ async canActivate(context) {
26
+ const roles = this.reflector.get(decorators_1.RolesCheck, context.getHandler());
27
+ const request = context.switchToHttp().getRequest();
28
+ const token = request.headers.authorization?.replace('Bearer ', '');
29
+ if (!token) {
30
+ throw (0, i18n_kit_1.i18nException)(common_1.UnauthorizedException, {
31
+ messageKey: 'exception.UNAUTHORIZE.MESSAGE.DEFAULT',
32
+ descriptionKey: 'exception.UNAUTHORIZE.ERROR',
33
+ });
34
+ }
35
+ const { active, user, roles: tokenRoles } = await this.ssoToolV1Service.checkAuth(token);
36
+ const rolesAccess = (tokenRoles && roles.some((item) => tokenRoles.includes(item))) || !roles.length;
37
+ if (!(active && user)) {
38
+ throw (0, i18n_kit_1.i18nException)(common_1.UnauthorizedException, {
39
+ messageKey: 'exception.UNAUTHORIZE.MESSAGE.DEFAULT',
40
+ descriptionKey: 'exception.UNAUTHORIZE.ERROR',
41
+ });
42
+ }
43
+ if (!rolesAccess) {
44
+ throw (0, i18n_kit_1.i18nException)(common_1.ForbiddenException, {
45
+ messageKey: 'exception.FORBIDDEN.MESSAGE.DEFAULT',
46
+ descriptionKey: 'exception.FORBIDDEN.ERROR',
47
+ });
48
+ }
49
+ return true;
50
+ }
51
+ };
52
+ exports.AuthV1Guard = AuthV1Guard;
53
+ exports.AuthV1Guard = AuthV1Guard = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __metadata("design:paramtypes", [core_1.Reflector,
56
+ services_1.SsoToolV1Service])
57
+ ], AuthV1Guard);
58
+ //# sourceMappingURL=auth-v1.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-v1.guard.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/guards/auth-v1.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAqD;AACrD,2CAMwB;AACxB,uCAAyC;AACzC,iDAA8C;AAC9C,0CAA+C;AAGxC,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEd;IACS;IAFlB,YACS,SAAoB,EACX,gBAAkC;QAD3C,cAAS,GAAT,SAAS,CAAW;QACX,qBAAgB,GAAhB,gBAAgB,CAAkB;IACjD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAA,wBAAa,EAAC,8BAAqB,EAAE;gBAC1C,UAAU,EAAE,uCAAuC;gBACnD,cAAc,EAAE,6BAA6B;aAC7C,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,WAAW,GAChB,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClF,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAA,wBAAa,EAAC,8BAAqB,EAAE;gBAC1C,UAAU,EAAE,uCAAuC;gBACnD,cAAc,EAAE,6BAA6B;aAC7C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,IAAA,wBAAa,EAAC,2BAAkB,EAAE;gBACvC,UAAU,EAAE,qCAAqC;gBACjD,cAAc,EAAE,2BAA2B;aAC3C,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAA;AAjCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAGQ,gBAAS;QACO,2BAAgB;GAHxC,WAAW,CAiCvB"}
@@ -0,0 +1 @@
1
+ export * from './auth-v1.guard';
@@ -0,0 +1,18 @@
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("./auth-v1.guard"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ export * from './guards';
2
+ export * from './services';
3
+ export * from './sso-tool-v1.module';
@@ -0,0 +1,20 @@
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("./guards"), exports);
18
+ __exportStar(require("./services"), exports);
19
+ __exportStar(require("./sso-tool-v1.module"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sso-tool-v1/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,uDAAqC"}
@@ -0,0 +1 @@
1
+ export * from './sso-tool-v1.service';
@@ -0,0 +1,18 @@
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("./sso-tool-v1.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
@@ -0,0 +1,28 @@
1
+ import { type SsoToolOptions } from '../../types';
2
+ import { AuthCheckV1Response, UserAvatarResponseV1, UserDataV1 } from '../types';
3
+ /**
4
+ * Сервис вызова API Single Sign-On (v1)
5
+ */
6
+ export declare class SsoToolV1Service {
7
+ private readonly authCheckOptions;
8
+ private readonly domain;
9
+ private readonly projectId;
10
+ private readonly defaultHeaders;
11
+ constructor(authCheckOptions: SsoToolOptions);
12
+ /**
13
+ * Метод для проверки авторизации пользователя
14
+ * @param {string} access access-token пользователя
15
+ */
16
+ checkAuth(access: string): Promise<AuthCheckV1Response>;
17
+ /**
18
+ * Метод для получения информации о пользователе
19
+ * @param {string} access access-token пользователя
20
+ */
21
+ getUser(access: string): Promise<UserDataV1>;
22
+ /**
23
+ * Метод для получения аватара пользователя
24
+ * @param {string} access access-token пользователя
25
+ * @param {string} avatarName название аватара пользователя
26
+ */
27
+ getUserAvatar(access: string, avatarName: string): Promise<UserAvatarResponseV1>;
28
+ }
@@ -0,0 +1,92 @@
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.SsoToolV1Service = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const constants_1 = require("../../constants");
18
+ const utils_1 = require("../../utils");
19
+ /**
20
+ * Сервис вызова API Single Sign-On (v1)
21
+ */
22
+ let SsoToolV1Service = class SsoToolV1Service {
23
+ authCheckOptions;
24
+ domain;
25
+ projectId;
26
+ defaultHeaders;
27
+ constructor(authCheckOptions) {
28
+ this.authCheckOptions = authCheckOptions;
29
+ this.domain = this.authCheckOptions.domain;
30
+ this.projectId = this.authCheckOptions.projectId;
31
+ this.defaultHeaders = {
32
+ Accept: 'application/json',
33
+ 'Content-Type': 'application/json',
34
+ };
35
+ }
36
+ /**
37
+ * Метод для проверки авторизации пользователя
38
+ * @param {string} access access-token пользователя
39
+ */
40
+ async checkAuth(access) {
41
+ const url = new URL(`/v1/check`, this.domain);
42
+ const response = await fetch(url, {
43
+ method: 'POST',
44
+ headers: this.defaultHeaders,
45
+ body: JSON.stringify({
46
+ access: access,
47
+ projectId: this.projectId,
48
+ }),
49
+ });
50
+ return await (0, utils_1.handleResponse)(response, 200);
51
+ }
52
+ /**
53
+ * Метод для получения информации о пользователе
54
+ * @param {string} access access-token пользователя
55
+ */
56
+ async getUser(access) {
57
+ const url = new URL(`/v1/user/me`, this.domain);
58
+ const headers = {
59
+ ...this.defaultHeaders,
60
+ Authorization: `Bearer ${access}`,
61
+ };
62
+ const response = await fetch(url, {
63
+ method: 'GET',
64
+ headers: headers,
65
+ });
66
+ return await (0, utils_1.handleResponse)(response, 200);
67
+ }
68
+ /**
69
+ * Метод для получения аватара пользователя
70
+ * @param {string} access access-token пользователя
71
+ * @param {string} avatarName название аватара пользователя
72
+ */
73
+ async getUserAvatar(access, avatarName) {
74
+ const url = new URL(`/v1/user/me/avatar/${avatarName}`, this.domain);
75
+ const headers = {
76
+ ...this.defaultHeaders,
77
+ Authorization: `Bearer ${access}`,
78
+ };
79
+ const response = await fetch(url, {
80
+ method: 'GET',
81
+ headers: headers,
82
+ });
83
+ return await (0, utils_1.handleResponse)(response, 200);
84
+ }
85
+ };
86
+ exports.SsoToolV1Service = SsoToolV1Service;
87
+ exports.SsoToolV1Service = SsoToolV1Service = __decorate([
88
+ (0, common_1.Injectable)(),
89
+ __param(0, (0, common_1.Inject)(constants_1.SSO_TOOL_DEFAULT_NAME)),
90
+ __metadata("design:paramtypes", [Object])
91
+ ], SsoToolV1Service);
92
+ //# sourceMappingURL=sso-tool-v1.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool-v1.service.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/services/sso-tool-v1.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAwD;AAExD,uCAA6C;AAG7C;;GAEG;AAEI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAOV;IAND,MAAM,CAA2B;IACjC,SAAS,CAA8B;IACvC,cAAc,CAAiB;IAEhD,YAEkB,gBAAgC;QAAhC,qBAAgB,GAAhB,gBAAgB,CAAgB;QAEjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG;YACrB,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SAClC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,IAAI,CAAC,SAAS;aACzB,CAAC;SACF,CAAC,CAAC;QACH,OAAO,MAAM,IAAA,sBAAc,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG;YACf,GAAG,IAAI,CAAC,cAAc;YACtB,aAAa,EAAE,UAAU,MAAM,EAAE;SACjC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,OAAO;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,IAAA,sBAAc,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,UAAkB;QACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,UAAU,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG;YACf,GAAG,IAAI,CAAC,cAAc;YACtB,aAAa,EAAE,UAAU,MAAM,EAAE;SACjC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,OAAO;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,IAAA,sBAAc,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;CACD,CAAA;AApEY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAOV,WAAA,IAAA,eAAM,EAAC,iCAAqB,CAAC,CAAA;;GANnB,gBAAgB,CAoE5B"}
@@ -0,0 +1,4 @@
1
+ import { DynamicModule, Provider } from '@nestjs/common';
2
+ export declare class SsoToolV1Module {
3
+ static registerProviders(providers?: Provider[]): DynamicModule;
4
+ }
@@ -0,0 +1,27 @@
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 SsoToolV1Module_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SsoToolV1Module = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const guards_1 = require("./guards");
13
+ const services_1 = require("./services");
14
+ let SsoToolV1Module = SsoToolV1Module_1 = class SsoToolV1Module {
15
+ static registerProviders(providers = []) {
16
+ return {
17
+ module: SsoToolV1Module_1,
18
+ providers: [services_1.SsoToolV1Service, guards_1.AuthV1Guard, ...providers],
19
+ exports: [services_1.SsoToolV1Service, guards_1.AuthV1Guard, ...providers],
20
+ };
21
+ }
22
+ };
23
+ exports.SsoToolV1Module = SsoToolV1Module;
24
+ exports.SsoToolV1Module = SsoToolV1Module = SsoToolV1Module_1 = __decorate([
25
+ (0, common_1.Module)({})
26
+ ], SsoToolV1Module);
27
+ //# sourceMappingURL=sso-tool-v1.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool-v1.module.js","sourceRoot":"","sources":["../../src/sso-tool-v1/sso-tool-v1.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,qCAAuC;AACvC,yCAA8C;AAGvC,IAAM,eAAe,uBAArB,MAAM,eAAe;IAC3B,MAAM,CAAC,iBAAiB,CAAC,YAAwB,EAAE;QAClD,OAAO;YACN,MAAM,EAAE,iBAAe;YACvB,SAAS,EAAE,CAAC,2BAAgB,EAAE,oBAAW,EAAE,GAAG,SAAS,CAAC;YACxD,OAAO,EAAE,CAAC,2BAAgB,EAAE,oBAAW,EAAE,GAAG,SAAS,CAAC;SACtD,CAAC;IACH,CAAC;CACD,CAAA;AARY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CAQ3B"}
@@ -0,0 +1 @@
1
+ export * from './sso-tool-v1.type';
@@ -0,0 +1,18 @@
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("./sso-tool-v1.type"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
@@ -0,0 +1,82 @@
1
+ export interface UserDataV1 {
2
+ /**
3
+ * Id пользователя
4
+ */
5
+ userId: string;
6
+ /**
7
+ * Username пользователя в Zitadel
8
+ */
9
+ username: string;
10
+ /**
11
+ * Nickname пользователя в Zitadel
12
+ */
13
+ nickname: string;
14
+ /**
15
+ * E-mail пользователя
16
+ */
17
+ email: string;
18
+ /**
19
+ * Логин пользователя
20
+ */
21
+ loginName: string;
22
+ /**
23
+ * Имя пользователя
24
+ */
25
+ givenName: string;
26
+ /**
27
+ * Фамилия пользователя
28
+ */
29
+ familyName: string;
30
+ /**
31
+ * Отчество пользователя
32
+ */
33
+ additionalName: string;
34
+ /**
35
+ * Имя пользователя в Zitadel
36
+ */
37
+ displayName: string;
38
+ /**
39
+ * Дата создания пользователя
40
+ */
41
+ createDate: Date;
42
+ /**
43
+ * Список доступных аватаров
44
+ */
45
+ avatars: UserAvatars[];
46
+ }
47
+ export interface UserAvatars {
48
+ /**
49
+ * Название аватара
50
+ */
51
+ name: string;
52
+ /**
53
+ * Параметр отвечает за выбор основного аватара
54
+ */
55
+ isDefault: boolean;
56
+ /**
57
+ * Тэги аватара
58
+ */
59
+ tags: string[];
60
+ }
61
+ export interface AuthCheckV1Response {
62
+ /**
63
+ * Параметр отвечает за валидность access-token
64
+ * - `true`: access-token валиден.
65
+ * - `false`: access-token не валиден.
66
+ */
67
+ active: boolean;
68
+ /**
69
+ * Информация о пользователе. Данные доступны при `active: true`
70
+ */
71
+ user?: Omit<UserDataV1, 'nickname' | 'username' | 'avatars'>;
72
+ /**
73
+ * Роли пользователя. Доступны при `active: true`
74
+ */
75
+ roles?: string[];
76
+ }
77
+ export interface UserAvatarResponseV1 {
78
+ /**
79
+ * Ссылка на аватар пользователя
80
+ */
81
+ url: string;
82
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sso-tool-v1.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool-v1.type.js","sourceRoot":"","sources":["../../../src/sso-tool-v1/types/sso-tool-v1.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { SsoToolAsyncModuleOptions } from './types';
3
+ /**
4
+ * Модуль Single Sign-On
5
+ */
6
+ export declare class SsoToolModule {
7
+ /**
8
+ * Метод для настройки конфигурации модуля
9
+ */
10
+ static forRootAsync({ inject, useFactory, }: SsoToolAsyncModuleOptions): Promise<DynamicModule>;
11
+ }
@@ -0,0 +1,41 @@
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 SsoToolModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SsoToolModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const constants_1 = require("./constants");
13
+ const guards_1 = require("./guards");
14
+ const sso_tool_v1_1 = require("./sso-tool-v1");
15
+ /**
16
+ * Модуль Single Sign-On
17
+ */
18
+ let SsoToolModule = SsoToolModule_1 = class SsoToolModule {
19
+ /**
20
+ * Метод для настройки конфигурации модуля
21
+ */
22
+ static async forRootAsync({ inject, useFactory, }) {
23
+ const SsoToolProvider = {
24
+ provide: constants_1.SSO_TOOL_DEFAULT_NAME,
25
+ inject: inject,
26
+ useFactory: useFactory,
27
+ };
28
+ return {
29
+ module: SsoToolModule_1,
30
+ imports: [sso_tool_v1_1.SsoToolV1Module.registerProviders([SsoToolProvider])],
31
+ providers: [SsoToolProvider, guards_1.AuthGuard],
32
+ exports: [guards_1.AuthGuard, sso_tool_v1_1.SsoToolV1Module],
33
+ };
34
+ }
35
+ };
36
+ exports.SsoToolModule = SsoToolModule;
37
+ exports.SsoToolModule = SsoToolModule = SsoToolModule_1 = __decorate([
38
+ (0, common_1.Global)(),
39
+ (0, common_1.Module)({})
40
+ ], SsoToolModule);
41
+ //# sourceMappingURL=sso-tool.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool.module.js","sourceRoot":"","sources":["../src/sso-tool.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA8E;AAC9E,2CAAoD;AACpD,qCAAqC;AACrC,+CAAgD;AAGhD;;GAEG;AAGI,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACzB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EACzB,MAAM,EACN,UAAU,GACiB;QAC3B,MAAM,eAAe,GAAa;YACjC,OAAO,EAAE,iCAAqB;YAC9B,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;SACtB,CAAC;QACF,OAAO;YACN,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,CAAC,6BAAe,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YAC/D,SAAS,EAAE,CAAC,eAAe,EAAE,kBAAS,CAAC;YACvC,OAAO,EAAE,CAAC,kBAAS,EAAE,6BAAe,CAAC;SACrC,CAAC;IACH,CAAC;CACD,CAAA;AApBY,sCAAa;wBAAb,aAAa;IAFzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAoBzB"}
@@ -0,0 +1 @@
1
+ export * from './sso-tool.type';
@@ -0,0 +1,18 @@
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("./sso-tool.type"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,30 @@
1
+ import { InjectionToken } from '@nestjs/common/interfaces/modules/injection-token.interface';
2
+ import { OptionalFactoryDependency } from '@nestjs/common/interfaces/modules/optional-factory-dependency.interface';
3
+ import { SsoApiVersion } from '../constants';
4
+ export interface SsoToolAsyncModuleOptions {
5
+ /**
6
+ * Функция, возвращающая экземпляр Provider, который будет доступен внутри модуля.
7
+ */
8
+ useFactory: (...args: any[]) => Promise<SsoToolOptions>;
9
+ /**
10
+ * Необязательный список поставщиков, которые будут использованы в контекст useFactory.
11
+ */
12
+ inject?: Array<InjectionToken | OptionalFactoryDependency>;
13
+ }
14
+ export interface SsoToolOptions {
15
+ /**
16
+ * Домен Single Sign-On
17
+ */
18
+ domain: string;
19
+ /**
20
+ * Версия API Single Sign-On используемая в декораторах
21
+ */
22
+ version: SsoApiVersion;
23
+ /**
24
+ * Id проекта в Single Sign-On
25
+ */
26
+ projectId: string;
27
+ }
28
+ export interface SsoToolHeaders {
29
+ [key: string]: string;
30
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sso-tool.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-tool.type.js","sourceRoot":"","sources":["../../src/types/sso-tool.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './service.util';
@@ -0,0 +1,18 @@
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("./service.util"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -0,0 +1 @@
1
+ export declare const handleResponse: <DataType>(response: Response, status?: number) => Promise<DataType>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleResponse = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const handleResponse = async (response, status = 200) => {
6
+ if (response.status !== status) {
7
+ const errorData = await response.json();
8
+ throw new common_1.HttpException(errorData, response.status);
9
+ }
10
+ return await response.json();
11
+ };
12
+ exports.handleResponse = handleResponse;
13
+ //# sourceMappingURL=service.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.util.js","sourceRoot":"","sources":["../../src/utils/service.util.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAExC,MAAM,cAAc,GAAG,KAAK,EAClC,QAAkB,EAClB,MAAM,GAAG,GAAG,EACQ,EAAE;IACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,sBAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@echo-nova-404/sso-tool",
3
+ "version": "0.1.12-beta",
4
+ "description": "A library for authorization checks using SSO",
5
+ "license": "UNLICENSED",
6
+ "readmeFilename": "README.md",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "nest build",
14
+ "start:dev": "nest start --watch",
15
+ "biome:format": "biome format .",
16
+ "biome:check": "biome check .",
17
+ "biome:lint": "biome lint .",
18
+ "biome:apply-formatting": "biome format --write . ; biome check --write . ; biome lint ."
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "peerDependencies": {
24
+ "@nestjs/common": "^11.0.1",
25
+ "@nestjs/core": "^11.0.1",
26
+ "@nestjs/swagger": "^11.2.0"
27
+ },
28
+ "dependencies": {
29
+ "@nch-nestjs/i18n-kit": "^0.1.1"
30
+ },
31
+ "devDependencies": {
32
+ "@biomejs/biome": "^2.3.11",
33
+ "@nestjs/cli": "^11.0.0",
34
+ "@nestjs/schematics": "^11.0.0",
35
+ "@types/node": "^24.10.1",
36
+ "globals": "^16.0.0",
37
+ "source-map-support": "^0.5.21",
38
+ "supertest": "^7.0.0",
39
+ "ts-loader": "^9.5.2",
40
+ "ts-node": "^10.9.2",
41
+ "tsconfig-paths": "^4.2.0",
42
+ "typescript": "^5.7.3"
43
+ }
44
+ }