@things-factory/auth-base 4.3.671 → 4.3.672

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 (229) hide show
  1. package/dist-server/constants/error-code.js +21 -0
  2. package/dist-server/constants/error-code.js.map +1 -0
  3. package/dist-server/constants/error-message.js +1 -0
  4. package/dist-server/constants/error-message.js.map +1 -0
  5. package/dist-server/constants/max-age.js +5 -0
  6. package/dist-server/constants/max-age.js.map +1 -0
  7. package/dist-server/controllers/auth.js +21 -0
  8. package/dist-server/controllers/auth.js.map +1 -0
  9. package/dist-server/controllers/change-pwd.js +80 -0
  10. package/dist-server/controllers/change-pwd.js.map +1 -0
  11. package/dist-server/controllers/checkin.js +21 -0
  12. package/dist-server/controllers/checkin.js.map +1 -0
  13. package/dist-server/controllers/delete-user.js +61 -0
  14. package/dist-server/controllers/delete-user.js.map +1 -0
  15. package/dist-server/controllers/invitation.js +119 -0
  16. package/dist-server/controllers/invitation.js.map +1 -0
  17. package/dist-server/controllers/profile.js +26 -0
  18. package/dist-server/controllers/profile.js.map +1 -0
  19. package/dist-server/controllers/reset-password.js +110 -0
  20. package/dist-server/controllers/reset-password.js.map +1 -0
  21. package/dist-server/controllers/signin.js +76 -0
  22. package/dist-server/controllers/signin.js.map +1 -0
  23. package/dist-server/controllers/signup.js +105 -0
  24. package/dist-server/controllers/signup.js.map +1 -0
  25. package/dist-server/controllers/unlock-user.js +60 -0
  26. package/dist-server/controllers/unlock-user.js.map +1 -0
  27. package/dist-server/controllers/utils/make-invitation-token.js +12 -0
  28. package/dist-server/controllers/utils/make-invitation-token.js.map +1 -0
  29. package/dist-server/controllers/utils/make-verification-token.js +12 -0
  30. package/dist-server/controllers/utils/make-verification-token.js.map +1 -0
  31. package/dist-server/controllers/utils/password-rule.js +90 -0
  32. package/dist-server/controllers/utils/password-rule.js.map +1 -0
  33. package/dist-server/controllers/utils/save-invitation-token.js +13 -0
  34. package/dist-server/controllers/utils/save-invitation-token.js.map +1 -0
  35. package/dist-server/controllers/utils/save-verification-token.js +15 -0
  36. package/dist-server/controllers/utils/save-verification-token.js.map +1 -0
  37. package/dist-server/controllers/verification.js +78 -0
  38. package/dist-server/controllers/verification.js.map +1 -0
  39. package/dist-server/errors/auth-error.js +40 -0
  40. package/dist-server/errors/auth-error.js.map +1 -0
  41. package/dist-server/errors/index.js +19 -0
  42. package/dist-server/errors/index.js.map +1 -0
  43. package/dist-server/errors/user-domain-not-match-error.js +24 -0
  44. package/dist-server/errors/user-domain-not-match-error.js.map +1 -0
  45. package/dist-server/index.js +29 -0
  46. package/dist-server/index.js.map +1 -0
  47. package/dist-server/middlewares/authenticate-401-middleware.js +84 -0
  48. package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -0
  49. package/dist-server/middlewares/domain-authenticate-middleware.js +58 -0
  50. package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -0
  51. package/dist-server/middlewares/graphql-authenticate-middleware.js +17 -0
  52. package/dist-server/middlewares/graphql-authenticate-middleware.js.map +1 -0
  53. package/dist-server/middlewares/index.js +57 -0
  54. package/dist-server/middlewares/index.js.map +1 -0
  55. package/dist-server/middlewares/jwt-authenticate-middleware.js +77 -0
  56. package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -0
  57. package/dist-server/middlewares/signin-middleware.js +47 -0
  58. package/dist-server/middlewares/signin-middleware.js.map +1 -0
  59. package/dist-server/migrations/1548206416130-SeedUser.js +46 -0
  60. package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -0
  61. package/dist-server/migrations/1566805283882-SeedPrivilege.js +26 -0
  62. package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -0
  63. package/dist-server/migrations/index.js +12 -0
  64. package/dist-server/migrations/index.js.map +1 -0
  65. package/dist-server/router/auth-checkin-router.js +96 -0
  66. package/dist-server/router/auth-checkin-router.js.map +1 -0
  67. package/dist-server/router/auth-private-process-router.js +91 -0
  68. package/dist-server/router/auth-private-process-router.js.map +1 -0
  69. package/dist-server/router/auth-public-process-router.js +243 -0
  70. package/dist-server/router/auth-public-process-router.js.map +1 -0
  71. package/dist-server/router/auth-signin-router.js +38 -0
  72. package/dist-server/router/auth-signin-router.js.map +1 -0
  73. package/dist-server/router/auth-signup-router.js +76 -0
  74. package/dist-server/router/auth-signup-router.js.map +1 -0
  75. package/dist-server/router/index.js +25 -0
  76. package/dist-server/router/index.js.map +1 -0
  77. package/dist-server/router/oauth2/index.js +19 -0
  78. package/dist-server/router/oauth2/index.js.map +1 -0
  79. package/dist-server/router/oauth2/oauth2-authorize-router.js +72 -0
  80. package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -0
  81. package/dist-server/router/oauth2/oauth2-router.js +137 -0
  82. package/dist-server/router/oauth2/oauth2-router.js.map +1 -0
  83. package/dist-server/router/oauth2/oauth2-server.js +201 -0
  84. package/dist-server/router/oauth2/oauth2-server.js.map +1 -0
  85. package/dist-server/router/oauth2/passport-oauth2-client-password.js +84 -0
  86. package/dist-server/router/oauth2/passport-oauth2-client-password.js.map +1 -0
  87. package/dist-server/router/oauth2/passport-refresh-token.js +84 -0
  88. package/dist-server/router/oauth2/passport-refresh-token.js.map +1 -0
  89. package/dist-server/router/path-base-domain-router.js +15 -0
  90. package/dist-server/router/path-base-domain-router.js.map +1 -0
  91. package/dist-server/router/site-root-router.js +48 -0
  92. package/dist-server/router/site-root-router.js.map +1 -0
  93. package/dist-server/routes.js +58 -0
  94. package/dist-server/routes.js.map +1 -0
  95. package/dist-server/service/app-binding/app-binding-mutation.js +45 -0
  96. package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -0
  97. package/dist-server/service/app-binding/app-binding-query.js +135 -0
  98. package/dist-server/service/app-binding/app-binding-query.js.map +1 -0
  99. package/dist-server/service/app-binding/app-binding-types.js +29 -0
  100. package/dist-server/service/app-binding/app-binding-types.js.map +1 -0
  101. package/dist-server/service/app-binding/app-binding.js +34 -0
  102. package/dist-server/service/app-binding/app-binding.js.map +1 -0
  103. package/dist-server/service/app-binding/index.js +7 -0
  104. package/dist-server/service/app-binding/index.js.map +1 -0
  105. package/dist-server/service/appliance/appliance-mutation.js +117 -0
  106. package/dist-server/service/appliance/appliance-mutation.js.map +1 -0
  107. package/dist-server/service/appliance/appliance-query.js +85 -0
  108. package/dist-server/service/appliance/appliance-query.js.map +1 -0
  109. package/dist-server/service/appliance/appliance-types.js +93 -0
  110. package/dist-server/service/appliance/appliance-types.js.map +1 -0
  111. package/dist-server/service/appliance/appliance.js +155 -0
  112. package/dist-server/service/appliance/appliance.js.map +1 -0
  113. package/dist-server/service/appliance/index.js +9 -0
  114. package/dist-server/service/appliance/index.js.map +1 -0
  115. package/dist-server/service/application/application-mutation.js +121 -0
  116. package/dist-server/service/application/application-mutation.js.map +1 -0
  117. package/dist-server/service/application/application-query.js +128 -0
  118. package/dist-server/service/application/application-query.js.map +1 -0
  119. package/dist-server/service/application/application-types.js +119 -0
  120. package/dist-server/service/application/application-types.js.map +1 -0
  121. package/dist-server/service/application/application.js +236 -0
  122. package/dist-server/service/application/application.js.map +1 -0
  123. package/dist-server/service/application/index.js +9 -0
  124. package/dist-server/service/application/index.js.map +1 -0
  125. package/dist-server/service/domain-generator/domain-generator-mutation.js +117 -0
  126. package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -0
  127. package/dist-server/service/domain-generator/domain-generator-types.js +79 -0
  128. package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -0
  129. package/dist-server/service/domain-generator/index.js +6 -0
  130. package/dist-server/service/domain-generator/index.js.map +1 -0
  131. package/dist-server/service/granted-role/granted-role-mutation.js +144 -0
  132. package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -0
  133. package/dist-server/service/granted-role/granted-role-query.js +93 -0
  134. package/dist-server/service/granted-role/granted-role-query.js.map +1 -0
  135. package/dist-server/service/granted-role/granted-role.js +49 -0
  136. package/dist-server/service/granted-role/granted-role.js.map +1 -0
  137. package/dist-server/service/granted-role/index.js +9 -0
  138. package/dist-server/service/granted-role/index.js.map +1 -0
  139. package/dist-server/service/index.js +94 -0
  140. package/dist-server/service/index.js.map +1 -0
  141. package/dist-server/service/invitation/index.js +9 -0
  142. package/dist-server/service/invitation/index.js.map +1 -0
  143. package/dist-server/service/invitation/invitation-mutation.js +76 -0
  144. package/dist-server/service/invitation/invitation-mutation.js.map +1 -0
  145. package/dist-server/service/invitation/invitation-query.js +57 -0
  146. package/dist-server/service/invitation/invitation-query.js.map +1 -0
  147. package/dist-server/service/invitation/invitation-types.js +29 -0
  148. package/dist-server/service/invitation/invitation-types.js.map +1 -0
  149. package/dist-server/service/invitation/invitation.js +84 -0
  150. package/dist-server/service/invitation/invitation.js.map +1 -0
  151. package/dist-server/service/login-history/index.js +8 -0
  152. package/dist-server/service/login-history/index.js.map +1 -0
  153. package/dist-server/service/login-history/login-history-query.js +67 -0
  154. package/dist-server/service/login-history/login-history-query.js.map +1 -0
  155. package/dist-server/service/login-history/login-history.js +68 -0
  156. package/dist-server/service/login-history/login-history.js.map +1 -0
  157. package/dist-server/service/partner/index.js +9 -0
  158. package/dist-server/service/partner/index.js.map +1 -0
  159. package/dist-server/service/partner/partner-mutation.js +134 -0
  160. package/dist-server/service/partner/partner-mutation.js.map +1 -0
  161. package/dist-server/service/partner/partner-query.js +193 -0
  162. package/dist-server/service/partner/partner-query.js.map +1 -0
  163. package/dist-server/service/partner/partner-types.js +57 -0
  164. package/dist-server/service/partner/partner-types.js.map +1 -0
  165. package/dist-server/service/partner/partner.js +86 -0
  166. package/dist-server/service/partner/partner.js.map +1 -0
  167. package/dist-server/service/password-history/index.js +6 -0
  168. package/dist-server/service/password-history/index.js.map +1 -0
  169. package/dist-server/service/password-history/password-history.js +34 -0
  170. package/dist-server/service/password-history/password-history.js.map +1 -0
  171. package/dist-server/service/privilege/index.js +9 -0
  172. package/dist-server/service/privilege/index.js.map +1 -0
  173. package/dist-server/service/privilege/privilege-directive.js +85 -0
  174. package/dist-server/service/privilege/privilege-directive.js.map +1 -0
  175. package/dist-server/service/privilege/privilege-mutation.js +80 -0
  176. package/dist-server/service/privilege/privilege-mutation.js.map +1 -0
  177. package/dist-server/service/privilege/privilege-query.js +109 -0
  178. package/dist-server/service/privilege/privilege-query.js.map +1 -0
  179. package/dist-server/service/privilege/privilege-types.js +100 -0
  180. package/dist-server/service/privilege/privilege-types.js.map +1 -0
  181. package/dist-server/service/privilege/privilege.js +92 -0
  182. package/dist-server/service/privilege/privilege.js.map +1 -0
  183. package/dist-server/service/role/index.js +9 -0
  184. package/dist-server/service/role/index.js.map +1 -0
  185. package/dist-server/service/role/role-mutation.js +121 -0
  186. package/dist-server/service/role/role-mutation.js.map +1 -0
  187. package/dist-server/service/role/role-query.js +207 -0
  188. package/dist-server/service/role/role-query.js.map +1 -0
  189. package/dist-server/service/role/role-types.js +130 -0
  190. package/dist-server/service/role/role-types.js.map +1 -0
  191. package/dist-server/service/role/role.js +94 -0
  192. package/dist-server/service/role/role.js.map +1 -0
  193. package/dist-server/service/user/index.js +9 -0
  194. package/dist-server/service/user/index.js.map +1 -0
  195. package/dist-server/service/user/user-mutation.js +307 -0
  196. package/dist-server/service/user/user-mutation.js.map +1 -0
  197. package/dist-server/service/user/user-query.js +194 -0
  198. package/dist-server/service/user/user-query.js.map +1 -0
  199. package/dist-server/service/user/user-types.js +106 -0
  200. package/dist-server/service/user/user-types.js.map +1 -0
  201. package/dist-server/service/user/user.js +274 -0
  202. package/dist-server/service/user/user.js.map +1 -0
  203. package/dist-server/service/verification-token/index.js +6 -0
  204. package/dist-server/service/verification-token/index.js.map +1 -0
  205. package/dist-server/service/verification-token/verification-token.js +75 -0
  206. package/dist-server/service/verification-token/verification-token.js.map +1 -0
  207. package/dist-server/templates/account-unlock-email.js +69 -0
  208. package/dist-server/templates/account-unlock-email.js.map +1 -0
  209. package/dist-server/templates/invitation-email.js +70 -0
  210. package/dist-server/templates/invitation-email.js.map +1 -0
  211. package/dist-server/templates/reset-password-email.js +66 -0
  212. package/dist-server/templates/reset-password-email.js.map +1 -0
  213. package/dist-server/templates/verification-email.js +70 -0
  214. package/dist-server/templates/verification-email.js.map +1 -0
  215. package/dist-server/utils/accepts.js +14 -0
  216. package/dist-server/utils/accepts.js.map +1 -0
  217. package/dist-server/utils/access-token-cookie.js +45 -0
  218. package/dist-server/utils/access-token-cookie.js.map +1 -0
  219. package/dist-server/utils/check-user-belongs-domain.js +22 -0
  220. package/dist-server/utils/check-user-belongs-domain.js.map +1 -0
  221. package/dist-server/utils/get-domain-from-hostname.js +10 -0
  222. package/dist-server/utils/get-domain-from-hostname.js.map +1 -0
  223. package/dist-server/utils/get-domain-users.js +31 -0
  224. package/dist-server/utils/get-domain-users.js.map +1 -0
  225. package/dist-server/utils/get-secret.js +15 -0
  226. package/dist-server/utils/get-secret.js.map +1 -0
  227. package/dist-server/utils/get-user-domains.js +40 -0
  228. package/dist-server/utils/get-user-domains.js.map +1 -0
  229. package/package.json +5 -5
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const env_1 = require("@things-factory/env");
7
+ const middlewares_1 = require("./middlewares");
8
+ const router_1 = require("./router");
9
+ const koa_session_1 = __importDefault(require("koa-session"));
10
+ const get_secret_1 = require("./utils/get-secret");
11
+ const isPathBaseDomain = !env_1.config.get('subdomain') && !env_1.config.get('useVirtualHostBasedDomain');
12
+ const debug = require('debug')('things-factory:auth-base:routes');
13
+ process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
14
+ debug('bootstrap-module-global-public-route');
15
+ globalPublicRouter.use(router_1.siteRootRouter.routes(), router_1.siteRootRouter.allowedMethods());
16
+ globalPublicRouter.use(router_1.authPublicProcessRouter.routes(), router_1.authPublicProcessRouter.allowedMethods());
17
+ });
18
+ process.on('bootstrap-module-global-private-route', (app, globalPrivateRouter) => {
19
+ globalPrivateRouter.use(middlewares_1.jwtAuthenticateMiddleware);
20
+ /* globalPrivateRouter based nested-routers */
21
+ globalPrivateRouter.use(router_1.authCheckinRouter.routes(), router_1.authCheckinRouter.allowedMethods());
22
+ globalPrivateRouter.use(router_1.authPrivateProcessRouter.routes(), router_1.authPrivateProcessRouter.allowedMethods());
23
+ });
24
+ process.on('bootstrap-module-domain-public-route', (app, domainPublicRouter) => {
25
+ debug('bootstrap-module-domain-public-route');
26
+ /* domainPublicRouter based nested-routers */
27
+ domainPublicRouter.use(router_1.authSigninRouter.routes(), router_1.authSigninRouter.allowedMethods());
28
+ domainPublicRouter.use(router_1.authSignupRouter.routes(), router_1.authSignupRouter.allowedMethods());
29
+ /* oauth2orize-koa 에서 oauth 트랜잭션 관리를 위해서 session을 사용함. */
30
+ app.keys = [get_secret_1.SECRET];
31
+ app.use((0, koa_session_1.default)(app));
32
+ /* path '/admin/oauth/...' is deprecated. should use path '/oauth/...' for oauth2 related routing */
33
+ domainPublicRouter.use('/oauth', router_1.oauth2Router.routes(), router_1.oauth2Router.allowedMethods()); // if i use context
34
+ });
35
+ process.on('bootstrap-module-domain-private-route', (app, domainPrivateRouter) => {
36
+ domainPrivateRouter.use(middlewares_1.jwtAuthenticateMiddleware);
37
+ domainPrivateRouter.use(middlewares_1.domainAuthenticateMiddleware);
38
+ /* domainPrivateRouter based nested-routers */
39
+ if (isPathBaseDomain) {
40
+ // pathBaseDomainRouter는 history-fallback의 경우에 인증 처리를 하기 위한 라우터이다.
41
+ // (보통, URL 링크등을 통해서 domain path URL로 바로 요청하는 경우에 해당한다.)
42
+ // pathBaseDomainRouter는 domain path를 domain-private-router를 사용하는 것을 전제로 한다.
43
+ domainPrivateRouter.use('/domain/:domain/oauth', router_1.oauth2AuthorizeRouter.routes(), router_1.oauth2AuthorizeRouter.allowedMethods());
44
+ domainPrivateRouter.use('/domain', router_1.pathBaseDomainRouter.routes(), router_1.pathBaseDomainRouter.allowedMethods());
45
+ }
46
+ // Client Routing : path 확장자가 없는 경우는 대부분 client 라우팅에 해당한다.
47
+ // 즉, browser-history-fallback 으로 index.html을 send 하는 경우에, 사용자 로그인이 필요한 경우에,
48
+ // 화면깜박임없이 signin page로 redirect 하고자하는 목적의 설정이다.
49
+ // domain-private 라우트를 통과하고 싶지 않다면, regexp를 조정한다.
50
+ // '(.[^.]+)' 은 '', '/'는 제외하고, '/xxx', '/yyy/zzz' 등 모두를 포함하지만, path에 '.'가 있는 경우는 제외한다.
51
+ // (테스트는 여기서 : http://forbeslindesay.github.io/express-route-tester/)
52
+ domainPrivateRouter.get('(.[^.]+)', async (context, next) => {
53
+ const { path } = context;
54
+ debug('get:(.[^.]+)', path);
55
+ await next();
56
+ });
57
+ });
58
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
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.AppBindingMutation = void 0;
16
+ const app_binding_1 = require("./app-binding");
17
+ const type_graphql_1 = require("type-graphql");
18
+ const user_1 = require("../user/user");
19
+ const typeorm_1 = require("typeorm");
20
+ const debug = require('debug')('things-factory:auth-base:delete-app-binding');
21
+ let AppBindingMutation = class AppBindingMutation {
22
+ async deleteAppBinding(id, context) {
23
+ const { domain } = context.state;
24
+ debug('user', id);
25
+ // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
26
+ // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
27
+ await (0, typeorm_1.getRepository)(user_1.User).delete({
28
+ id
29
+ });
30
+ return true;
31
+ }
32
+ };
33
+ __decorate([
34
+ (0, type_graphql_1.Mutation)(returns => Boolean),
35
+ __param(0, (0, type_graphql_1.Arg)('id')),
36
+ __param(1, (0, type_graphql_1.Ctx)()),
37
+ __metadata("design:type", Function),
38
+ __metadata("design:paramtypes", [String, Object]),
39
+ __metadata("design:returntype", Promise)
40
+ ], AppBindingMutation.prototype, "deleteAppBinding", null);
41
+ AppBindingMutation = __decorate([
42
+ (0, type_graphql_1.Resolver)(app_binding_1.AppBinding)
43
+ ], AppBindingMutation);
44
+ exports.AppBindingMutation = AppBindingMutation;
45
+ //# sourceMappingURL=app-binding-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-binding-mutation.js","sourceRoot":"","sources":["../../../server/service/app-binding/app-binding-mutation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,+CAA2D;AAC3D,uCAAmC;AACnC,qCAAuC;AAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,6CAA6C,CAAC,CAAA;AAGtE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEvB,AAAN,KAAK,CAAC,gBAAgB,CAAY,EAAU,EAAS,OAAY;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAEjB,qCAAqC;QACrC,iEAAiE;QACjE,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,MAAM,CAAC;YAC/B,EAAE;SACH,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAbO;IADL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;IACL,WAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;0DAYnD;AAdU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,wBAAU,CAAC;GACR,kBAAkB,CAe9B;AAfY,gDAAkB"}
@@ -0,0 +1,135 @@
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
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AppBindingQuery = void 0;
17
+ const typeorm_1 = require("typeorm");
18
+ const shell_1 = require("@things-factory/shell");
19
+ const type_graphql_1 = require("type-graphql");
20
+ const app_binding_1 = require("./app-binding");
21
+ const user_1 = require("../user/user");
22
+ const get_domain_users_1 = require("../../utils/get-domain-users");
23
+ const application_1 = require("../application/application");
24
+ const app_binding_types_1 = require("./app-binding-types");
25
+ let AppBindingQuery = class AppBindingQuery {
26
+ async appBinding(id, context) {
27
+ const { domain } = context.state;
28
+ // TODO should check domain is available
29
+ return await (0, typeorm_1.getRepository)(user_1.User).findOne({ id, userType: 'application' });
30
+ }
31
+ async appBindings(params, context) {
32
+ const { domain } = context.state;
33
+ const convertedParams = (0, shell_1.convertListParams)(params);
34
+ convertedParams.where = Object.assign(Object.assign({}, convertedParams.where), { userType: 'application' });
35
+ const alias = 'USER';
36
+ const qb = (0, get_domain_users_1.buildDomainUsersQueryBuilder)(domain.id, alias);
37
+ (0, shell_1.buildQuery)(qb, params, null, false);
38
+ var [items] = await qb
39
+ // .leftJoinAndSelect(`${alias}.roles`, 'ROLES')
40
+ // .leftJoinAndSelect(`${alias}.creator`, 'CREATOR')
41
+ // .leftJoinAndSelect(`${alias}.updater`, 'UPDATER')
42
+ .getManyAndCount();
43
+ items = items.filter((user) => user.userType == 'application');
44
+ // var boundApps = await Promise.all(
45
+ // items
46
+ // .filter((user: User) => user.userType == 'application')
47
+ // .map(async (user: User) => {
48
+ // const email = user.email
49
+ // const appKey = email.substr(0, email.lastIndexOf('@'))
50
+ // const application = await getRepository(Application).findOne({
51
+ // appKey
52
+ // })
53
+ // return {
54
+ // ...user,
55
+ // application,
56
+ // scope: user.roles.map(role => role.name).join(','),
57
+ // refreshToken: user.password
58
+ // }
59
+ // })
60
+ // )
61
+ return { items, total: items.length };
62
+ }
63
+ async application(appBinding) {
64
+ return await (0, typeorm_1.getRepository)(application_1.Application).findOne(appBinding.reference);
65
+ }
66
+ async scope(appBinding) {
67
+ const u = await (0, typeorm_1.getRepository)(user_1.User).findOne({ where: { reference: appBinding.reference }, relations: ['roles'] });
68
+ return u.roles.map(role => role.name).join(',');
69
+ }
70
+ async refreshToken(appBinding) {
71
+ return appBinding.password;
72
+ }
73
+ async updater(appBinding) {
74
+ return await (0, typeorm_1.getRepository)(user_1.User).findOne(appBinding.updater);
75
+ }
76
+ async creator(appBinding) {
77
+ return await (0, typeorm_1.getRepository)(user_1.User).findOne(appBinding.creator);
78
+ }
79
+ };
80
+ __decorate([
81
+ (0, type_graphql_1.Query)(returns => app_binding_1.AppBinding),
82
+ __param(0, (0, type_graphql_1.Arg)('id')),
83
+ __param(1, (0, type_graphql_1.Ctx)()),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [String, Object]),
86
+ __metadata("design:returntype", Promise)
87
+ ], AppBindingQuery.prototype, "appBinding", null);
88
+ __decorate([
89
+ (0, type_graphql_1.Query)(returns => app_binding_types_1.AppBindingList),
90
+ __param(0, (0, type_graphql_1.Args)()),
91
+ __param(1, (0, type_graphql_1.Ctx)()),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object, Object]),
94
+ __metadata("design:returntype", Promise)
95
+ ], AppBindingQuery.prototype, "appBindings", null);
96
+ __decorate([
97
+ (0, type_graphql_1.FieldResolver)(type => application_1.Application),
98
+ __param(0, (0, type_graphql_1.Root)()),
99
+ __metadata("design:type", Function),
100
+ __metadata("design:paramtypes", [app_binding_1.AppBinding]),
101
+ __metadata("design:returntype", Promise)
102
+ ], AppBindingQuery.prototype, "application", null);
103
+ __decorate([
104
+ (0, type_graphql_1.FieldResolver)(type => String),
105
+ __param(0, (0, type_graphql_1.Root)()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [app_binding_1.AppBinding]),
108
+ __metadata("design:returntype", Promise)
109
+ ], AppBindingQuery.prototype, "scope", null);
110
+ __decorate([
111
+ (0, type_graphql_1.FieldResolver)(type => String),
112
+ __param(0, (0, type_graphql_1.Root)()),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [app_binding_1.AppBinding]),
115
+ __metadata("design:returntype", Promise)
116
+ ], AppBindingQuery.prototype, "refreshToken", null);
117
+ __decorate([
118
+ (0, type_graphql_1.FieldResolver)(type => user_1.User),
119
+ __param(0, (0, type_graphql_1.Root)()),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [app_binding_1.AppBinding]),
122
+ __metadata("design:returntype", Promise)
123
+ ], AppBindingQuery.prototype, "updater", null);
124
+ __decorate([
125
+ (0, type_graphql_1.FieldResolver)(type => user_1.User),
126
+ __param(0, (0, type_graphql_1.Root)()),
127
+ __metadata("design:type", Function),
128
+ __metadata("design:paramtypes", [app_binding_1.AppBinding]),
129
+ __metadata("design:returntype", Promise)
130
+ ], AppBindingQuery.prototype, "creator", null);
131
+ AppBindingQuery = __decorate([
132
+ (0, type_graphql_1.Resolver)(app_binding_1.AppBinding)
133
+ ], AppBindingQuery);
134
+ exports.AppBindingQuery = AppBindingQuery;
135
+ //# sourceMappingURL=app-binding-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-binding-query.js","sourceRoot":"","sources":["../../../server/service/app-binding/app-binding-query.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qCAA2D;AAC3D,iDAAgF;AAChF,+CAAmF;AACnF,+CAA0C;AAC1C,uCAAmC;AACnC,mEAA2E;AAC3E,4DAAwD;AACxD,2DAAoD;AAI7C,IAAM,eAAe,GAArB,MAAM,eAAe;IAEpB,AAAN,KAAK,CAAC,UAAU,CAAY,EAAU,EAAS,OAAY;QACzD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,wCAAwC;QACxC,OAAO,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAA;IAC3E,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,MAAiB,EAAS,OAAY;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,eAAe,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAA;QACjD,eAAe,CAAC,KAAK,mCAChB,eAAe,CAAC,KAAK,KACxB,QAAQ,EAAE,aAAa,GACxB,CAAA;QAED,MAAM,KAAK,GAAW,MAAM,CAAA;QAC5B,MAAM,EAAE,GAA6B,IAAA,+CAA4B,EAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACnF,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE;YACpB,gDAAgD;YAChD,oDAAoD;YACpD,oDAAoD;aACnD,eAAe,EAAE,CAAA;QAEpB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAA;QAEpE,qCAAqC;QACrC,UAAU;QACV,8DAA8D;QAC9D,mCAAmC;QACnC,iCAAiC;QACjC,+DAA+D;QAC/D,uEAAuE;QACvE,iBAAiB;QACjB,WAAW;QAEX,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QACvB,8DAA8D;QAC9D,sCAAsC;QACtC,UAAU;QACV,SAAS;QACT,IAAI;QAEJ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;IACvC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,UAAsB;QAC9C,OAAO,MAAM,IAAA,uBAAa,EAAC,yBAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACvE,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,UAAsB;QACxC,MAAM,CAAC,GAAG,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjH,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjD,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAAS,UAAsB;QAC/C,OAAO,UAAU,CAAC,QAAQ,CAAA;IAC5B,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,UAAsB;QAC1C,OAAO,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9D,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,UAAsB;QAC1C,OAAO,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9D,CAAC;CACF,CAAA;AA3EO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,wBAAU,CAAC;IACX,WAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;iDAK7C;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,kCAAc,CAAC;IACd,WAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,WAAA,IAAA,kBAAG,GAAE,CAAA;;yDAAjB,iBAAS,oBAAT,iBAAS;;kDAwC1C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,yBAAW,CAAC;IAChB,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAa,wBAAU;;kDAE/C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACjB,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAa,wBAAU;;4CAGzC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACV,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAa,wBAAU;;mDAEhD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,CAAC;IACb,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAa,wBAAU;;8CAE3C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,CAAC;IACb,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAa,wBAAU;;8CAE3C;AA5EU,eAAe;IAD3B,IAAA,uBAAQ,EAAC,wBAAU,CAAC;GACR,eAAe,CA6E3B;AA7EY,0CAAe"}
@@ -0,0 +1,29 @@
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.AppBindingList = void 0;
13
+ const type_graphql_1 = require("type-graphql");
14
+ const app_binding_1 = require("./app-binding");
15
+ let AppBindingList = class AppBindingList {
16
+ };
17
+ __decorate([
18
+ (0, type_graphql_1.Field)(type => [app_binding_1.AppBinding], { nullable: true }),
19
+ __metadata("design:type", Array)
20
+ ], AppBindingList.prototype, "items", void 0);
21
+ __decorate([
22
+ (0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
23
+ __metadata("design:type", Number)
24
+ ], AppBindingList.prototype, "total", void 0);
25
+ AppBindingList = __decorate([
26
+ (0, type_graphql_1.ObjectType)()
27
+ ], AppBindingList);
28
+ exports.AppBindingList = AppBindingList;
29
+ //# sourceMappingURL=app-binding-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-binding-types.js","sourceRoot":"","sources":["../../../server/service/app-binding/app-binding-types.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAqD;AACrD,+CAA0C;AAGnC,IAAM,cAAc,GAApB,MAAM,cAAc;CAM1B,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,wBAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC5B;AAEpB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACzB;AALH,cAAc;IAD1B,IAAA,yBAAU,GAAE;GACA,cAAc,CAM1B;AANY,wCAAc"}
@@ -0,0 +1,34 @@
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.AppBinding = void 0;
13
+ const type_graphql_1 = require("type-graphql");
14
+ const application_1 = require("../application/application");
15
+ const user_1 = require("../user/user");
16
+ let AppBinding = class AppBinding extends user_1.User {
17
+ };
18
+ __decorate([
19
+ (0, type_graphql_1.Field)({ nullable: true }),
20
+ __metadata("design:type", application_1.Application)
21
+ ], AppBinding.prototype, "application", void 0);
22
+ __decorate([
23
+ (0, type_graphql_1.Field)({ nullable: true }),
24
+ __metadata("design:type", String)
25
+ ], AppBinding.prototype, "scope", void 0);
26
+ __decorate([
27
+ (0, type_graphql_1.Field)({ nullable: true }),
28
+ __metadata("design:type", String)
29
+ ], AppBinding.prototype, "refreshToken", void 0);
30
+ AppBinding = __decorate([
31
+ (0, type_graphql_1.ObjectType)()
32
+ ], AppBinding);
33
+ exports.AppBinding = AppBinding;
34
+ //# sourceMappingURL=app-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-binding.js","sourceRoot":"","sources":["../../../server/service/app-binding/app-binding.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAgD;AAEhD,4DAAwD;AACxD,uCAA+C;AAGxC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,WAAI;CASnC,CAAA;AARC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACb,yBAAW;+CAAA;AAExB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACb;AAEb;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACN;AART,UAAU;IADtB,IAAA,yBAAU,GAAE;GACA,UAAU,CAStB;AATY,gCAAU"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = void 0;
4
+ const app_binding_query_1 = require("./app-binding-query");
5
+ const app_binding_mutation_1 = require("./app-binding-mutation");
6
+ exports.resolvers = [app_binding_query_1.AppBindingQuery, app_binding_mutation_1.AppBindingMutation];
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/app-binding/index.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AACrD,iEAA2D;AAE9C,QAAA,SAAS,GAAG,CAAC,mCAAe,EAAE,yCAAkB,CAAC,CAAA"}
@@ -0,0 +1,117 @@
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.ApplianceMutation = void 0;
16
+ const type_graphql_1 = require("type-graphql");
17
+ const typeorm_1 = require("typeorm");
18
+ const user_1 = require("../user/user");
19
+ const appliance_1 = require("./appliance");
20
+ const uuid_1 = require("uuid");
21
+ const appliance_types_1 = require("./appliance-types");
22
+ const debug = require('debug')('things-factory:auth-base:appliance');
23
+ let ApplianceMutation = class ApplianceMutation {
24
+ async createAppliance(appliance, context) {
25
+ return await (0, typeorm_1.getRepository)(appliance_1.Appliance).save(Object.assign({ domain: context.state.domain, creator: context.state.user, updater: context.state.user }, appliance));
26
+ }
27
+ async deleteAppliance(id, context) {
28
+ const { domain } = context.state;
29
+ // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
30
+ // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
31
+ await (0, typeorm_1.getRepository)(user_1.User).delete({
32
+ reference: id,
33
+ userType: 'appliance'
34
+ });
35
+ await (0, typeorm_1.getRepository)(appliance_1.Appliance).delete({ domain, id });
36
+ return true;
37
+ }
38
+ async generateApplianceSecret(id, context) {
39
+ const { domain, user } = context.state;
40
+ const appliance = await (0, typeorm_1.getRepository)(appliance_1.Appliance).findOne({ id, domain });
41
+ const appuserEmail = `${(0, uuid_1.v4)()}@${domain === null || domain === void 0 ? void 0 : domain.subdomain}`;
42
+ let appuser = await (0, typeorm_1.getRepository)(user_1.User).findOne({
43
+ where: {
44
+ reference: id,
45
+ userType: 'appliance'
46
+ },
47
+ relations: ['domains']
48
+ });
49
+ if (!appuser) {
50
+ /* newly create appuser */
51
+ appuser = await (0, typeorm_1.getRepository)(user_1.User).save({
52
+ email: appuserEmail,
53
+ name: appliance.name,
54
+ userType: 'appliance',
55
+ reference: id,
56
+ status: user_1.UserStatus.ACTIVATED,
57
+ domains: [domain],
58
+ updater: user,
59
+ creator: user
60
+ });
61
+ }
62
+ if (!appuser.domains.find(d => d.id === domain.id)) {
63
+ context.throw(401, 'appliance is not allowed for this domain');
64
+ }
65
+ debug('appiance user', appuser);
66
+ appuser.password = appliance_1.Appliance.generateAccessToken(domain, appuser, appliance);
67
+ debug('access token', appuser.password);
68
+ await (0, typeorm_1.getRepository)(user_1.User).save(appuser);
69
+ return await (0, typeorm_1.getRepository)(appliance_1.Appliance).save(Object.assign(Object.assign({}, appliance), { accessToken: appuser.password, updater: user }));
70
+ }
71
+ async updateAppliance(id, patch, context) {
72
+ const applianceRepository = (0, typeorm_1.getRepository)(appliance_1.Appliance);
73
+ const userRepository = (0, typeorm_1.getRepository)(user_1.User);
74
+ const appliance = await applianceRepository.findOne({ where: { domain: context.state.domain, id } });
75
+ const user = await userRepository.findOne({ where: { reference: id, userType: 'appliance' } });
76
+ userRepository.save(Object.assign(Object.assign({}, user), { name: (patch === null || patch === void 0 ? void 0 : patch.name) || user.name }));
77
+ return await applianceRepository.save(Object.assign(Object.assign(Object.assign({}, appliance), patch), { updater: context.state.user }));
78
+ }
79
+ };
80
+ __decorate([
81
+ (0, type_graphql_1.Mutation)(returns => appliance_1.Appliance, { description: 'To create new appliance' }),
82
+ __param(0, (0, type_graphql_1.Arg)('appliance')),
83
+ __param(1, (0, type_graphql_1.Ctx)()),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [appliance_types_1.NewAppliance, Object]),
86
+ __metadata("design:returntype", Promise)
87
+ ], ApplianceMutation.prototype, "createAppliance", null);
88
+ __decorate([
89
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete appliance' }),
90
+ __param(0, (0, type_graphql_1.Arg)('id')),
91
+ __param(1, (0, type_graphql_1.Ctx)()),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [String, Object]),
94
+ __metadata("design:returntype", Promise)
95
+ ], ApplianceMutation.prototype, "deleteAppliance", null);
96
+ __decorate([
97
+ (0, type_graphql_1.Mutation)(returns => appliance_1.Appliance),
98
+ __param(0, (0, type_graphql_1.Arg)('id')),
99
+ __param(1, (0, type_graphql_1.Ctx)()),
100
+ __metadata("design:type", Function),
101
+ __metadata("design:paramtypes", [String, Object]),
102
+ __metadata("design:returntype", Promise)
103
+ ], ApplianceMutation.prototype, "generateApplianceSecret", null);
104
+ __decorate([
105
+ (0, type_graphql_1.Mutation)(returns => appliance_1.Appliance),
106
+ __param(0, (0, type_graphql_1.Arg)('id')),
107
+ __param(1, (0, type_graphql_1.Arg)('patch')),
108
+ __param(2, (0, type_graphql_1.Ctx)()),
109
+ __metadata("design:type", Function),
110
+ __metadata("design:paramtypes", [String, appliance_types_1.AppliancePatch, Object]),
111
+ __metadata("design:returntype", Promise)
112
+ ], ApplianceMutation.prototype, "updateAppliance", null);
113
+ ApplianceMutation = __decorate([
114
+ (0, type_graphql_1.Resolver)(appliance_1.Appliance)
115
+ ], ApplianceMutation);
116
+ exports.ApplianceMutation = ApplianceMutation;
117
+ //# sourceMappingURL=appliance-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appliance-mutation.js","sourceRoot":"","sources":["../../../server/service/appliance/appliance-mutation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
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
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ApplianceQuery = void 0;
17
+ const type_graphql_1 = require("type-graphql");
18
+ const user_1 = require("../user/user");
19
+ const appliance_1 = require("../appliance/appliance");
20
+ const shell_1 = require("@things-factory/shell");
21
+ const typeorm_1 = require("typeorm");
22
+ const appliance_types_1 = require("./appliance-types");
23
+ let ApplianceQuery = class ApplianceQuery {
24
+ async appliance(id, context) {
25
+ const { domain } = context.state;
26
+ return await (0, typeorm_1.getRepository)(appliance_1.Appliance).findOne({ domain, id });
27
+ }
28
+ async appliances(params, context) {
29
+ const queryBuilder = (0, typeorm_1.getRepository)(appliance_1.Appliance).createQueryBuilder();
30
+ (0, shell_1.buildQuery)(queryBuilder, params, context);
31
+ const [items, total] = await queryBuilder.getManyAndCount();
32
+ return { items, total };
33
+ }
34
+ async domain(context) {
35
+ return context.state.domain;
36
+ }
37
+ async updater(appliance) {
38
+ return await (0, typeorm_1.getRepository)(user_1.User).findOne(appliance.updaterId);
39
+ }
40
+ async creator(appliance) {
41
+ return await (0, typeorm_1.getRepository)(user_1.User).findOne(appliance.creatorId);
42
+ }
43
+ };
44
+ __decorate([
45
+ (0, type_graphql_1.Query)(returns => appliance_1.Appliance, { description: ' To fetch appliance' }),
46
+ __param(0, (0, type_graphql_1.Arg)('id')),
47
+ __param(1, (0, type_graphql_1.Ctx)()),
48
+ __metadata("design:type", Function),
49
+ __metadata("design:paramtypes", [String, Object]),
50
+ __metadata("design:returntype", Promise)
51
+ ], ApplianceQuery.prototype, "appliance", null);
52
+ __decorate([
53
+ (0, type_graphql_1.Query)(returns => appliance_types_1.ApplianceList, { description: 'To fetch multiple appliance' }),
54
+ __param(0, (0, type_graphql_1.Args)()),
55
+ __param(1, (0, type_graphql_1.Ctx)()),
56
+ __metadata("design:type", Function),
57
+ __metadata("design:paramtypes", [typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object, Object]),
58
+ __metadata("design:returntype", Promise)
59
+ ], ApplianceQuery.prototype, "appliances", null);
60
+ __decorate([
61
+ (0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
62
+ __param(0, (0, type_graphql_1.Ctx)()),
63
+ __metadata("design:type", Function),
64
+ __metadata("design:paramtypes", [Object]),
65
+ __metadata("design:returntype", Promise)
66
+ ], ApplianceQuery.prototype, "domain", null);
67
+ __decorate([
68
+ (0, type_graphql_1.FieldResolver)(type => user_1.User),
69
+ __param(0, (0, type_graphql_1.Root)()),
70
+ __metadata("design:type", Function),
71
+ __metadata("design:paramtypes", [appliance_1.Appliance]),
72
+ __metadata("design:returntype", Promise)
73
+ ], ApplianceQuery.prototype, "updater", null);
74
+ __decorate([
75
+ (0, type_graphql_1.FieldResolver)(type => user_1.User),
76
+ __param(0, (0, type_graphql_1.Root)()),
77
+ __metadata("design:type", Function),
78
+ __metadata("design:paramtypes", [appliance_1.Appliance]),
79
+ __metadata("design:returntype", Promise)
80
+ ], ApplianceQuery.prototype, "creator", null);
81
+ ApplianceQuery = __decorate([
82
+ (0, type_graphql_1.Resolver)(appliance_1.Appliance)
83
+ ], ApplianceQuery);
84
+ exports.ApplianceQuery = ApplianceQuery;
85
+ //# sourceMappingURL=appliance-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appliance-query.js","sourceRoot":"","sources":["../../../server/service/appliance/appliance-query.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAAmF;AACnF,uCAAmC;AACnC,sDAAkD;AAClD,iDAAqE;AACrE,qCAAuC;AACvC,uDAAiD;AAG1C,IAAM,cAAc,GAApB,MAAM,cAAc;IAEnB,AAAN,KAAK,CAAC,SAAS,CAAY,EAAU,EAAS,OAAY;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,OAAO,MAAM,IAAA,uBAAa,EAAC,qBAAS,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAS,MAAiB,EAAS,OAAY;QAC7D,MAAM,YAAY,GAAG,IAAA,uBAAa,EAAC,qBAAS,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAClE,IAAA,kBAAU,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAQ,OAAY;QAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;IAC7B,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,SAAoB;QACxC,OAAO,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC/D,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,SAAoB;QACxC,OAAO,MAAM,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC/D,CAAC;CACF,CAAA;AA7BO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qBAAS,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACnD,WAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;+CAG5C;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,+BAAa,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IAC9D,WAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,WAAA,IAAA,kBAAG,GAAE,CAAA;;yDAAjB,iBAAS,oBAAT,iBAAS;;gDAOzC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,WAAA,IAAA,kBAAG,GAAE,CAAA;;;;4CAElB;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,CAAC;IACb,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAY,qBAAS;;6CAEzC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,CAAC;IACb,WAAA,IAAA,mBAAI,GAAE,CAAA;;qCAAY,qBAAS;;6CAEzC;AA9BU,cAAc;IAD1B,IAAA,uBAAQ,EAAC,qBAAS,CAAC;GACP,cAAc,CA+B1B;AA/BY,wCAAc"}