@things-factory/auth-base 7.0.1-alpha.9 → 7.0.1-alpha.92

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 (71) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/constants/error-code.d.ts +1 -0
  3. package/dist-server/constants/error-code.js +2 -1
  4. package/dist-server/constants/error-code.js.map +1 -1
  5. package/dist-server/controllers/profile.d.ts +1 -0
  6. package/dist-server/middlewares/authenticate-401-middleware.js +1 -1
  7. package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
  8. package/dist-server/middlewares/index.d.ts +1 -0
  9. package/dist-server/middlewares/index.js +2 -1
  10. package/dist-server/middlewares/index.js.map +1 -1
  11. package/dist-server/middlewares/webauthn-middleware.d.ts +2 -0
  12. package/dist-server/middlewares/webauthn-middleware.js +54 -0
  13. package/dist-server/middlewares/webauthn-middleware.js.map +1 -0
  14. package/dist-server/router/auth-private-process-router.js +7 -1
  15. package/dist-server/router/auth-private-process-router.js.map +1 -1
  16. package/dist-server/router/index.d.ts +1 -0
  17. package/dist-server/router/index.js +1 -0
  18. package/dist-server/router/index.js.map +1 -1
  19. package/dist-server/router/webauthn-router.d.ts +2 -0
  20. package/dist-server/router/webauthn-router.js +45 -0
  21. package/dist-server/router/webauthn-router.js.map +1 -0
  22. package/dist-server/routes.js +3 -1
  23. package/dist-server/routes.js.map +1 -1
  24. package/dist-server/service/auth-provider/auth-provider-parameter-spec.d.ts +3 -0
  25. package/dist-server/service/auth-provider/auth-provider-parameter-spec.js +4 -0
  26. package/dist-server/service/auth-provider/auth-provider-parameter-spec.js.map +1 -1
  27. package/dist-server/service/auth-provider/auth-provider-type.js.map +1 -1
  28. package/dist-server/service/auth-provider/auth-provider.d.ts +0 -5
  29. package/dist-server/service/auth-provider/auth-provider.js +2 -16
  30. package/dist-server/service/auth-provider/auth-provider.js.map +1 -1
  31. package/dist-server/service/index.d.ts +2 -1
  32. package/dist-server/service/index.js +4 -1
  33. package/dist-server/service/index.js.map +1 -1
  34. package/dist-server/service/user/user.d.ts +2 -0
  35. package/dist-server/service/user/user.js +14 -24
  36. package/dist-server/service/user/user.js.map +1 -1
  37. package/dist-server/service/users-auth-providers/users-auth-providers.js +1 -1
  38. package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
  39. package/dist-server/service/web-auth-credential/index.d.ts +2 -0
  40. package/dist-server/service/web-auth-credential/index.js +6 -0
  41. package/dist-server/service/web-auth-credential/index.js.map +1 -0
  42. package/dist-server/service/web-auth-credential/web-auth-credential.d.ts +15 -0
  43. package/dist-server/service/web-auth-credential/web-auth-credential.js +72 -0
  44. package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -0
  45. package/dist-server/tsconfig.tsbuildinfo +1 -1
  46. package/dist-server/utils/access-token-cookie.d.ts +1 -0
  47. package/dist-server/utils/access-token-cookie.js +12 -1
  48. package/dist-server/utils/access-token-cookie.js.map +1 -1
  49. package/package.json +9 -7
  50. package/server/constants/error-code.ts +1 -0
  51. package/server/middlewares/authenticate-401-middleware.ts +1 -1
  52. package/server/middlewares/index.ts +2 -1
  53. package/server/middlewares/webauthn-middleware.ts +68 -0
  54. package/server/router/auth-private-process-router.ts +8 -1
  55. package/server/router/index.ts +1 -0
  56. package/server/router/webauthn-router.ts +56 -0
  57. package/server/routes.ts +7 -8
  58. package/server/service/auth-provider/auth-provider-parameter-spec.ts +3 -0
  59. package/server/service/auth-provider/auth-provider-type.ts +3 -7
  60. package/server/service/auth-provider/auth-provider.ts +3 -19
  61. package/server/service/index.ts +5 -5
  62. package/server/service/user/user.ts +12 -22
  63. package/server/service/users-auth-providers/users-auth-providers.ts +1 -1
  64. package/server/service/web-auth-credential/index.ts +3 -0
  65. package/server/service/web-auth-credential/web-auth-credential.ts +66 -0
  66. package/server/utils/access-token-cookie.ts +12 -0
  67. package/translations/en.json +29 -27
  68. package/translations/ja.json +30 -28
  69. package/translations/ko.json +30 -28
  70. package/translations/ms.json +3 -1
  71. package/translations/zh.json +3 -1
@@ -6,4 +6,7 @@ export declare class AuthProviderParameterSpec {
6
6
  property?: {
7
7
  [key: string]: any;
8
8
  };
9
+ styles?: {
10
+ [key: string]: any;
11
+ };
9
12
  }
@@ -26,6 +26,10 @@ tslib_1.__decorate([
26
26
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
27
27
  tslib_1.__metadata("design:type", Object)
28
28
  ], AuthProviderParameterSpec.prototype, "property", void 0);
29
+ tslib_1.__decorate([
30
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
31
+ tslib_1.__metadata("design:type", Object)
32
+ ], AuthProviderParameterSpec.prototype, "styles", void 0);
29
33
  AuthProviderParameterSpec = tslib_1.__decorate([
30
34
  (0, type_graphql_1.ObjectType)()
31
35
  ], AuthProviderParameterSpec);
@@ -1 +1 @@
1
- {"version":3,"file":"auth-provider-parameter-spec.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-parameter-spec.ts"],"names":[],"mappings":";;;;AAAA,+CAAgD;AAEhD,iDAAoD;AAG7C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;CAerC,CAAA;AAdC;IAAC,IAAA,oBAAK,GAAE;;uDACI;AAEZ;IAAC,IAAA,oBAAK,GAAE;;wDACK;AAEb;IAAC,IAAA,oBAAK,GAAE;;uDACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8DACN;AAEpB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACf;AAdtB,yBAAyB;IADrC,IAAA,yBAAU,GAAE;GACA,yBAAyB,CAerC;AAfY,8DAAyB","sourcesContent":["import { Field, ObjectType } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\n\n@ObjectType()\nexport class AuthProviderParameterSpec {\n @Field()\n type: string\n\n @Field()\n label: string\n\n @Field()\n name: string\n\n @Field({ nullable: true })\n placeholder?: string\n\n @Field(type => ScalarObject, { nullable: true })\n property?: { [key: string]: any }\n}\n"]}
1
+ {"version":3,"file":"auth-provider-parameter-spec.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-parameter-spec.ts"],"names":[],"mappings":";;;;AAAA,+CAAgD;AAEhD,iDAAoD;AAG7C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;CAkBrC,CAAA;AAjBC;IAAC,IAAA,oBAAK,GAAE;;uDACI;AAEZ;IAAC,IAAA,oBAAK,GAAE;;wDACK;AAEb;IAAC,IAAA,oBAAK,GAAE;;uDACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8DACN;AAEpB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACf;AAEjC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACjB;AAjBpB,yBAAyB;IADrC,IAAA,yBAAU,GAAE;GACA,yBAAyB,CAkBrC;AAlBY,8DAAyB","sourcesContent":["import { Field, ObjectType } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\n\n@ObjectType()\nexport class AuthProviderParameterSpec {\n @Field()\n type: string\n\n @Field()\n label: string\n\n @Field()\n name: string\n\n @Field({ nullable: true })\n placeholder?: string\n\n @Field(type => ScalarObject, { nullable: true })\n property?: { [key: string]: any }\n\n @Field(type => ScalarObject, { nullable: true })\n styles?: { [key: string]: any }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-provider-type.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-type.ts"],"names":[],"mappings":";;;;AAEA,+CAAsF;AAEtF,iDAA+D;AAE/D,mDAAkE;AAI3D,IAAM,eAAe,GAArB,MAAM,eAAe;CAqB3B,CAAA;AApBC;IAAC,IAAA,oBAAK,GAAE;;6CACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAErB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAEnB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACjB;AApBpB,eAAe;IAD3B,IAAA,wBAAS,GAAE;GACC,eAAe,CAqB3B;AArBY,0CAAe;AAwBrB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CA2B7B,CAAA;AA1BC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC3B;AAEX;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACb;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACL;AAErB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAEnB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACjB;AAE/B;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACX;AA1BJ,iBAAiB;IAD7B,IAAA,wBAAS,GAAE;GACC,iBAAiB,CA2B7B;AA3BY,8CAAiB;AA8BvB,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAM5B,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,4BAAY,CAAC,CAAC;;+CACT;AAErB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;+CACN;AALF,gBAAgB;IAD5B,IAAA,yBAAU,GAAE;GACA,gBAAgB,CAM5B;AANY,4CAAgB","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\nimport { AuthProvider, AuthProviderStatus } from './auth-provider'\nimport { AuthProviderParameterSpec } from './auth-provider-parameter-spec'\n\n@InputType()\nexport class NewAuthProvider {\n @Field()\n type: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n}\n\n@InputType()\nexport class AuthProviderPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @Field({ nullable: true })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class AuthProviderList {\n @Field(type => [AuthProvider])\n items: AuthProvider[]\n\n @Field(type => Int)\n total: number\n}\n"]}
1
+ {"version":3,"file":"auth-provider-type.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,iDAAoD;AACpD,mDAA8C;AAGvC,IAAM,eAAe,GAArB,MAAM,eAAe;CAqB3B,CAAA;AApBC;IAAC,IAAA,oBAAK,GAAE;;6CACI;AAEZ;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAErB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAEnB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACjB;AApBpB,eAAe;IAD3B,IAAA,wBAAS,GAAE;GACC,eAAe,CAqB3B;AArBY,0CAAe;AAwBrB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CA2B7B,CAAA;AA1BC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC3B;AAEX;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACb;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACT;AAEjB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACL;AAErB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAEnB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACjB;AAE/B;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACX;AA1BJ,iBAAiB;IAD7B,IAAA,wBAAS,GAAE;GACC,iBAAiB,CA2B7B;AA3BY,8CAAiB;AA8BvB,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAM5B,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,4BAAY,CAAC,CAAC;;+CACT;AAErB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;+CACN;AALF,gBAAgB;IAD5B,IAAA,yBAAU,GAAE;GACA,gBAAgB,CAM5B;AANY,4CAAgB","sourcesContent":["import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\nimport { AuthProvider } from './auth-provider'\n\n@InputType()\nexport class NewAuthProvider {\n @Field()\n type: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n}\n\n@InputType()\nexport class AuthProviderPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n tenantId?: string\n\n @Field({ nullable: true })\n clientId?: string\n\n @Field({ nullable: true })\n clientSecret?: string\n\n @Field({ nullable: true })\n privateKey?: string\n\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @Field({ nullable: true })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class AuthProviderList {\n @Field(type => [AuthProvider])\n items: AuthProvider[]\n\n @Field(type => Int)\n total: number\n}\n"]}
@@ -12,10 +12,6 @@ export type AuthProviderImpl = {
12
12
  export type AuthProviderRegistry = {
13
13
  [type: string]: AuthProviderImpl;
14
14
  };
15
- export declare enum AuthProviderStatus {
16
- STATUS_A = "STATUS_A",
17
- STATUS_B = "STATUS_B"
18
- }
19
15
  export declare class AuthProviderType {
20
16
  type: string;
21
17
  description: string;
@@ -32,7 +28,6 @@ export declare class AuthProvider {
32
28
  domainId?: string;
33
29
  type?: string;
34
30
  active?: boolean;
35
- state?: AuthProviderStatus;
36
31
  tenantId?: string;
37
32
  clientId?: string;
38
33
  clientSecret?: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var AuthProvider_1;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AuthProvider = exports.AuthProviderTypeList = exports.AuthProviderType = exports.AuthProviderStatus = void 0;
4
+ exports.AuthProvider = exports.AuthProviderTypeList = exports.AuthProviderType = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const typeorm_1 = require("typeorm");
7
7
  const type_graphql_1 = require("type-graphql");
@@ -9,15 +9,6 @@ const shell_1 = require("@things-factory/shell");
9
9
  const user_1 = require("../user/user");
10
10
  const users_auth_providers_1 = require("../users-auth-providers/users-auth-providers");
11
11
  const auth_provider_parameter_spec_1 = require("./auth-provider-parameter-spec");
12
- var AuthProviderStatus;
13
- (function (AuthProviderStatus) {
14
- AuthProviderStatus["STATUS_A"] = "STATUS_A";
15
- AuthProviderStatus["STATUS_B"] = "STATUS_B";
16
- })(AuthProviderStatus = exports.AuthProviderStatus || (exports.AuthProviderStatus = {}));
17
- (0, type_graphql_1.registerEnumType)(AuthProviderStatus, {
18
- name: 'AuthProviderStatus',
19
- description: 'state enumeration of a authProvider'
20
- });
21
12
  let AuthProviderType = class AuthProviderType {
22
13
  };
23
14
  tslib_1.__decorate([
@@ -84,7 +75,7 @@ tslib_1.__decorate([
84
75
  ], AuthProvider.prototype, "id", void 0);
85
76
  tslib_1.__decorate([
86
77
  (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
87
- (0, type_graphql_1.Field)({ nullable: true }),
78
+ (0, type_graphql_1.Field)(type => shell_1.Domain),
88
79
  tslib_1.__metadata("design:type", shell_1.Domain)
89
80
  ], AuthProvider.prototype, "domain", void 0);
90
81
  tslib_1.__decorate([
@@ -101,11 +92,6 @@ tslib_1.__decorate([
101
92
  (0, type_graphql_1.Field)({ nullable: true }),
102
93
  tslib_1.__metadata("design:type", Boolean)
103
94
  ], AuthProvider.prototype, "active", void 0);
104
- tslib_1.__decorate([
105
- (0, typeorm_1.Column)({ nullable: true }),
106
- (0, type_graphql_1.Field)({ nullable: true }),
107
- tslib_1.__metadata("design:type", String)
108
- ], AuthProvider.prototype, "state", void 0);
109
95
  tslib_1.__decorate([
110
96
  (0, type_graphql_1.Directive)('@privilege(category: "security", privilege: "query", domainOwnerGranted: true)'),
111
97
  (0, typeorm_1.Column)({ nullable: true }),
@@ -1 +1 @@
1
- {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { Directive, ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Domain, ScalarObject, encryptTransformer } from '@things-factory/shell'\nimport { User } from '../user/user'\nimport { UsersAuthProviders } from '../users-auth-providers/users-auth-providers'\nimport { AuthProviderParameterSpec } from './auth-provider-parameter-spec'\n\nexport type AuthProviderImpl = {\n type: string\n description: string\n help: string\n parameterSpec: AuthProviderParameterSpec\n synchronizeUsers: (authProvider: AuthProvider, context: ResolverContext) => Promise<boolean>\n}\n\nexport type AuthProviderRegistry = {\n [type: string]: AuthProviderImpl\n}\n\nexport enum AuthProviderStatus {\n STATUS_A = 'STATUS_A',\n STATUS_B = 'STATUS_B'\n}\n\nregisterEnumType(AuthProviderStatus, {\n name: 'AuthProviderStatus',\n description: 'state enumeration of a authProvider'\n})\n\n@ObjectType()\nexport class AuthProviderType {\n @Field()\n type: string\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n help: string\n\n @Field(type => [AuthProviderParameterSpec], { nullable: true })\n parameterSpec: AuthProviderParameterSpec[]\n}\n\n@ObjectType()\nexport class AuthProviderTypeList {\n @Field(type => [AuthProviderType])\n items: AuthProviderType[]\n\n @Field(type => Int)\n total: number\n}\n\n@Entity()\n@Index('ix_auth_provider_0', (authProvider: AuthProvider) => [authProvider.domain, authProvider.type], {\n unique: true\n})\n@ObjectType({ description: 'Entity for AuthProvider' })\nexport class AuthProvider {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((authProvider: AuthProvider) => authProvider.domain)\n domainId?: string\n\n @Column()\n @Field({ nullable: true })\n type?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n active?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n state?: AuthProviderStatus\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n tenantId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n clientId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n clientSecret?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n privateKey?: string\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.authProvider)\n @Field(type => [UsersAuthProviders], { nullable: true })\n usersAuthProviders?: UsersAuthProviders[]\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.updater)\n updaterId?: string\n\n static registry = {}\n\n public static register(type: string, provider: AuthProviderImpl) {\n AuthProvider.registry[type] = provider\n }\n\n public static getAuthProviderTypes(): AuthProviderTypeList {\n const items = Object.values(AuthProvider.registry).map(({ type, description, help, parameterSpec }) => {\n return {\n type,\n description,\n help,\n parameterSpec\n }\n })\n\n return {\n items,\n total: items.length\n }\n }\n\n public static getAuthProviderImpl(type: string) {\n return AuthProvider.registry[type]\n }\n}\n"]}
1
+ {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../../server/service/auth-provider/auth-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { Directive, ObjectType, Field, Int, ID } from 'type-graphql'\n\nimport { Domain, ScalarObject, encryptTransformer } from '@things-factory/shell'\nimport { User } from '../user/user'\nimport { UsersAuthProviders } from '../users-auth-providers/users-auth-providers'\nimport { AuthProviderParameterSpec } from './auth-provider-parameter-spec'\n\nexport type AuthProviderImpl = {\n type: string\n description: string\n help: string\n parameterSpec: AuthProviderParameterSpec\n synchronizeUsers: (authProvider: AuthProvider, context: ResolverContext) => Promise<boolean>\n}\n\nexport type AuthProviderRegistry = {\n [type: string]: AuthProviderImpl\n}\n\n@ObjectType()\nexport class AuthProviderType {\n @Field()\n type: string\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n help: string\n\n @Field(type => [AuthProviderParameterSpec], { nullable: true })\n parameterSpec: AuthProviderParameterSpec[]\n}\n\n@ObjectType()\nexport class AuthProviderTypeList {\n @Field(type => [AuthProviderType])\n items: AuthProviderType[]\n\n @Field(type => Int)\n total: number\n}\n\n@Entity()\n@Index('ix_auth_provider_0', (authProvider: AuthProvider) => [authProvider.domain, authProvider.type], {\n unique: true\n})\n@ObjectType({ description: 'Entity for AuthProvider' })\nexport class AuthProvider {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((authProvider: AuthProvider) => authProvider.domain)\n domainId?: string\n\n @Column()\n @Field({ nullable: true })\n type?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n active?: boolean\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n tenantId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n clientId?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n clientSecret?: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true, transformer: encryptTransformer })\n @Field({ nullable: true })\n privateKey?: string\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n params?: { [key: string]: any }\n\n @OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.authProvider)\n @Field(type => [UsersAuthProviders], { nullable: true })\n usersAuthProviders?: UsersAuthProviders[]\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((authProvider: AuthProvider) => authProvider.updater)\n updaterId?: string\n\n static registry = {}\n\n public static register(type: string, provider: AuthProviderImpl) {\n AuthProvider.registry[type] = provider\n }\n\n public static getAuthProviderTypes(): AuthProviderTypeList {\n const items = Object.values(AuthProvider.registry).map(({ type, description, help, parameterSpec }) => {\n return {\n type,\n description,\n help,\n parameterSpec\n }\n })\n\n return {\n items,\n total: items.length\n }\n }\n\n public static getAuthProviderImpl(type: string) {\n return AuthProvider.registry[type]\n }\n}\n"]}
@@ -12,6 +12,7 @@ export * from './app-binding/app-binding';
12
12
  export * from './password-history/password-history';
13
13
  export * from './verification-token/verification-token';
14
14
  export * from './login-history/login-history';
15
+ export * from './web-auth-credential/web-auth-credential';
15
16
  export * from './app-binding/app-binding-types';
16
17
  export * from './appliance/appliance-types';
17
18
  export * from './application/application-types';
@@ -21,7 +22,7 @@ export * from './partner/partner-types';
21
22
  export * from './privilege/privilege-types';
22
23
  export * from './role/role-types';
23
24
  export * from './user/user-types';
24
- export declare const entities: (typeof import("./auth-provider/auth-provider").AuthProvider | typeof import("./users-auth-providers/users-auth-providers").UsersAuthProviders | typeof import("./user/user").User | typeof import("./role/role").Role | typeof import("./privilege/privilege").Privilege | typeof import("./verification-token/verification-token").VerificationToken | typeof import("./verification-token/verification-token").VerificationTokenType | typeof import("./password-history/password-history").PasswordHistory | typeof import("./invitation/invitation").Invitation | typeof import("./application/application").Application | typeof import("./login-history/login-history").LoginHistory | typeof import("./appliance/appliance").Appliance | typeof import("./granted-role/granted-role").GrantedRole | typeof import("./partner/partner").Partner)[];
25
+ export declare const entities: (typeof import("./web-auth-credential/web-auth-credential").WebAuthCredential | typeof import("./user/user").User | typeof import("./auth-provider/auth-provider").AuthProvider | typeof import("./users-auth-providers/users-auth-providers").UsersAuthProviders | typeof import("./role/role").Role | typeof import("./privilege/privilege").Privilege | typeof import("./verification-token/verification-token").VerificationToken | typeof import("./verification-token/verification-token").VerificationTokenType | typeof import("./password-history/password-history").PasswordHistory | typeof import("./invitation/invitation").Invitation | typeof import("./application/application").Application | typeof import("./login-history/login-history").LoginHistory | typeof import("./appliance/appliance").Appliance | typeof import("./granted-role/granted-role").GrantedRole | typeof import("./partner/partner").Partner)[];
25
26
  export declare const schema: {
26
27
  typeDefs: {
27
28
  privilegeDirectiveTypeDefs: import("graphql").DocumentNode;
@@ -19,6 +19,7 @@ const privilege_directive_1 = require("./privilege/privilege-directive");
19
19
  const role_1 = require("./role");
20
20
  const user_1 = require("./user");
21
21
  const verification_token_1 = require("./verification-token");
22
+ const web_auth_credential_1 = require("./web-auth-credential");
22
23
  /* EXPORT ENTITY TYPES */
23
24
  tslib_1.__exportStar(require("./users-auth-providers/users-auth-providers"), exports);
24
25
  tslib_1.__exportStar(require("./auth-provider/auth-provider"), exports);
@@ -34,6 +35,7 @@ tslib_1.__exportStar(require("./app-binding/app-binding"), exports);
34
35
  tslib_1.__exportStar(require("./password-history/password-history"), exports);
35
36
  tslib_1.__exportStar(require("./verification-token/verification-token"), exports);
36
37
  tslib_1.__exportStar(require("./login-history/login-history"), exports);
38
+ tslib_1.__exportStar(require("./web-auth-credential/web-auth-credential"), exports);
37
39
  /* EXPORT TYPES */
38
40
  tslib_1.__exportStar(require("./app-binding/app-binding-types"), exports);
39
41
  tslib_1.__exportStar(require("./appliance/appliance-types"), exports);
@@ -58,7 +60,8 @@ exports.entities = [
58
60
  ...invitation_1.entities,
59
61
  ...password_history_1.entities,
60
62
  ...verification_token_1.entities,
61
- ...login_history_1.entities
63
+ ...login_history_1.entities,
64
+ ...web_auth_credential_1.entities
62
65
  ];
63
66
  exports.schema = {
64
67
  typeDefs: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAmC;AACnC,iEAG+B;AAC/B,mDAAsG;AACtG,+CAA+D;AAC/D,2CAA4F;AAC5F,+CAAkG;AAClG,yDAAyE;AACzE,iDAAkG;AAClG,6CAA8F;AAC9F,mDAAqG;AACrG,uCAAsF;AACtF,yDAAwE;AACxE,2CAA4F;AAC5F,yEAAwG;AACxG,iCAA6E;AAC7E,iCAA6E;AAC7E,6DAA4E;AAE5E,yBAAyB;AACzB,sFAA2D;AAC3D,wEAA6C;AAC7C,oEAAyC;AACzC,gEAAqC;AACrC,gEAAqC;AACrC,sDAA2B;AAC3B,sDAA2B;AAC3B,4DAAiC;AACjC,sEAA2C;AAC3C,kEAAuC;AACvC,oEAAyC;AACzC,8EAAmD;AACnD,kFAAuD;AACvD,wEAA6C;AAE7C,kBAAkB;AAClB,0EAA+C;AAC/C,sEAA2C;AAC3C,0EAA+C;AAC/C,oFAAyD;AACzD,wEAA6C;AAC7C,kEAAuC;AACvC,sEAA2C;AAC3C,4DAAiC;AACjC,4DAAiC;AAEpB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,+BAA0B;IAC7B,GAAG,wBAAoB;IACvB,GAAG,sBAAmB;IACtB,GAAG,oBAAiB;IACpB,GAAG,oBAAiB;IACpB,GAAG,eAAY;IACf,GAAG,eAAY;IACf,GAAG,kBAAe;IAClB,GAAG,uBAAmB;IACtB,GAAG,qBAAkB;IACrB,GAAG,2BAAuB;IAC1B,GAAG,6BAAyB;IAC5B,GAAG,wBAAoB;CACxB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,QAAQ,EAAE;QACR,0BAA0B,EAA1B,gDAA0B;KAC3B;IAED,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,gCAA2B;QAC9B,GAAG,yBAAqB;QACxB,GAAG,uBAAoB;QACvB,GAAG,qBAAkB;QACrB,GAAG,qBAAkB;QACrB,GAAG,gBAAa;QAChB,GAAG,gBAAa;QAChB,GAAG,mBAAgB;QACnB,GAAG,wBAAmB;QACtB,GAAG,sBAAkB;QACrB,GAAG,uBAAkB;QACrB,GAAG,4BAAuB;QAC1B,GAAG,yBAAoB;KACxB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gDAA0B;KACtC;CACF,CAAA","sourcesContent":["/* IMPORT ENTITIES AND RESOLVERS */\nimport {\n entities as UsersAuthProvidersEntities,\n resolvers as UsersAuthProvidersResolvers\n} from './users-auth-providers'\nimport { entities as AuthProviderEntities, resolvers as AuthProviderResolvers } from './auth-provider'\nimport { resolvers as AppbindingResolver } from './app-binding'\nimport { entities as ApplianceEntities, resolvers as ApplianceResolvers } from './appliance'\nimport { entities as ApplicationEntities, resolvers as ApplicationResolvers } from './application'\nimport { resolvers as DomainGeneratorResolver } from './domain-generator'\nimport { entities as GrantedRoleEntities, resolvers as GrantedRoleResolver } from './granted-role'\nimport { entities as InvitationEntities, resolvers as InvitationResolver } from './invitation'\nimport { entities as LoginHistoryEntities, resolvers as LoginHistoryResolver } from './login-history'\nimport { entities as PartnerEntities, resolvers as PartnerResolvers } from './partner'\nimport { entities as PasswordHistoryEntities } from './password-history'\nimport { entities as PrivilegeEntities, resolvers as PrivilegeResolvers } from './privilege'\nimport { privilegeDirectiveResolver, privilegeDirectiveTypeDefs } from './privilege/privilege-directive'\nimport { entities as RoleEntities, resolvers as RoleResolvers } from './role'\nimport { entities as UserEntities, resolvers as UserResolvers } from './user'\nimport { entities as VerificationTokenEntities } from './verification-token'\n\n/* EXPORT ENTITY TYPES */\nexport * from './users-auth-providers/users-auth-providers'\nexport * from './auth-provider/auth-provider'\nexport * from './application/application'\nexport * from './appliance/appliance'\nexport * from './privilege/privilege'\nexport * from './role/role'\nexport * from './user/user'\nexport * from './partner/partner'\nexport * from './granted-role/granted-role'\nexport * from './invitation/invitation'\nexport * from './app-binding/app-binding'\nexport * from './password-history/password-history'\nexport * from './verification-token/verification-token'\nexport * from './login-history/login-history'\n\n/* EXPORT TYPES */\nexport * from './app-binding/app-binding-types'\nexport * from './appliance/appliance-types'\nexport * from './application/application-types'\nexport * from './domain-generator/domain-generator-types'\nexport * from './invitation/invitation-types'\nexport * from './partner/partner-types'\nexport * from './privilege/privilege-types'\nexport * from './role/role-types'\nexport * from './user/user-types'\n\nexport const entities = [\n /* ENTITIES */\n ...UsersAuthProvidersEntities,\n ...AuthProviderEntities,\n ...ApplicationEntities,\n ...ApplianceEntities,\n ...PrivilegeEntities,\n ...RoleEntities,\n ...UserEntities,\n ...PartnerEntities,\n ...GrantedRoleEntities,\n ...InvitationEntities,\n ...PasswordHistoryEntities,\n ...VerificationTokenEntities,\n ...LoginHistoryEntities\n]\n\nexport const schema = {\n typeDefs: {\n privilegeDirectiveTypeDefs\n },\n\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...UsersAuthProvidersResolvers,\n ...AuthProviderResolvers,\n ...ApplicationResolvers,\n ...ApplianceResolvers,\n ...PrivilegeResolvers,\n ...RoleResolvers,\n ...UserResolvers,\n ...PartnerResolvers,\n ...GrantedRoleResolver,\n ...InvitationResolver,\n ...AppbindingResolver,\n ...DomainGeneratorResolver,\n ...LoginHistoryResolver\n ],\n directives: {\n privilege: privilegeDirectiveResolver\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAmC;AACnC,iEAAyH;AACzH,mDAAsG;AACtG,+CAA+D;AAC/D,2CAA4F;AAC5F,+CAAkG;AAClG,yDAAyE;AACzE,iDAAkG;AAClG,6CAA8F;AAC9F,mDAAqG;AACrG,uCAAsF;AACtF,yDAAwE;AACxE,2CAA4F;AAC5F,yEAAwG;AACxG,iCAA6E;AAC7E,iCAA6E;AAC7E,6DAA4E;AAC5E,+DAA6E;AAE7E,yBAAyB;AACzB,sFAA2D;AAC3D,wEAA6C;AAC7C,oEAAyC;AACzC,gEAAqC;AACrC,gEAAqC;AACrC,sDAA2B;AAC3B,sDAA2B;AAC3B,4DAAiC;AACjC,sEAA2C;AAC3C,kEAAuC;AACvC,oEAAyC;AACzC,8EAAmD;AACnD,kFAAuD;AACvD,wEAA6C;AAC7C,oFAAyD;AAEzD,kBAAkB;AAClB,0EAA+C;AAC/C,sEAA2C;AAC3C,0EAA+C;AAC/C,oFAAyD;AACzD,wEAA6C;AAC7C,kEAAuC;AACvC,sEAA2C;AAC3C,4DAAiC;AACjC,4DAAiC;AAEpB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,+BAA0B;IAC7B,GAAG,wBAAoB;IACvB,GAAG,sBAAmB;IACtB,GAAG,oBAAiB;IACpB,GAAG,oBAAiB;IACpB,GAAG,eAAY;IACf,GAAG,eAAY;IACf,GAAG,kBAAe;IAClB,GAAG,uBAAmB;IACtB,GAAG,qBAAkB;IACrB,GAAG,2BAAuB;IAC1B,GAAG,6BAAyB;IAC5B,GAAG,wBAAoB;IACvB,GAAG,8BAAyB;CAC7B,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,QAAQ,EAAE;QACR,0BAA0B,EAA1B,gDAA0B;KAC3B;IAED,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,gCAA2B;QAC9B,GAAG,yBAAqB;QACxB,GAAG,uBAAoB;QACvB,GAAG,qBAAkB;QACrB,GAAG,qBAAkB;QACrB,GAAG,gBAAa;QAChB,GAAG,gBAAa;QAChB,GAAG,mBAAgB;QACnB,GAAG,wBAAmB;QACtB,GAAG,sBAAkB;QACrB,GAAG,uBAAkB;QACrB,GAAG,4BAAuB;QAC1B,GAAG,yBAAoB;KACxB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gDAA0B;KACtC;CACF,CAAA","sourcesContent":["/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as UsersAuthProvidersEntities, resolvers as UsersAuthProvidersResolvers } from './users-auth-providers'\nimport { entities as AuthProviderEntities, resolvers as AuthProviderResolvers } from './auth-provider'\nimport { resolvers as AppbindingResolver } from './app-binding'\nimport { entities as ApplianceEntities, resolvers as ApplianceResolvers } from './appliance'\nimport { entities as ApplicationEntities, resolvers as ApplicationResolvers } from './application'\nimport { resolvers as DomainGeneratorResolver } from './domain-generator'\nimport { entities as GrantedRoleEntities, resolvers as GrantedRoleResolver } from './granted-role'\nimport { entities as InvitationEntities, resolvers as InvitationResolver } from './invitation'\nimport { entities as LoginHistoryEntities, resolvers as LoginHistoryResolver } from './login-history'\nimport { entities as PartnerEntities, resolvers as PartnerResolvers } from './partner'\nimport { entities as PasswordHistoryEntities } from './password-history'\nimport { entities as PrivilegeEntities, resolvers as PrivilegeResolvers } from './privilege'\nimport { privilegeDirectiveResolver, privilegeDirectiveTypeDefs } from './privilege/privilege-directive'\nimport { entities as RoleEntities, resolvers as RoleResolvers } from './role'\nimport { entities as UserEntities, resolvers as UserResolvers } from './user'\nimport { entities as VerificationTokenEntities } from './verification-token'\nimport { entities as WebAuthCredentialEntities } from './web-auth-credential'\n\n/* EXPORT ENTITY TYPES */\nexport * from './users-auth-providers/users-auth-providers'\nexport * from './auth-provider/auth-provider'\nexport * from './application/application'\nexport * from './appliance/appliance'\nexport * from './privilege/privilege'\nexport * from './role/role'\nexport * from './user/user'\nexport * from './partner/partner'\nexport * from './granted-role/granted-role'\nexport * from './invitation/invitation'\nexport * from './app-binding/app-binding'\nexport * from './password-history/password-history'\nexport * from './verification-token/verification-token'\nexport * from './login-history/login-history'\nexport * from './web-auth-credential/web-auth-credential'\n\n/* EXPORT TYPES */\nexport * from './app-binding/app-binding-types'\nexport * from './appliance/appliance-types'\nexport * from './application/application-types'\nexport * from './domain-generator/domain-generator-types'\nexport * from './invitation/invitation-types'\nexport * from './partner/partner-types'\nexport * from './privilege/privilege-types'\nexport * from './role/role-types'\nexport * from './user/user-types'\n\nexport const entities = [\n /* ENTITIES */\n ...UsersAuthProvidersEntities,\n ...AuthProviderEntities,\n ...ApplicationEntities,\n ...ApplianceEntities,\n ...PrivilegeEntities,\n ...RoleEntities,\n ...UserEntities,\n ...PartnerEntities,\n ...GrantedRoleEntities,\n ...InvitationEntities,\n ...PasswordHistoryEntities,\n ...VerificationTokenEntities,\n ...LoginHistoryEntities,\n ...WebAuthCredentialEntities\n]\n\nexport const schema = {\n typeDefs: {\n privilegeDirectiveTypeDefs\n },\n\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...UsersAuthProvidersResolvers,\n ...AuthProviderResolvers,\n ...ApplicationResolvers,\n ...ApplianceResolvers,\n ...PrivilegeResolvers,\n ...RoleResolvers,\n ...UserResolvers,\n ...PartnerResolvers,\n ...GrantedRoleResolver,\n ...InvitationResolver,\n ...AppbindingResolver,\n ...DomainGeneratorResolver,\n ...LoginHistoryResolver\n ],\n directives: {\n privilege: privilegeDirectiveResolver\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { Domain } from '@things-factory/shell';
2
2
  import { Role } from '../role/role';
3
+ import { WebAuthCredential } from '../web-auth-credential/web-auth-credential';
3
4
  import { UsersAuthProviders } from '../users-auth-providers/users-auth-providers';
4
5
  export declare enum UserStatus {
5
6
  INACTIVE = "inactive",
@@ -26,6 +27,7 @@ export declare class User {
26
27
  failCount: number;
27
28
  passwordUpdatedAt: Date;
28
29
  owner: boolean;
30
+ credentials: WebAuthCredential[];
29
31
  usersAuthProviders: UsersAuthProviders[];
30
32
  creator: User;
31
33
  creatorId: string;
@@ -15,6 +15,7 @@ const auth_error_1 = require("../../errors/auth-error");
15
15
  const get_secret_1 = require("../../utils/get-secret");
16
16
  const role_1 = require("../role/role");
17
17
  const privilege_1 = require("../privilege/privilege");
18
+ const web_auth_credential_1 = require("../web-auth-credential/web-auth-credential");
18
19
  const users_auth_providers_1 = require("../users-auth-providers/users-auth-providers");
19
20
  const get_user_domains_1 = require("../../utils/get-user-domains");
20
21
  const ORMCONFIG = env_1.config.get('ormconfig', {});
@@ -124,7 +125,7 @@ let User = User_1 = class User {
124
125
  const repository = (0, shell_1.getRepository)(User_1);
125
126
  var user = await repository.findOne({
126
127
  where: { id: decoded.id },
127
- relations: ['domains'],
128
+ relations: ['domains', 'credentials'],
128
129
  cache: true
129
130
  });
130
131
  if (!user)
@@ -202,13 +203,11 @@ tslib_1.__decorate([
202
203
  ], User.prototype, "id", void 0);
203
204
  tslib_1.__decorate([
204
205
  (0, typeorm_1.Column)(),
205
- (0, type_graphql_1.Field)(),
206
+ (0, type_graphql_1.Field)({ nullable: true }),
206
207
  tslib_1.__metadata("design:type", String)
207
208
  ], User.prototype, "name", void 0);
208
209
  tslib_1.__decorate([
209
- (0, typeorm_1.Column)({
210
- nullable: true
211
- }),
210
+ (0, typeorm_1.Column)({ nullable: true }),
212
211
  (0, type_graphql_1.Field)({ nullable: true }),
213
212
  tslib_1.__metadata("design:type", String)
214
213
  ], User.prototype, "description", void 0);
@@ -238,24 +237,18 @@ tslib_1.__decorate([
238
237
  tslib_1.__metadata("design:type", Array)
239
238
  ], User.prototype, "roles", void 0);
240
239
  tslib_1.__decorate([
241
- (0, typeorm_1.Column)({
242
- nullable: true
243
- }),
240
+ (0, typeorm_1.Column)({ nullable: true }),
244
241
  (0, type_graphql_1.Field)({ nullable: true }),
245
242
  tslib_1.__metadata("design:type", String)
246
243
  ], User.prototype, "userType", void 0);
247
244
  tslib_1.__decorate([
248
- (0, typeorm_1.Column)({
249
- nullable: true
250
- }),
245
+ (0, typeorm_1.Column)({ nullable: true }),
251
246
  (0, type_graphql_1.Field)({ nullable: true }),
252
247
  tslib_1.__metadata("design:type", String)
253
248
  ], User.prototype, "reference", void 0);
254
249
  tslib_1.__decorate([
255
250
  (0, type_graphql_1.Directive)('@privilege(category: "security", privilege: "query", domainOwnerGranted: true)'),
256
- (0, typeorm_1.Column)({
257
- nullable: true
258
- }),
251
+ (0, typeorm_1.Column)({ nullable: true }),
259
252
  tslib_1.__metadata("design:type", String)
260
253
  ], User.prototype, "salt", void 0);
261
254
  tslib_1.__decorate([
@@ -279,22 +272,21 @@ tslib_1.__decorate([
279
272
  tslib_1.__metadata("design:type", String)
280
273
  ], User.prototype, "status", void 0);
281
274
  tslib_1.__decorate([
282
- (0, typeorm_1.Column)({
283
- type: 'smallint',
284
- default: 0
285
- }),
275
+ (0, typeorm_1.Column)({ type: 'smallint', default: 0 }),
286
276
  tslib_1.__metadata("design:type", Number)
287
277
  ], User.prototype, "failCount", void 0);
288
278
  tslib_1.__decorate([
289
- (0, typeorm_1.Column)({
290
- nullable: true
291
- }),
279
+ (0, typeorm_1.Column)({ nullable: true }),
292
280
  tslib_1.__metadata("design:type", Date)
293
281
  ], User.prototype, "passwordUpdatedAt", void 0);
294
282
  tslib_1.__decorate([
295
283
  (0, type_graphql_1.Field)({ nullable: true }),
296
284
  tslib_1.__metadata("design:type", Boolean)
297
285
  ], User.prototype, "owner", void 0);
286
+ tslib_1.__decorate([
287
+ (0, typeorm_1.OneToMany)(() => web_auth_credential_1.WebAuthCredential, credential => credential.user),
288
+ tslib_1.__metadata("design:type", Array)
289
+ ], User.prototype, "credentials", void 0);
298
290
  tslib_1.__decorate([
299
291
  (0, typeorm_1.OneToMany)(() => users_auth_providers_1.UsersAuthProviders, usersAuthProviders => usersAuthProviders.user),
300
292
  (0, type_graphql_1.Field)(type => [users_auth_providers_1.UsersAuthProviders], { nullable: true }),
@@ -332,9 +324,7 @@ tslib_1.__decorate([
332
324
  ], User.prototype, "updatedAt", void 0);
333
325
  User = User_1 = tslib_1.__decorate([
334
326
  (0, typeorm_1.Entity)(),
335
- (0, typeorm_1.Index)('ix_user_0', (user) => [user.email], { unique: true })
336
- //@Index('ix_user_1', (user: User) => [user.id], { unique: true })
337
- ,
327
+ (0, typeorm_1.Index)('ix_user_0', (user) => [user.email], { unique: true }),
338
328
  (0, type_graphql_1.ObjectType)()
339
329
  ], User);
340
330
  exports.User = User;
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../server/service/user/user.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto'\nimport jwt from 'jsonwebtoken'\nimport { Directive, Field, ID, ObjectType } from 'type-graphql'\nimport { GraphQLEmailAddress } from 'graphql-scalars'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { config } from '@things-factory/env'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { validatePasswordByRule } from '../../controllers/utils/password-rule'\nimport { AuthError } from '../../errors/auth-error'\nimport { SECRET } from '../../utils/get-secret'\nimport { Role } from '../role/role'\nimport { Privilege } from '../privilege/privilege'\nimport { UsersAuthProviders } from '../users-auth-providers/users-auth-providers'\nimport { getDomainsWithPrivilege } from '../../utils/get-user-domains'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nconst sessionExpirySeconds = Number(config.get('session/expirySeconds')) || '7d'\n\nexport enum UserStatus {\n INACTIVE = 'inactive',\n ACTIVATED = 'activated',\n DELETED = 'deleted',\n LOCKED = 'locked',\n BANNED = 'banned',\n PWD_RESET_REQUIRED = 'password_reset_required'\n}\n\n@Entity()\n@Index('ix_user_0', (user: User) => [user.email], { unique: true })\n//@Index('ix_user_1', (user: User) => [user.id], { unique: true })\n@ObjectType()\nexport class User {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column()\n @Field()\n name: string\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n description: string\n\n @ManyToMany(type => Domain)\n @JoinTable({ name: 'users_domains' })\n @Field(type => [Domain])\n domains?: Domain[]\n\n @Column()\n @Field(type => GraphQLEmailAddress)\n email: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({\n nullable: true,\n type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'longtext' : DATABASE_TYPE == 'oracle' ? 'clob' : 'varchar'\n })\n password: string\n\n @ManyToMany(type => Role, role => role.users)\n @JoinTable({ name: 'users_roles' })\n @Field(type => [Role])\n roles?: Role[]\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n userType: string // default: 'user', enum: 'user', 'application', 'appliance'\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n reference: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({\n nullable: true\n })\n salt: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n locale: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n ssoId: string\n\n @Column({\n type: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'enum' : DATABASE_TYPE == 'oracle' ? 'varchar2' : 'smallint',\n enum: UserStatus,\n default: UserStatus.INACTIVE\n })\n @Field(type => String)\n status: UserStatus\n\n @Column({\n type: 'smallint',\n default: 0\n })\n failCount: number\n\n @Column({\n nullable: true\n })\n passwordUpdatedAt: Date\n\n @Field({ nullable: true })\n owner: boolean /* should not be a column */\n\n @OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.user)\n @Field(type => [UsersAuthProviders], { nullable: true })\n usersAuthProviders: UsersAuthProviders[]\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n creator: User\n\n @RelationId((user: User) => user.creator)\n creatorId: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n updater: User\n\n @RelationId((user: User) => user.updater)\n updaterId: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt: Date\n\n /* signing for jsonwebtoken */\n async sign(options?) {\n var { expiresIn = sessionExpirySeconds, subdomain } = options || {}\n\n var user = {\n id: this.id,\n userType: this.userType,\n status: this.status,\n domain: {\n subdomain\n }\n }\n\n return await jwt.sign(user, SECRET, {\n expiresIn,\n issuer: 'hatiolab.com',\n subject: 'user'\n })\n }\n\n /* validate password through password rule */\n static validatePasswordByRule(password, lng) {\n validatePasswordByRule(password, lng)\n }\n\n /* generate salt */\n static generateSalt() {\n return crypto.randomBytes(16).toString('hex')\n }\n\n /* encode password */\n static encode(password: string, salt) {\n return crypto\n .createHmac('sha256', salt || SECRET)\n .update(password)\n .digest('base64')\n }\n\n /* verify password */\n static verify(hashed, password, salt) {\n return (\n hashed ==\n crypto\n .createHmac('sha256', salt || SECRET)\n .update(password)\n .digest('base64') ||\n hashed ==\n crypto\n .createHmac('sha1', salt || SECRET)\n .update(password)\n .digest('base64')\n )\n }\n\n static async checkAuthWithEmail(decoded) {\n if (!decoded?.email) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n }\n\n const repository = getRepository(User)\n var user = await repository.findOne({\n where: { email: decoded.email },\n relations: ['domains'],\n cache: true\n })\n\n if (!user)\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n else {\n switch (user.status) {\n case UserStatus.INACTIVE:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.LOCKED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.DELETED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_DELETED\n })\n }\n\n return user\n }\n }\n\n static async checkAuth(decoded) {\n if (decoded?.id === undefined) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n }\n\n const repository = getRepository(User)\n var user = await repository.findOne({\n where: { id: decoded.id },\n relations: ['domains'],\n cache: true\n })\n\n if (!user)\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n else {\n switch (user.status) {\n case UserStatus.INACTIVE:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.LOCKED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.DELETED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_DELETED\n })\n }\n\n const { defaultPassword } = config.get('password')\n\n if (defaultPassword && user.password === this.encode(defaultPassword, user.salt)) {\n user.status = UserStatus.PWD_RESET_REQUIRED\n }\n\n return user\n }\n }\n\n static async hasPrivilege(privilege: string, category: string, domain: Domain, user: User): Promise<boolean> {\n const result = await getRepository(Privilege)\n .createQueryBuilder('privilege')\n .innerJoin('privilege.roles', 'role')\n .innerJoin('role.users', 'user')\n .where('privilege.category = :category', { category })\n .andWhere('privilege.name = :privilege', { privilege })\n .andWhere('user.id = :userId', { userId: user.id })\n .andWhere('role.domain.id = :domainId', { domainId: domain.id })\n .getCount()\n\n return result > 0\n }\n\n static async getPrivilegesByDomain(user: User, domain: Domain): Promise<{ category: string; privilege: string }[]> {\n const result = await getRepository(User)\n .createQueryBuilder('user')\n .leftJoinAndSelect('user.roles', 'role')\n .leftJoinAndSelect('role.privileges', 'privilege')\n .select(['privilege.name AS privilege', 'privilege.category AS category'])\n .where('user.id = :userId', { userId: user.id })\n .andWhere('role.domain.id = :domainId', { domainId: domain.id })\n .orderBy('privilege.category')\n .addOrderBy('privilege.name')\n .getRawMany()\n\n const distinct = result.reduce((acc, current) => {\n const last = acc[acc.length - 1]\n if (!last || last.privilege !== current.privilege || last.category !== current.category) {\n acc.push(current)\n }\n return acc\n }, [])\n\n return distinct\n }\n\n static async getDomainsWithPrivilege(privilege: string, category: string, user: User) {\n return getDomainsWithPrivilege(user, privilege, category)\n }\n}\n"]}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../server/service/user/user.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto'\nimport jwt from 'jsonwebtoken'\nimport { Directive, Field, ID, ObjectType } from 'type-graphql'\nimport { GraphQLEmailAddress } from 'graphql-scalars'\nimport { Column, CreateDateColumn, Entity, Index, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\n\nimport { config } from '@things-factory/env'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { validatePasswordByRule } from '../../controllers/utils/password-rule'\nimport { AuthError } from '../../errors/auth-error'\nimport { SECRET } from '../../utils/get-secret'\nimport { Role } from '../role/role'\nimport { Privilege } from '../privilege/privilege'\nimport { WebAuthCredential } from '../web-auth-credential/web-auth-credential'\nimport { UsersAuthProviders } from '../users-auth-providers/users-auth-providers'\nimport { getDomainsWithPrivilege } from '../../utils/get-user-domains'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nconst sessionExpirySeconds = Number(config.get('session/expirySeconds')) || '7d'\n\nexport enum UserStatus {\n INACTIVE = 'inactive',\n ACTIVATED = 'activated',\n DELETED = 'deleted',\n LOCKED = 'locked',\n BANNED = 'banned',\n PWD_RESET_REQUIRED = 'password_reset_required'\n}\n\n@Entity()\n@Index('ix_user_0', (user: User) => [user.email], { unique: true })\n@ObjectType()\nexport class User {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column()\n @Field({ nullable: true })\n name: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description: string\n\n @ManyToMany(type => Domain)\n @JoinTable({ name: 'users_domains' })\n @Field(type => [Domain])\n domains?: Domain[]\n\n @Column()\n @Field(type => GraphQLEmailAddress)\n email: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({\n nullable: true,\n type: DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'longtext' : DATABASE_TYPE == 'oracle' ? 'clob' : 'varchar'\n })\n password: string\n\n @ManyToMany(type => Role, role => role.users)\n @JoinTable({ name: 'users_roles' })\n @Field(type => [Role])\n roles?: Role[]\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n userType: string // default: 'user', enum: 'user', 'application', 'appliance'\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n reference: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n salt: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n locale: string\n\n @Directive('@privilege(category: \"security\", privilege: \"query\", domainOwnerGranted: true)')\n @Column({ nullable: true })\n @Field({ nullable: true })\n ssoId: string\n\n @Column({\n type: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? 'enum' : DATABASE_TYPE == 'oracle' ? 'varchar2' : 'smallint',\n enum: UserStatus,\n default: UserStatus.INACTIVE\n })\n @Field(type => String)\n status: UserStatus\n\n @Column({ type: 'smallint', default: 0 })\n failCount: number\n\n @Column({ nullable: true })\n passwordUpdatedAt: Date\n\n @Field({ nullable: true })\n owner: boolean /* should not be a column */\n\n @OneToMany(() => WebAuthCredential, credential => credential.user)\n credentials: WebAuthCredential[]\n\n @OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.user)\n @Field(type => [UsersAuthProviders], { nullable: true })\n usersAuthProviders: UsersAuthProviders[]\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n creator: User\n\n @RelationId((user: User) => user.creator)\n creatorId: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field({ nullable: true })\n updater: User\n\n @RelationId((user: User) => user.updater)\n updaterId: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt: Date\n\n /* signing for jsonwebtoken */\n async sign(options?) {\n var { expiresIn = sessionExpirySeconds, subdomain } = options || {}\n\n var user = {\n id: this.id,\n userType: this.userType,\n status: this.status,\n domain: {\n subdomain\n }\n }\n\n return await jwt.sign(user, SECRET, {\n expiresIn,\n issuer: 'hatiolab.com',\n subject: 'user'\n })\n }\n\n /* validate password through password rule */\n static validatePasswordByRule(password, lng) {\n validatePasswordByRule(password, lng)\n }\n\n /* generate salt */\n static generateSalt() {\n return crypto.randomBytes(16).toString('hex')\n }\n\n /* encode password */\n static encode(password: string, salt) {\n return crypto\n .createHmac('sha256', salt || SECRET)\n .update(password)\n .digest('base64')\n }\n\n /* verify password */\n static verify(hashed, password, salt) {\n return (\n hashed ==\n crypto\n .createHmac('sha256', salt || SECRET)\n .update(password)\n .digest('base64') ||\n hashed ==\n crypto\n .createHmac('sha1', salt || SECRET)\n .update(password)\n .digest('base64')\n )\n }\n\n static async checkAuthWithEmail(decoded) {\n if (!decoded?.email) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n }\n\n const repository = getRepository(User)\n var user = await repository.findOne({\n where: { email: decoded.email },\n relations: ['domains'],\n cache: true\n })\n\n if (!user)\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n else {\n switch (user.status) {\n case UserStatus.INACTIVE:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.LOCKED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.DELETED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_DELETED\n })\n }\n\n return user\n }\n }\n\n static async checkAuth(decoded) {\n if (decoded?.id === undefined) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n }\n\n const repository = getRepository(User)\n var user = await repository.findOne({\n where: { id: decoded.id },\n relations: ['domains', 'credentials'],\n cache: true\n })\n\n if (!user)\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_FOUND\n })\n else {\n switch (user.status) {\n case UserStatus.INACTIVE:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_NOT_ACTIVATED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.LOCKED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_LOCKED,\n detail: {\n email: user.email\n }\n })\n case UserStatus.DELETED:\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USER_DELETED\n })\n }\n\n const { defaultPassword } = config.get('password')\n\n if (defaultPassword && user.password === this.encode(defaultPassword, user.salt)) {\n user.status = UserStatus.PWD_RESET_REQUIRED\n }\n\n return user\n }\n }\n\n static async hasPrivilege(privilege: string, category: string, domain: Domain, user: User): Promise<boolean> {\n const result = await getRepository(Privilege)\n .createQueryBuilder('privilege')\n .innerJoin('privilege.roles', 'role')\n .innerJoin('role.users', 'user')\n .where('privilege.category = :category', { category })\n .andWhere('privilege.name = :privilege', { privilege })\n .andWhere('user.id = :userId', { userId: user.id })\n .andWhere('role.domain.id = :domainId', { domainId: domain.id })\n .getCount()\n\n return result > 0\n }\n\n static async getPrivilegesByDomain(user: User, domain: Domain): Promise<{ category: string; privilege: string }[]> {\n const result = await getRepository(User)\n .createQueryBuilder('user')\n .leftJoinAndSelect('user.roles', 'role')\n .leftJoinAndSelect('role.privileges', 'privilege')\n .select(['privilege.name AS privilege', 'privilege.category AS category'])\n .where('user.id = :userId', { userId: user.id })\n .andWhere('role.domain.id = :domainId', { domainId: domain.id })\n .orderBy('privilege.category')\n .addOrderBy('privilege.name')\n .getRawMany()\n\n const distinct = result.reduce((acc, current) => {\n const last = acc[acc.length - 1]\n if (!last || last.privilege !== current.privilege || last.category !== current.category) {\n acc.push(current)\n }\n return acc\n }, [])\n\n return distinct\n }\n\n static async getDomainsWithPrivilege(privilege: string, category: string, user: User) {\n return getDomainsWithPrivilege(user, privilege, category)\n }\n}\n"]}
@@ -16,7 +16,7 @@ tslib_1.__decorate([
16
16
  ], UsersAuthProviders.prototype, "id", void 0);
17
17
  tslib_1.__decorate([
18
18
  (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
19
- (0, type_graphql_1.Field)({ nullable: true }),
19
+ (0, type_graphql_1.Field)(type => shell_1.Domain),
20
20
  tslib_1.__metadata("design:type", shell_1.Domain)
21
21
  ], UsersAuthProviders.prototype, "domain", void 0);
22
22
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"users-auth-providers.js","sourceRoot":"","sources":["../../../server/service/users-auth-providers/users-auth-providers.ts"],"names":[],"mappings":";;;;AAAA,qCAWgB;AAChB,+CAA2E;AAE3E,iDAA8C;AAC9C,uCAAmC;AACnC,kEAA6D;AAatD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAyC9B,CAAA;AAxCC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;8CACC;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACjB,cAAM;kDAAA;AAEf;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;;oDACjE;AAEjB;IAAC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,WAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACtD,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAClC,WAAI;gDAAA;AAEV;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;;kDACjE;AAEf;IAAC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4BAAY,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE;QAC9E,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,4BAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAClC,4BAAY;wDAAA;AAE1B;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC;;0DACjE;AAEvB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACb;AAEb;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;qDAAA;AAEhB;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;qDAAA;AAxCJ,kBAAkB;IAX9B,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EACJ,2BAA2B,EAC3B,CAAC,kBAAsC,EAAE,EAAE,CAAC;QAC1C,kBAAkB,CAAC,MAAM;QACzB,kBAAkB,CAAC,IAAI;QACvB,kBAAkB,CAAC,YAAY;KAChC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB;IACA,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;GAChD,kBAAkB,CAyC9B;AAzCY,gDAAkB","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '../user/user'\nimport { AuthProvider } from '../auth-provider/auth-provider'\n\n@Entity()\n@Index(\n 'ix_users_auth_providers_0',\n (usersAuthProviders: UsersAuthProviders) => [\n usersAuthProviders.domain,\n usersAuthProviders.user,\n usersAuthProviders.authProvider\n ],\n { unique: true }\n)\n@ObjectType({ description: 'Entity for UsersAuthProviders' })\nexport class UsersAuthProviders {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.domain)\n domainId?: string\n\n @ManyToOne(() => User, user => user.usersAuthProviders, {\n onDelete: 'CASCADE'\n })\n @Field(type => User, { nullable: true })\n user: User\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.user)\n userId?: string\n\n @ManyToOne(() => AuthProvider, authProvider => authProvider.usersAuthProviders, {\n onDelete: 'CASCADE'\n })\n @Field(type => AuthProvider, { nullable: true })\n authProvider: AuthProvider\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.authProvider)\n authProviderId?: string\n\n @Column()\n @Field({ nullable: true })\n ssoId: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt: Date\n}\n"]}
1
+ {"version":3,"file":"users-auth-providers.js","sourceRoot":"","sources":["../../../server/service/users-auth-providers/users-auth-providers.ts"],"names":[],"mappings":";;;;AAAA,qCAWgB;AAChB,+CAA2E;AAE3E,iDAA8C;AAC9C,uCAAmC;AACnC,kEAA6D;AAatD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAyC9B,CAAA;AAxCC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;8CACC;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;sCACb,cAAM;kDAAA;AAEf;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;;oDACjE;AAEjB;IAAC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,WAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACtD,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAClC,WAAI;gDAAA;AAEV;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;;kDACjE;AAEf;IAAC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4BAAY,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE;QAC9E,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,4BAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAClC,4BAAY;wDAAA;AAE1B;IAAC,IAAA,oBAAU,EAAC,CAAC,kBAAsC,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC;;0DACjE;AAEvB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACb;AAEb;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;qDAAA;AAEhB;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;qDAAA;AAxCJ,kBAAkB;IAX9B,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EACJ,2BAA2B,EAC3B,CAAC,kBAAsC,EAAE,EAAE,CAAC;QAC1C,kBAAkB,CAAC,MAAM;QACzB,kBAAkB,CAAC,IAAI;QACvB,kBAAkB,CAAC,YAAY;KAChC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB;IACA,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;GAChD,kBAAkB,CAyC9B;AAzCY,gDAAkB","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '../user/user'\nimport { AuthProvider } from '../auth-provider/auth-provider'\n\n@Entity()\n@Index(\n 'ix_users_auth_providers_0',\n (usersAuthProviders: UsersAuthProviders) => [\n usersAuthProviders.domain,\n usersAuthProviders.user,\n usersAuthProviders.authProvider\n ],\n { unique: true }\n)\n@ObjectType({ description: 'Entity for UsersAuthProviders' })\nexport class UsersAuthProviders {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.domain)\n domainId?: string\n\n @ManyToOne(() => User, user => user.usersAuthProviders, {\n onDelete: 'CASCADE'\n })\n @Field(type => User, { nullable: true })\n user: User\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.user)\n userId?: string\n\n @ManyToOne(() => AuthProvider, authProvider => authProvider.usersAuthProviders, {\n onDelete: 'CASCADE'\n })\n @Field(type => AuthProvider, { nullable: true })\n authProvider: AuthProvider\n\n @RelationId((usersAuthProviders: UsersAuthProviders) => usersAuthProviders.authProvider)\n authProviderId?: string\n\n @Column()\n @Field({ nullable: true })\n ssoId: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt: Date\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { WebAuthCredential } from './web-auth-credential';
2
+ export declare const entities: (typeof WebAuthCredential)[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.entities = void 0;
4
+ const web_auth_credential_1 = require("./web-auth-credential");
5
+ exports.entities = [web_auth_credential_1.WebAuthCredential];
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/web-auth-credential/index.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAE5C,QAAA,QAAQ,GAAG,CAAC,uCAAiB,CAAC,CAAA","sourcesContent":["import { WebAuthCredential } from './web-auth-credential'\n\nexport const entities = [WebAuthCredential]\n"]}
@@ -0,0 +1,15 @@
1
+ import { User } from '../user/user';
2
+ export declare class WebAuthCredential {
3
+ readonly id: string;
4
+ user?: User;
5
+ userId?: string;
6
+ credentialId: string;
7
+ publicKey: string;
8
+ counter: number;
9
+ createdAt?: Date;
10
+ updatedAt?: Date;
11
+ creator?: User;
12
+ creatorId?: string;
13
+ updater?: User;
14
+ updaterId?: string;
15
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebAuthCredential = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const typeorm_1 = require("typeorm");
7
+ const user_1 = require("../user/user");
8
+ let WebAuthCredential = class WebAuthCredential {
9
+ };
10
+ tslib_1.__decorate([
11
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
12
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID),
13
+ tslib_1.__metadata("design:type", String)
14
+ ], WebAuthCredential.prototype, "id", void 0);
15
+ tslib_1.__decorate([
16
+ (0, typeorm_1.ManyToOne)(type => user_1.User, { nullable: true }),
17
+ (0, type_graphql_1.Field)(type => user_1.User, { nullable: true }),
18
+ tslib_1.__metadata("design:type", user_1.User)
19
+ ], WebAuthCredential.prototype, "user", void 0);
20
+ tslib_1.__decorate([
21
+ (0, typeorm_1.RelationId)((webAuthCredential) => webAuthCredential.user),
22
+ tslib_1.__metadata("design:type", String)
23
+ ], WebAuthCredential.prototype, "userId", void 0);
24
+ tslib_1.__decorate([
25
+ (0, typeorm_1.Column)(),
26
+ (0, type_graphql_1.Field)({ nullable: true }),
27
+ tslib_1.__metadata("design:type", String)
28
+ ], WebAuthCredential.prototype, "credentialId", void 0);
29
+ tslib_1.__decorate([
30
+ (0, typeorm_1.Column)(),
31
+ (0, type_graphql_1.Field)({ nullable: true }),
32
+ tslib_1.__metadata("design:type", String)
33
+ ], WebAuthCredential.prototype, "publicKey", void 0);
34
+ tslib_1.__decorate([
35
+ (0, typeorm_1.Column)(),
36
+ (0, type_graphql_1.Field)({ nullable: true }),
37
+ tslib_1.__metadata("design:type", Number)
38
+ ], WebAuthCredential.prototype, "counter", void 0);
39
+ tslib_1.__decorate([
40
+ (0, typeorm_1.CreateDateColumn)(),
41
+ (0, type_graphql_1.Field)({ nullable: true }),
42
+ tslib_1.__metadata("design:type", Date)
43
+ ], WebAuthCredential.prototype, "createdAt", void 0);
44
+ tslib_1.__decorate([
45
+ (0, typeorm_1.UpdateDateColumn)(),
46
+ (0, type_graphql_1.Field)({ nullable: true }),
47
+ tslib_1.__metadata("design:type", Date)
48
+ ], WebAuthCredential.prototype, "updatedAt", void 0);
49
+ tslib_1.__decorate([
50
+ (0, typeorm_1.ManyToOne)(type => user_1.User, { nullable: true }),
51
+ (0, type_graphql_1.Field)(type => user_1.User, { nullable: true }),
52
+ tslib_1.__metadata("design:type", user_1.User)
53
+ ], WebAuthCredential.prototype, "creator", void 0);
54
+ tslib_1.__decorate([
55
+ (0, typeorm_1.RelationId)((webAuthCredential) => webAuthCredential.creator),
56
+ tslib_1.__metadata("design:type", String)
57
+ ], WebAuthCredential.prototype, "creatorId", void 0);
58
+ tslib_1.__decorate([
59
+ (0, typeorm_1.ManyToOne)(type => user_1.User, { nullable: true }),
60
+ (0, type_graphql_1.Field)(type => user_1.User, { nullable: true }),
61
+ tslib_1.__metadata("design:type", user_1.User)
62
+ ], WebAuthCredential.prototype, "updater", void 0);
63
+ tslib_1.__decorate([
64
+ (0, typeorm_1.RelationId)((webAuthCredential) => webAuthCredential.updater),
65
+ tslib_1.__metadata("design:type", String)
66
+ ], WebAuthCredential.prototype, "updaterId", void 0);
67
+ WebAuthCredential = tslib_1.__decorate([
68
+ (0, typeorm_1.Entity)(),
69
+ (0, typeorm_1.Index)('ix_web_auth_credential_0', (webAuthCredential) => [webAuthCredential.user, webAuthCredential.credentialId], { unique: true })
70
+ ], WebAuthCredential);
71
+ exports.WebAuthCredential = WebAuthCredential;
72
+ //# sourceMappingURL=web-auth-credential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-auth-credential.js","sourceRoot":"","sources":["../../../server/service/web-auth-credential/web-auth-credential.ts"],"names":[],"mappings":";;;;AAAA,+CAAwC;AACxC,qCASgB;AAEhB,uCAAmC;AAQ5B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CA6C7B,CAAA;AA5CC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;6CACC;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACjC,WAAI;+CAAA;AAEX;IAAC,IAAA,oBAAU,EAAC,CAAC,iBAAoC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;;iDAC9D;AAEf;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACN;AAEpB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACT;AAEjB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACX;AAEf;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;oDAAA;AAEhB;IAAC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;oDAAA;AAEhB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,WAAI;kDAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,iBAAoC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;;oDAC9D;AAElB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,WAAI;kDAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,iBAAoC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;;oDAC9D;AA5CP,iBAAiB;IAN7B,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EACJ,0BAA0B,EAC1B,CAAC,iBAAoC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAClG,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB;GACY,iBAAiB,CA6C7B;AA7CY,8CAAiB","sourcesContent":["import { Field, ID } from 'type-graphql'\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\n\nimport { User } from '../user/user'\n\n@Entity()\n@Index(\n 'ix_web_auth_credential_0',\n (webAuthCredential: WebAuthCredential) => [webAuthCredential.user, webAuthCredential.credentialId],\n { unique: true }\n)\nexport class WebAuthCredential {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n user?: User\n\n @RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.user)\n userId?: string\n\n @Column()\n @Field({ nullable: true })\n credentialId: string\n\n @Column()\n @Field({ nullable: true })\n publicKey: string\n\n @Column()\n @Field({ nullable: true })\n counter: number\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.updater)\n updaterId?: string\n}\n"]}