@things-factory/auth-base 5.0.11 → 6.0.0-alpha.3

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 (313) hide show
  1. package/client/actions/auth.ts +23 -0
  2. package/client/{auth.js → auth.ts} +66 -59
  3. package/client/{bootstrap.js → bootstrap.ts} +5 -4
  4. package/client/index.ts +1 -0
  5. package/client/reducers/{auth.js → auth.ts} +1 -1
  6. package/dist-client/actions/auth.d.ts +8 -0
  7. package/dist-client/actions/auth.js +15 -0
  8. package/dist-client/actions/auth.js.map +1 -0
  9. package/dist-client/auth.d.ts +34 -0
  10. package/dist-client/auth.js +209 -0
  11. package/dist-client/auth.js.map +1 -0
  12. package/dist-client/bootstrap.d.ts +1 -0
  13. package/dist-client/bootstrap.js +34 -0
  14. package/dist-client/bootstrap.js.map +1 -0
  15. package/dist-client/index.d.ts +1 -0
  16. package/dist-client/index.js +2 -0
  17. package/dist-client/index.js.map +1 -0
  18. package/dist-client/reducers/auth.d.ts +14 -0
  19. package/dist-client/reducers/auth.js +19 -0
  20. package/dist-client/reducers/auth.js.map +1 -0
  21. package/dist-client/tsconfig.tsbuildinfo +1 -0
  22. package/dist-server/constants/error-code.d.ts +17 -0
  23. package/dist-server/constants/error-message.d.ts +0 -0
  24. package/dist-server/constants/max-age.d.ts +1 -0
  25. package/dist-server/controllers/auth.d.ts +5 -0
  26. package/dist-server/controllers/auth.js +1 -0
  27. package/dist-server/controllers/auth.js.map +1 -1
  28. package/dist-server/controllers/change-pwd.d.ts +1 -0
  29. package/dist-server/controllers/change-pwd.js +5 -4
  30. package/dist-server/controllers/change-pwd.js.map +1 -1
  31. package/dist-server/controllers/checkin.d.ts +4 -0
  32. package/dist-server/controllers/checkin.js +3 -3
  33. package/dist-server/controllers/checkin.js.map +1 -1
  34. package/dist-server/controllers/delete-user.d.ts +3 -0
  35. package/dist-server/controllers/invitation.d.ts +11 -0
  36. package/dist-server/controllers/invitation.js +11 -12
  37. package/dist-server/controllers/invitation.js.map +1 -1
  38. package/dist-server/controllers/profile.d.ts +26 -0
  39. package/dist-server/controllers/profile.js +4 -4
  40. package/dist-server/controllers/profile.js.map +1 -1
  41. package/dist-server/controllers/reset-password.d.ts +5 -0
  42. package/dist-server/controllers/reset-password.js +7 -7
  43. package/dist-server/controllers/reset-password.js.map +1 -1
  44. package/dist-server/controllers/signin.d.ts +6 -0
  45. package/dist-server/controllers/signin.js +4 -3
  46. package/dist-server/controllers/signin.js.map +1 -1
  47. package/dist-server/controllers/signup.d.ts +8 -0
  48. package/dist-server/controllers/signup.js +13 -9
  49. package/dist-server/controllers/signup.js.map +1 -1
  50. package/dist-server/controllers/unlock-user.d.ts +5 -0
  51. package/dist-server/controllers/unlock-user.js +6 -6
  52. package/dist-server/controllers/unlock-user.js.map +1 -1
  53. package/dist-server/controllers/utils/make-invitation-token.d.ts +1 -0
  54. package/dist-server/controllers/utils/make-verification-token.d.ts +1 -0
  55. package/dist-server/controllers/utils/password-rule.d.ts +14 -0
  56. package/dist-server/controllers/utils/save-invitation-token.d.ts +5 -0
  57. package/dist-server/controllers/utils/save-invitation-token.js +2 -2
  58. package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
  59. package/dist-server/controllers/utils/save-verification-token.d.ts +6 -0
  60. package/dist-server/controllers/utils/save-verification-token.js +2 -2
  61. package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
  62. package/dist-server/controllers/verification.d.ts +6 -0
  63. package/dist-server/controllers/verification.js +8 -8
  64. package/dist-server/controllers/verification.js.map +1 -1
  65. package/dist-server/errors/auth-error.d.ts +11 -0
  66. package/dist-server/errors/auth-error.js.map +1 -1
  67. package/dist-server/errors/index.d.ts +2 -0
  68. package/dist-server/errors/user-domain-not-match-error.d.ts +9 -0
  69. package/dist-server/errors/user-domain-not-match-error.js.map +1 -1
  70. package/dist-server/index.d.ts +13 -0
  71. package/dist-server/index.js +2 -1
  72. package/dist-server/index.js.map +1 -1
  73. package/dist-server/middlewares/authenticate-401-middleware.d.ts +1 -0
  74. package/dist-server/middlewares/authenticate-401-middleware.js +12 -14
  75. package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
  76. package/dist-server/middlewares/domain-authenticate-middleware.d.ts +11 -0
  77. package/dist-server/middlewares/domain-authenticate-middleware.js +7 -4
  78. package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
  79. package/dist-server/middlewares/graphql-authenticate-middleware.d.ts +1 -0
  80. package/dist-server/middlewares/index.d.ts +5 -0
  81. package/dist-server/middlewares/jwt-authenticate-middleware.d.ts +1 -0
  82. package/dist-server/middlewares/signin-middleware.d.ts +1 -0
  83. package/dist-server/migrations/1548206416130-SeedUser.d.ts +5 -0
  84. package/dist-server/migrations/1548206416130-SeedUser.js +4 -5
  85. package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
  86. package/dist-server/migrations/1566805283882-SeedPrivilege.d.ts +5 -0
  87. package/dist-server/migrations/1566805283882-SeedPrivilege.js +2 -2
  88. package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -1
  89. package/dist-server/migrations/index.d.ts +1 -0
  90. package/dist-server/router/auth-checkin-router.d.ts +1 -0
  91. package/dist-server/router/auth-checkin-router.js.map +1 -1
  92. package/dist-server/router/auth-private-process-router.d.ts +1 -0
  93. package/dist-server/router/auth-private-process-router.js +2 -2
  94. package/dist-server/router/auth-private-process-router.js.map +1 -1
  95. package/dist-server/router/auth-public-process-router.d.ts +1 -0
  96. package/dist-server/router/auth-public-process-router.js +2 -3
  97. package/dist-server/router/auth-public-process-router.js.map +1 -1
  98. package/dist-server/router/auth-signin-router.d.ts +1 -0
  99. package/dist-server/router/auth-signup-router.d.ts +1 -0
  100. package/dist-server/router/auth-signup-router.js +31 -32
  101. package/dist-server/router/auth-signup-router.js.map +1 -1
  102. package/dist-server/router/index.d.ts +8 -0
  103. package/dist-server/router/oauth2/index.d.ts +2 -0
  104. package/dist-server/router/oauth2/oauth2-authorize-router.d.ts +1 -0
  105. package/dist-server/router/oauth2/oauth2-authorize-router.js +2 -2
  106. package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
  107. package/dist-server/router/oauth2/oauth2-router.d.ts +9 -0
  108. package/dist-server/router/oauth2/oauth2-router.js +6 -7
  109. package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
  110. package/dist-server/router/oauth2/oauth2-server.d.ts +5 -0
  111. package/dist-server/router/oauth2/oauth2-server.js +23 -21
  112. package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
  113. package/dist-server/router/oauth2/passport-oauth2-client-password.d.ts +7 -0
  114. package/dist-server/router/oauth2/passport-refresh-token.d.ts +7 -0
  115. package/dist-server/router/path-base-domain-router.d.ts +1 -0
  116. package/dist-server/router/site-root-router.d.ts +1 -0
  117. package/dist-server/routes.d.ts +1 -0
  118. package/dist-server/service/app-binding/app-binding-mutation.d.ts +3 -0
  119. package/dist-server/service/app-binding/app-binding-mutation.js +2 -2
  120. package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
  121. package/dist-server/service/app-binding/app-binding-query.d.ts +14 -0
  122. package/dist-server/service/app-binding/app-binding-query.js +7 -9
  123. package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
  124. package/dist-server/service/app-binding/app-binding-types.d.ts +5 -0
  125. package/dist-server/service/app-binding/app-binding.d.ts +7 -0
  126. package/dist-server/service/app-binding/index.d.ts +3 -0
  127. package/dist-server/service/appliance/appliance-mutation.d.ts +8 -0
  128. package/dist-server/service/appliance/appliance-mutation.js +13 -12
  129. package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
  130. package/dist-server/service/appliance/appliance-query.d.ts +11 -0
  131. package/dist-server/service/appliance/appliance-query.js +7 -9
  132. package/dist-server/service/appliance/appliance-query.js.map +1 -1
  133. package/dist-server/service/appliance/appliance-types.d.ts +22 -0
  134. package/dist-server/service/appliance/appliance.d.ts +22 -0
  135. package/dist-server/service/appliance/appliance.js +1 -2
  136. package/dist-server/service/appliance/appliance.js.map +1 -1
  137. package/dist-server/service/appliance/index.d.ts +5 -0
  138. package/dist-server/service/application/application-mutation.d.ts +66 -0
  139. package/dist-server/service/application/application-mutation.js +13 -13
  140. package/dist-server/service/application/application-mutation.js.map +1 -1
  141. package/dist-server/service/application/application-query.d.ts +16 -0
  142. package/dist-server/service/application/application-query.js +11 -13
  143. package/dist-server/service/application/application-query.js.map +1 -1
  144. package/dist-server/service/application/application-types.d.ts +27 -0
  145. package/dist-server/service/application/application.d.ts +35 -0
  146. package/dist-server/service/application/application.js +1 -2
  147. package/dist-server/service/application/application.js.map +1 -1
  148. package/dist-server/service/application/index.d.ts +5 -0
  149. package/dist-server/service/domain-generator/domain-generator-mutation.d.ts +6 -0
  150. package/dist-server/service/domain-generator/domain-generator-mutation.js +7 -7
  151. package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
  152. package/dist-server/service/domain-generator/domain-generator-types.d.ts +19 -0
  153. package/dist-server/service/domain-generator/domain-generator-types.js +1 -2
  154. package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
  155. package/dist-server/service/domain-generator/index.d.ts +2 -0
  156. package/dist-server/service/granted-role/granted-role-mutation.d.ts +11 -0
  157. package/dist-server/service/granted-role/granted-role-mutation.js +14 -9
  158. package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
  159. package/dist-server/service/granted-role/granted-role-query.d.ts +16 -0
  160. package/dist-server/service/granted-role/granted-role-query.js +8 -9
  161. package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
  162. package/dist-server/service/granted-role/granted-role.d.ts +9 -0
  163. package/dist-server/service/granted-role/granted-role.js +1 -2
  164. package/dist-server/service/granted-role/granted-role.js.map +1 -1
  165. package/dist-server/service/granted-role/index.d.ts +5 -0
  166. package/dist-server/service/index.d.ts +31 -0
  167. package/dist-server/service/invitation/index.d.ts +5 -0
  168. package/dist-server/service/invitation/invitation-mutation.d.ts +17 -0
  169. package/dist-server/service/invitation/invitation-mutation.js +9 -9
  170. package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
  171. package/dist-server/service/invitation/invitation-query.d.ts +8 -0
  172. package/dist-server/service/invitation/invitation-query.js +4 -4
  173. package/dist-server/service/invitation/invitation-query.js.map +1 -1
  174. package/dist-server/service/invitation/invitation-types.d.ts +5 -0
  175. package/dist-server/service/invitation/invitation.d.ts +14 -0
  176. package/dist-server/service/login-history/index.d.ts +4 -0
  177. package/dist-server/service/login-history/login-history-query.d.ts +8 -0
  178. package/dist-server/service/login-history/login-history-query.js +9 -11
  179. package/dist-server/service/login-history/login-history-query.js.map +1 -1
  180. package/dist-server/service/login-history/login-history.d.ts +12 -0
  181. package/dist-server/service/login-history/login-history.js +14 -15
  182. package/dist-server/service/login-history/login-history.js.map +1 -1
  183. package/dist-server/service/partner/index.d.ts +5 -0
  184. package/dist-server/service/partner/partner-mutation.d.ts +4 -0
  185. package/dist-server/service/partner/partner-mutation.js +6 -7
  186. package/dist-server/service/partner/partner-mutation.js.map +1 -1
  187. package/dist-server/service/partner/partner-query.d.ts +14 -0
  188. package/dist-server/service/partner/partner-query.js +11 -13
  189. package/dist-server/service/partner/partner-query.js.map +1 -1
  190. package/dist-server/service/partner/partner-types.d.ts +5 -0
  191. package/dist-server/service/partner/partner.d.ts +15 -0
  192. package/dist-server/service/partner/partner.js +2 -3
  193. package/dist-server/service/partner/partner.js.map +1 -1
  194. package/dist-server/service/password-history/index.d.ts +2 -0
  195. package/dist-server/service/password-history/password-history.d.ts +4 -0
  196. package/dist-server/service/privilege/index.d.ts +5 -0
  197. package/dist-server/service/privilege/privilege-directive.d.ts +3 -0
  198. package/dist-server/service/privilege/privilege-directive.js +2 -2
  199. package/dist-server/service/privilege/privilege-directive.js.map +1 -1
  200. package/dist-server/service/privilege/privilege-mutation.d.ts +7 -0
  201. package/dist-server/service/privilege/privilege-mutation.js +6 -5
  202. package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
  203. package/dist-server/service/privilege/privilege-query.d.ts +13 -0
  204. package/dist-server/service/privilege/privilege-query.js +7 -8
  205. package/dist-server/service/privilege/privilege-query.js.map +1 -1
  206. package/dist-server/service/privilege/privilege-types.d.ts +25 -0
  207. package/dist-server/service/privilege/privilege.d.ts +15 -0
  208. package/dist-server/service/role/index.d.ts +5 -0
  209. package/dist-server/service/role/role-mutation.d.ts +8 -0
  210. package/dist-server/service/role/role-mutation.js +13 -11
  211. package/dist-server/service/role/role-mutation.js.map +1 -1
  212. package/dist-server/service/role/role-query.d.ts +18 -0
  213. package/dist-server/service/role/role-query.js +13 -13
  214. package/dist-server/service/role/role-query.js.map +1 -1
  215. package/dist-server/service/role/role-types.d.ts +33 -0
  216. package/dist-server/service/role/role.d.ts +18 -0
  217. package/dist-server/service/role/role.js +1 -2
  218. package/dist-server/service/role/role.js.map +1 -1
  219. package/dist-server/service/user/index.d.ts +5 -0
  220. package/dist-server/service/user/user-mutation.d.ts +28 -0
  221. package/dist-server/service/user/user-mutation.js +24 -17
  222. package/dist-server/service/user/user-mutation.js.map +1 -1
  223. package/dist-server/service/user/user-query.d.ts +16 -0
  224. package/dist-server/service/user/user-query.js +15 -13
  225. package/dist-server/service/user/user-query.js.map +1 -1
  226. package/dist-server/service/user/user-types.d.ts +26 -0
  227. package/dist-server/service/user/user.d.ts +39 -0
  228. package/dist-server/service/user/user.js +9 -8
  229. package/dist-server/service/user/user.js.map +1 -1
  230. package/dist-server/service/verification-token/index.d.ts +2 -0
  231. package/dist-server/service/verification-token/verification-token.d.ts +14 -0
  232. package/dist-server/templates/account-unlock-email.d.ts +4 -0
  233. package/dist-server/templates/invitation-email.d.ts +4 -0
  234. package/dist-server/templates/reset-password-email.d.ts +4 -0
  235. package/dist-server/templates/verification-email.d.ts +4 -0
  236. package/dist-server/tsconfig.tsbuildinfo +1 -1
  237. package/dist-server/types.d.ts +17 -0
  238. package/dist-server/types.js +3 -0
  239. package/dist-server/types.js.map +1 -0
  240. package/dist-server/utils/accepts.d.ts +1 -0
  241. package/dist-server/utils/access-token-cookie.d.ts +3 -0
  242. package/dist-server/utils/check-user-belongs-domain.d.ts +10 -0
  243. package/dist-server/utils/check-user-belongs-domain.js +2 -2
  244. package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
  245. package/dist-server/utils/get-domain-from-hostname.d.ts +1 -0
  246. package/dist-server/utils/get-domain-users.d.ts +5 -0
  247. package/dist-server/utils/get-domain-users.js +2 -3
  248. package/dist-server/utils/get-domain-users.js.map +1 -1
  249. package/dist-server/utils/get-secret.d.ts +1 -0
  250. package/dist-server/utils/get-user-domains.d.ts +5 -0
  251. package/dist-server/utils/get-user-domains.js +7 -5
  252. package/dist-server/utils/get-user-domains.js.map +1 -1
  253. package/package.json +15 -13
  254. package/server/controllers/auth.ts +1 -0
  255. package/server/controllers/change-pwd.ts +3 -3
  256. package/server/controllers/checkin.ts +3 -3
  257. package/server/controllers/invitation.ts +6 -7
  258. package/server/controllers/profile.ts +4 -3
  259. package/server/controllers/reset-password.ts +3 -3
  260. package/server/controllers/signin.ts +4 -2
  261. package/server/controllers/signup.ts +13 -8
  262. package/server/controllers/unlock-user.ts +5 -3
  263. package/server/controllers/utils/save-invitation-token.ts +2 -1
  264. package/server/controllers/utils/save-verification-token.ts +2 -1
  265. package/server/controllers/verification.ts +6 -4
  266. package/server/errors/auth-error.ts +3 -0
  267. package/server/errors/user-domain-not-match-error.ts +3 -0
  268. package/server/index.ts +3 -1
  269. package/server/middlewares/authenticate-401-middleware.ts +15 -3
  270. package/server/middlewares/domain-authenticate-middleware.ts +9 -6
  271. package/server/migrations/1548206416130-SeedUser.ts +3 -3
  272. package/server/migrations/1566805283882-SeedPrivilege.ts +2 -1
  273. package/server/router/auth-checkin-router.ts +1 -1
  274. package/server/router/auth-private-process-router.ts +1 -2
  275. package/server/router/auth-public-process-router.ts +2 -3
  276. package/server/router/auth-signup-router.ts +38 -38
  277. package/server/router/oauth2/oauth2-authorize-router.ts +3 -2
  278. package/server/router/oauth2/oauth2-router.ts +4 -5
  279. package/server/router/oauth2/oauth2-server.ts +19 -22
  280. package/server/service/app-binding/app-binding-mutation.ts +3 -2
  281. package/server/service/app-binding/app-binding-query.ts +9 -9
  282. package/server/service/appliance/appliance-mutation.ts +14 -8
  283. package/server/service/appliance/appliance-query.ts +11 -10
  284. package/server/service/application/application-mutation.ts +21 -12
  285. package/server/service/application/application-query.ts +20 -17
  286. package/server/service/domain-generator/domain-generator-mutation.ts +15 -10
  287. package/server/service/granted-role/granted-role-mutation.ts +14 -12
  288. package/server/service/granted-role/granted-role-query.ts +12 -10
  289. package/server/service/invitation/invitation-mutation.ts +7 -5
  290. package/server/service/invitation/invitation-query.ts +6 -4
  291. package/server/service/login-history/login-history-query.ts +13 -11
  292. package/server/service/login-history/login-history.ts +5 -4
  293. package/server/service/partner/partner-mutation.ts +10 -9
  294. package/server/service/partner/partner-query.ts +10 -10
  295. package/server/service/privilege/privilege-directive.ts +1 -1
  296. package/server/service/privilege/privilege-mutation.ts +10 -5
  297. package/server/service/privilege/privilege-query.ts +7 -7
  298. package/server/service/role/role-mutation.ts +18 -11
  299. package/server/service/role/role-query.ts +18 -16
  300. package/server/service/user/user-mutation.ts +39 -34
  301. package/server/service/user/user-query.ts +29 -21
  302. package/server/service/user/user.ts +12 -10
  303. package/server/types.ts +21 -0
  304. package/server/utils/check-user-belongs-domain.ts +2 -2
  305. package/server/utils/get-domain-users.ts +4 -2
  306. package/server/utils/get-user-domains.ts +8 -5
  307. package/things-factory.config.js +1 -1
  308. package/translations/en.json +2 -5
  309. package/translations/ko.json +5 -8
  310. package/translations/ms.json +2 -5
  311. package/translations/zh.json +2 -5
  312. package/client/actions/auth.js +0 -16
  313. package/client/index.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"privilege-query.js","sourceRoot":"","sources":["../../../server/service/privilege/privilege-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { getRepository } from 'typeorm'\n\nimport { buildQuery, ListParam } from '@things-factory/shell'\n\nimport { Role } from '../role/role'\nimport { User } from '../user/user'\nimport { Privilege } from './privilege'\nimport { PrivilegeList } from './privilege-types'\n\n@Resolver(Privilege)\nexport class PrivilegeQuery {\n @Query(returns => Privilege, { description: 'To fetch privilege' })\n async privilege(@Arg('name') name: string, @Arg('category') category: string): Promise<Privilege> {\n return await getRepository(Privilege).findOne({\n where: { name, category }\n })\n }\n\n @Query(returns => PrivilegeList, { description: 'To fetch multiple privileges' })\n async privileges(@Args() params: ListParam, @Ctx() context: any): Promise<PrivilegeList> {\n const queryBuilder = getRepository(Privilege).createQueryBuilder()\n buildQuery(queryBuilder, params, context, { domainRef: false })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => String)\n async description(@Root() privilege: Privilege, @Ctx() context: any) {\n const { t } = context\n const { name, category } = privilege\n\n const keyname = `privilege.name.${name}`\n const keycategory = `privilege.category.${category}`\n const tname = t(keyname)\n const tcategory = t(keycategory)\n\n return t('privilege.description', {\n name: tname === keyname ? name : tname,\n category: tcategory === keycategory ? category : tcategory\n })\n }\n\n @FieldResolver(type => [Role])\n async roles(@Root() privilege: Privilege) {\n return (\n await getRepository(Privilege).findOne(privilege.id, {\n relations: ['roles']\n })\n ).roles\n }\n\n @FieldResolver(type => User)\n async updater(@Root() privilege: Privilege): Promise<User> {\n return await getRepository(User).findOne(privilege.updaterId)\n }\n\n @FieldResolver(type => User)\n async creator(@Root() privilege: Privilege): Promise<User> {\n return await getRepository(User).findOne(privilege.creatorId)\n }\n}\n"]}
1
+ {"version":3,"file":"privilege-query.js","sourceRoot":"","sources":["../../../server/service/privilege/privilege-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { buildQuery, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Role } from '../role/role'\nimport { User } from '../user/user'\nimport { Privilege } from './privilege'\nimport { PrivilegeList } from './privilege-types'\n\n@Resolver(Privilege)\nexport class PrivilegeQuery {\n @Query(returns => Privilege, { description: 'To fetch privilege' })\n async privilege(@Arg('name') name: string, @Arg('category') category: string): Promise<Privilege> {\n return await getRepository(Privilege).findOne({\n where: { name, category }\n })\n }\n\n @Query(returns => PrivilegeList, { description: 'To fetch multiple privileges' })\n async privileges(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<PrivilegeList> {\n const queryBuilder = getRepository(Privilege).createQueryBuilder()\n buildQuery(queryBuilder, params, context, { domainRef: false })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => String)\n async description(@Root() privilege: Privilege, @Ctx() context: ResolverContext) {\n const { t } = context\n const { name, category } = privilege\n\n const keyname = `privilege.name.${name}`\n const keycategory = `privilege.category.${category}`\n const tname = t(keyname)\n const tcategory = t(keycategory)\n\n return t('privilege.description', {\n name: tname === keyname ? name : tname,\n category: tcategory === keycategory ? category : tcategory\n })\n }\n\n @FieldResolver(type => [Role])\n async roles(@Root() privilege: Privilege) {\n return (\n await getRepository(Privilege).findOne({\n where: { id: privilege.id },\n relations: ['roles']\n })\n ).roles\n }\n\n @FieldResolver(type => User)\n async updater(@Root() privilege: Privilege): Promise<User> {\n return await getRepository(User).findOneBy({ id: privilege.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() privilege: Privilege): Promise<User> {\n return await getRepository(User).findOneBy({ id: privilege.creatorId })\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { ObjectRef } from '@things-factory/shell';
2
+ import { Privilege } from './privilege';
3
+ export declare class NewPrivilege {
4
+ name: string;
5
+ category: string;
6
+ description?: string;
7
+ roles: ObjectRef[];
8
+ }
9
+ export declare class PrivilegePatch {
10
+ id?: string;
11
+ name?: string;
12
+ category?: string;
13
+ description?: string;
14
+ roles?: ObjectRef[];
15
+ }
16
+ export declare class PrivilegeList {
17
+ items: Privilege[];
18
+ total: number;
19
+ }
20
+ export declare class UserPrivilege {
21
+ id: String;
22
+ name: String;
23
+ description: String;
24
+ assigned: Boolean;
25
+ }
@@ -0,0 +1,15 @@
1
+ import { Role } from '../role/role';
2
+ import { User } from '../user/user';
3
+ export declare class Privilege {
4
+ id: string;
5
+ name: string;
6
+ category: string;
7
+ description: string;
8
+ roles: Role[];
9
+ creator: User;
10
+ creatorId: string;
11
+ updater: User;
12
+ updaterId: string;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
@@ -0,0 +1,5 @@
1
+ import { Role } from './role';
2
+ import { RoleQuery } from './role-query';
3
+ import { RoleMutation } from './role-mutation';
4
+ export declare const entities: (typeof Role)[];
5
+ export declare const resolvers: (typeof RoleQuery | typeof RoleMutation)[];
@@ -0,0 +1,8 @@
1
+ import { Role } from './role';
2
+ import { NewRole, RolePatch } from './role-types';
3
+ export declare class RoleMutation {
4
+ createRole(role: NewRole, context: ResolverContext): Promise<Role>;
5
+ updateRole(id: string, patch: RolePatch, context: ResolverContext): Promise<Role>;
6
+ deleteRole(id: string, context: ResolverContext): Promise<Boolean>;
7
+ deleteRoles(ids: string[], _context: any): Promise<boolean>;
8
+ }
@@ -3,33 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RoleMutation = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const type_graphql_1 = require("type-graphql");
6
- const typeorm_1 = require("typeorm");
7
- const user_1 = require("../user/user");
6
+ const shell_1 = require("@things-factory/shell");
8
7
  const privilege_1 = require("../privilege/privilege");
8
+ const user_1 = require("../user/user");
9
9
  const role_1 = require("./role");
10
10
  const role_types_1 = require("./role-types");
11
11
  let RoleMutation = class RoleMutation {
12
12
  async createRole(role, context) {
13
13
  const { domain, user } = context.state;
14
14
  const roleName = role.name.trim();
15
- const existsRole = await (0, typeorm_1.getRepository)(role_1.Role).findOne({ where: { name: roleName, domain } });
15
+ const existsRole = await (0, shell_1.getRepository)(role_1.Role).findOne({ where: { name: roleName, domain } });
16
16
  if (existsRole) {
17
17
  throw new Error('role name is duplicated');
18
18
  }
19
19
  if (role.privileges && role.privileges.length) {
20
- role.privileges = await (0, typeorm_1.getRepository)(privilege_1.Privilege).findByIds(role.privileges.map(privilege => privilege.id));
20
+ role.privileges = await (0, shell_1.getRepository)(privilege_1.Privilege).findByIds(role.privileges.map(privilege => privilege.id));
21
21
  }
22
22
  if (role.users && role.users.length) {
23
- role.users = await (0, typeorm_1.getRepository)(user_1.User).findByIds(role.users.map(user => user.id));
23
+ role.users = await (0, shell_1.getRepository)(user_1.User).findByIds(role.users.map(user => user.id));
24
24
  }
25
- return await (0, typeorm_1.getRepository)(role_1.Role).save(Object.assign({ domain, updater: user, creator: user }, role));
25
+ return await (0, shell_1.getRepository)(role_1.Role).save(Object.assign({ domain, updater: user, creator: user }, role));
26
26
  }
27
27
  async updateRole(id, patch, context) {
28
28
  const { domain, user } = context.state;
29
29
  const { name, description, privileges } = patch;
30
- const roleRepository = (0, typeorm_1.getRepository)(role_1.Role);
30
+ const roleRepository = (0, shell_1.getRepository)(role_1.Role);
31
31
  const role = await roleRepository.findOne({
32
- where: { domain, id },
32
+ where: { domain: { id: domain.id }, id },
33
33
  relations: ['privileges', 'creator', 'updater']
34
34
  });
35
35
  if (name && role.name !== name) {
@@ -43,11 +43,13 @@ let RoleMutation = class RoleMutation {
43
43
  if (description) {
44
44
  role.description = description;
45
45
  }
46
- return await roleRepository.save(Object.assign(Object.assign(Object.assign({}, role), patch), { privileges: await (0, typeorm_1.getRepository)(privilege_1.Privilege).findByIds(patch.privileges.map((privilege) => privilege.id)), updater: user }));
46
+ return await roleRepository.save(Object.assign(Object.assign(Object.assign({}, role), patch), { privileges: await (0, shell_1.getRepository)(privilege_1.Privilege).findByIds(patch.privileges.map((privilege) => privilege.id)), updater: user }));
47
47
  }
48
48
  async deleteRole(id, context) {
49
49
  const { tx, domain } = context.state;
50
- let role = await tx.getRepository(role_1.Role).findOne({ where: { domain, id }, relations: ['users', 'privileges'] });
50
+ let role = await tx
51
+ .getRepository(role_1.Role)
52
+ .findOne({ where: { domain: { id: domain.id }, id }, relations: ['users', 'privileges'] });
51
53
  try {
52
54
  if (role.users.length)
53
55
  throw new Error('cannot delete role because it is currently in use');
@@ -61,7 +63,7 @@ let RoleMutation = class RoleMutation {
61
63
  }
62
64
  }
63
65
  async deleteRoles(ids, _context) {
64
- await (0, typeorm_1.getRepository)(role_1.Role).delete(ids);
66
+ await (0, shell_1.getRepository)(role_1.Role).delete(ids);
65
67
  return true;
66
68
  }
67
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"role-mutation.js","sourceRoot":"","sources":["../../../server/service/role/role-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { getRepository, EntityManager } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '../user/user'\nimport { Privilege } from '../privilege/privilege'\nimport { Role } from './role'\nimport { NewRole, RolePatch } from './role-types'\n\n@Resolver(Role)\nexport class RoleMutation {\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => User, { description: 'To create new user' })\n async createRole(@Arg('role') role: NewRole, @Ctx() context: any): Promise<Role> {\n const { domain, user } = context.state\n const roleName = role.name.trim()\n\n const existsRole: Role = await getRepository(Role).findOne({ where: { name: roleName, domain } })\n\n if (existsRole) {\n throw new Error('role name is duplicated')\n }\n\n if (role.privileges && role.privileges.length) {\n role.privileges = await getRepository(Privilege).findByIds(role.privileges.map(privilege => privilege.id))\n }\n\n if (role.users && role.users.length) {\n role.users = await getRepository(User).findByIds(role.users.map(user => user.id))\n }\n\n return await getRepository(Role).save({\n domain,\n updater: user,\n creator: user,\n ...role\n })\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Role, { description: 'To modify role information' })\n async updateRole(@Arg('id') id: string, @Arg('patch') patch: RolePatch, @Ctx() context: any): Promise<Role> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const { name, description, privileges } = patch\n const roleRepository = getRepository(Role)\n const role: Role = await roleRepository.findOne({\n where: { domain, id },\n relations: ['privileges', 'creator', 'updater']\n })\n\n if (name && role.name !== name) {\n const roleName = name.trim()\n const existsRole: Role = await roleRepository.findOne({ where: { name: roleName, domain } })\n if (existsRole) {\n throw new Error('role name is duplicated')\n }\n\n role.name = roleName\n }\n\n if (description) {\n role.description = description\n }\n\n return await roleRepository.save({\n ...role,\n ...patch,\n privileges: await getRepository(Privilege).findByIds(\n patch.privileges.map((privilege: Privilege) => privilege.id)\n ),\n updater: user\n } as any)\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete role' })\n async deleteRole(@Arg('id') id: string, @Ctx() context: any): Promise<Boolean> {\n const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state\n let role: Role = await tx.getRepository(Role).findOne({ where: { domain, id }, relations: ['users', 'privileges'] })\n\n try {\n if (role.users.length) throw new Error('cannot delete role because it is currently in use')\n\n role.privileges = []\n\n role = await tx.getRepository(Role).save(role)\n\n await tx.getRepository(Role).delete(role.id)\n\n return true\n } catch (e) {\n context.throw(401, 'cannot delete role because it is currently in use')\n }\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete multiple roles' })\n async deleteRoles(@Arg('ids', type => [String]) ids: string[], @Ctx() _context: any) {\n await getRepository(Role).delete(ids)\n return true\n }\n}\n"]}
1
+ {"version":3,"file":"role-mutation.js","sourceRoot":"","sources":["../../../server/service/role/role-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { Privilege } from '../privilege/privilege'\nimport { User } from '../user/user'\nimport { Role } from './role'\nimport { NewRole, RolePatch } from './role-types'\n\n@Resolver(Role)\nexport class RoleMutation {\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => User, { description: 'To create new user' })\n async createRole(@Arg('role') role: NewRole, @Ctx() context: ResolverContext): Promise<Role> {\n const { domain, user } = context.state\n const roleName = role.name.trim()\n\n const existsRole: Role = await getRepository(Role).findOne({ where: { name: roleName, domain } })\n\n if (existsRole) {\n throw new Error('role name is duplicated')\n }\n\n if (role.privileges && role.privileges.length) {\n role.privileges = await getRepository(Privilege).findByIds(role.privileges.map(privilege => privilege.id))\n }\n\n if (role.users && role.users.length) {\n role.users = await getRepository(User).findByIds(role.users.map(user => user.id))\n }\n\n return await getRepository(Role).save({\n domain,\n updater: user,\n creator: user,\n ...role\n })\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Role, { description: 'To modify role information' })\n async updateRole(\n @Arg('id') id: string,\n @Arg('patch') patch: RolePatch,\n @Ctx() context: ResolverContext\n ): Promise<Role> {\n const { domain, user } = context.state\n const { name, description, privileges } = patch\n const roleRepository = getRepository(Role)\n const role: Role = await roleRepository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['privileges', 'creator', 'updater']\n })\n\n if (name && role.name !== name) {\n const roleName = name.trim()\n const existsRole: Role = await roleRepository.findOne({ where: { name: roleName, domain } })\n if (existsRole) {\n throw new Error('role name is duplicated')\n }\n\n role.name = roleName\n }\n\n if (description) {\n role.description = description\n }\n\n return await roleRepository.save({\n ...role,\n ...patch,\n privileges: await getRepository(Privilege).findByIds(\n patch.privileges.map((privilege: Privilege) => privilege.id)\n ),\n updater: user\n } as any)\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete role' })\n async deleteRole(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, domain } = context.state\n let role: Role = await tx\n .getRepository(Role)\n .findOne({ where: { domain: { id: domain.id }, id }, relations: ['users', 'privileges'] })\n\n try {\n if (role.users.length) throw new Error('cannot delete role because it is currently in use')\n\n role.privileges = []\n\n role = await tx.getRepository(Role).save(role)\n\n await tx.getRepository(Role).delete(role.id)\n\n return true\n } catch (e) {\n context.throw(401, 'cannot delete role because it is currently in use')\n }\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete multiple roles' })\n async deleteRoles(@Arg('ids', type => [String]) ids: string[], @Ctx() _context: any) {\n await getRepository(Role).delete(ids)\n return true\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { Domain, ListParam } from '@things-factory/shell';
2
+ import { Privilege } from '../privilege/privilege';
3
+ import { User } from '../user/user';
4
+ import { Role } from './role';
5
+ import { RoleList, RolePrivilege, UserRole } from './role-types';
6
+ export declare class RoleQuery {
7
+ role(name: string, context: ResolverContext): Promise<Role>;
8
+ roles(params: ListParam, context: ResolverContext): Promise<RoleList>;
9
+ rolePrivileges(roleId: string, context: ResolverContext): Promise<RolePrivilege[]>;
10
+ userRoles(userId: string, context: ResolverContext): Promise<UserRole[]>;
11
+ myRoles(context: ResolverContext): Promise<Role[]>;
12
+ checkRolePreset(context: ResolverContext): Promise<Role[]>;
13
+ domain(role: Role): Promise<Domain>;
14
+ users(role: Role): Promise<User[]>;
15
+ privileges(role: Role): Promise<Privilege[]>;
16
+ updater(role: Role): Promise<User>;
17
+ creator(role: Role): Promise<User>;
18
+ }
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.RoleQuery = void 0;
5
4
  const tslib_1 = require("tslib");
6
5
  const type_graphql_1 = require("type-graphql");
7
- const typeorm_1 = require("typeorm");
8
6
  const env_1 = require("@things-factory/env");
9
7
  const shell_1 = require("@things-factory/shell");
10
8
  const privilege_1 = require("../privilege/privilege");
@@ -14,12 +12,12 @@ const role_types_1 = require("./role-types");
14
12
  let RoleQuery = class RoleQuery {
15
13
  async role(name, context) {
16
14
  const { domain } = context.state;
17
- return await (0, typeorm_1.getRepository)(role_1.Role).findOne({ domain, name });
15
+ return await (0, shell_1.getRepository)(role_1.Role).findOneBy({ domain: { id: domain.id }, name });
18
16
  }
19
17
  async roles(params, context) {
20
18
  const { domain } = context.state;
21
19
  const [items, total] = await (0, shell_1.getQueryBuilderFromListParams)({
22
- repository: (0, typeorm_1.getRepository)(role_1.Role),
20
+ repository: (0, shell_1.getRepository)(role_1.Role),
23
21
  params,
24
22
  domain,
25
23
  searchables: ['name', 'description']
@@ -27,7 +25,7 @@ let RoleQuery = class RoleQuery {
27
25
  return { items, total };
28
26
  }
29
27
  async rolePrivileges(roleId, context) {
30
- const rolePrivileges = await (0, typeorm_1.getRepository)(privilege_1.Privilege).query(`
28
+ const rolePrivileges = await (0, shell_1.getRepository)(privilege_1.Privilege).query(`
31
29
  SELECT
32
30
  id,
33
31
  name,
@@ -51,7 +49,7 @@ let RoleQuery = class RoleQuery {
51
49
  return rolePrivileges;
52
50
  }
53
51
  async userRoles(userId, context) {
54
- const userRoles = await (0, typeorm_1.getRepository)(role_1.Role).query(`
52
+ const userRoles = await (0, shell_1.getRepository)(role_1.Role).query(`
55
53
  SELECT
56
54
  id,
57
55
  name,
@@ -75,7 +73,7 @@ let RoleQuery = class RoleQuery {
75
73
  }
76
74
  async myRoles(context) {
77
75
  const { user, domain } = context.state;
78
- const qb = await (0, typeorm_1.getRepository)(user_1.User).createQueryBuilder('USER');
76
+ const qb = await (0, shell_1.getRepository)(user_1.User).createQueryBuilder('USER');
79
77
  const { roles } = await qb
80
78
  .leftJoinAndSelect('USER.roles', 'ROLE')
81
79
  .leftJoin('ROLE.domain', 'ROLE_DOMAIN')
@@ -89,23 +87,25 @@ let RoleQuery = class RoleQuery {
89
87
  return rolePreset;
90
88
  }
91
89
  async domain(role) {
92
- return await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(role.domainId);
90
+ return await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: role.domainId });
93
91
  }
94
92
  async users(role) {
95
- return (await (0, typeorm_1.getRepository)(role_1.Role).findOne(role.id, {
93
+ return (await (0, shell_1.getRepository)(role_1.Role).findOne({
94
+ where: { id: role.id },
96
95
  relations: ['users']
97
96
  })).users;
98
97
  }
99
98
  async privileges(role) {
100
- return (await (0, typeorm_1.getRepository)(role_1.Role).findOne(role.id, {
99
+ return (await (0, shell_1.getRepository)(role_1.Role).findOne({
100
+ where: { id: role.id },
101
101
  relations: ['privileges']
102
102
  })).privileges;
103
103
  }
104
104
  async updater(role) {
105
- return await (0, typeorm_1.getRepository)(user_1.User).findOne(role.updaterId);
105
+ return await (0, shell_1.getRepository)(user_1.User).findOneBy({ id: role.updaterId });
106
106
  }
107
107
  async creator(role) {
108
- return await (0, typeorm_1.getRepository)(user_1.User).findOne(role.creatorId);
108
+ return await (0, shell_1.getRepository)(user_1.User).findOneBy({ id: role.creatorId });
109
109
  }
110
110
  };
111
111
  tslib_1.__decorate([
@@ -123,7 +123,7 @@ tslib_1.__decorate([
123
123
  tslib_1.__param(0, (0, type_graphql_1.Args)()),
124
124
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
125
125
  tslib_1.__metadata("design:type", Function),
126
- tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof shell_1.ListParam !== "undefined" && shell_1.ListParam) === "function" ? _a : Object, Object]),
126
+ tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
127
127
  tslib_1.__metadata("design:returntype", Promise)
128
128
  ], RoleQuery.prototype, "roles", null);
129
129
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"role-query.js","sourceRoot":"","sources":["../../../server/service/role/role-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { getRepository, SelectQueryBuilder } from 'typeorm'\n\nimport { config } from '@things-factory/env'\nimport { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'\n\nimport { Privilege } from '../privilege/privilege'\nimport { User } from '../user/user'\nimport { Role } from './role'\nimport { RoleList, RolePrivilege, UserRole } from './role-types'\n\n@Resolver(Role)\nexport class RoleQuery {\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Role, { description: 'To fetch role' })\n async role(@Arg('name') name: string, @Ctx() context: any): Promise<Role> {\n const { domain }: { domain: Domain } = context.state\n return await getRepository(Role).findOne({ domain, name })\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => RoleList, { description: 'To fetch multiple users' })\n async roles(@Args() params: ListParam, @Ctx() context: any): Promise<RoleList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(Role),\n params,\n domain,\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [RolePrivilege], { description: 'To fetch priviliges of a role' })\n async rolePrivileges(@Arg('roleId') roleId: string, @Ctx() context: any): Promise<RolePrivilege[]> {\n const rolePrivileges = await getRepository(Privilege).query(\n `\n SELECT\n id,\n name,\n category,\n description,\n CASE WHEN id IN (\n SELECT\n P.id\n FROM\n privileges P JOIN roles_privileges RP\n ON\n P.id = RP.privileges_id\n WHERE\n RP.roles_id = '${roleId}'\n ) THEN true\n ELSE false\n END AS assigned\n FROM\n privileges\n `\n )\n\n return rolePrivileges\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [UserRole], { description: 'To fetch roles of a user' })\n async userRoles(@Arg('userId') userId: string, @Ctx() context: any): Promise<UserRole[]> {\n const userRoles = await getRepository(Role).query(\n `\n SELECT\n id,\n name,\n description,\n CASE WHEN id IN (\n SELECT\n R.id\n FROM\n roles R JOIN users_roles UR\n ON\n R.id = UR.roles_id\n WHERE\n UR.users_id = '${userId}'\n ) THEN true\n ELSE false\n END AS assigned\n FROM\n roles\n `\n )\n\n return userRoles\n }\n\n @Query(returns => [Role], { description: 'To fetch roles of current user' })\n async myRoles(@Ctx() context: any): Promise<Role[]> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const qb: SelectQueryBuilder<User> = await getRepository(User).createQueryBuilder('USER')\n const { roles }: User = await qb\n .leftJoinAndSelect('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'ROLE_DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .andWhere('ROLE_DOMAIN.id = :domainId', { domainId: domain.id })\n .getOne()\n\n return roles || []\n }\n\n @Query(returns => [Role], { description: 'To fetch the preset of role for new user' })\n async checkRolePreset(@Ctx() context: any): Promise<Role[]> {\n const rolePreset = config.get('rolePreset') || []\n\n return rolePreset\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() role: Role) {\n return await getRepository(Domain).findOne(role.domainId)\n }\n\n @FieldResolver(type => [User])\n async users(@Root() role: Role) {\n return (\n await getRepository(Role).findOne(role.id, {\n relations: ['users']\n })\n ).users\n }\n\n @FieldResolver(type => [Privilege])\n async privileges(@Root() role: Role) {\n return (\n await getRepository(Role).findOne(role.id, {\n relations: ['privileges']\n })\n ).privileges\n }\n\n @FieldResolver(type => User)\n async updater(@Root() role: Role): Promise<User> {\n return await getRepository(User).findOne(role.updaterId)\n }\n\n @FieldResolver(type => User)\n async creator(@Root() role: Role): Promise<User> {\n return await getRepository(User).findOne(role.creatorId)\n }\n}\n"]}
1
+ {"version":3,"file":"role-query.js","sourceRoot":"","sources":["../../../server/service/role/role-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { SelectQueryBuilder } from 'typeorm'\n\nimport { config } from '@things-factory/env'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Privilege } from '../privilege/privilege'\nimport { User } from '../user/user'\nimport { Role } from './role'\nimport { RoleList, RolePrivilege, UserRole } from './role-types'\n\n@Resolver(Role)\nexport class RoleQuery {\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Role, { description: 'To fetch role' })\n async role(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Role> {\n const { domain } = context.state\n return await getRepository(Role).findOneBy({ domain: { id: domain.id }, name })\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => RoleList, { description: 'To fetch multiple users' })\n async roles(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<RoleList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(Role),\n params,\n domain,\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [RolePrivilege], { description: 'To fetch priviliges of a role' })\n async rolePrivileges(@Arg('roleId') roleId: string, @Ctx() context: ResolverContext): Promise<RolePrivilege[]> {\n const rolePrivileges = await getRepository(Privilege).query(\n `\n SELECT\n id,\n name,\n category,\n description,\n CASE WHEN id IN (\n SELECT\n P.id\n FROM\n privileges P JOIN roles_privileges RP\n ON\n P.id = RP.privileges_id\n WHERE\n RP.roles_id = '${roleId}'\n ) THEN true\n ELSE false\n END AS assigned\n FROM\n privileges\n `\n )\n\n return rolePrivileges\n }\n\n @Directive('@privilege(category: \"user\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [UserRole], { description: 'To fetch roles of a user' })\n async userRoles(@Arg('userId') userId: string, @Ctx() context: ResolverContext): Promise<UserRole[]> {\n const userRoles = await getRepository(Role).query(\n `\n SELECT\n id,\n name,\n description,\n CASE WHEN id IN (\n SELECT\n R.id\n FROM\n roles R JOIN users_roles UR\n ON\n R.id = UR.roles_id\n WHERE\n UR.users_id = '${userId}'\n ) THEN true\n ELSE false\n END AS assigned\n FROM\n roles\n `\n )\n\n return userRoles\n }\n\n @Query(returns => [Role], { description: 'To fetch roles of current user' })\n async myRoles(@Ctx() context: ResolverContext): Promise<Role[]> {\n const { user, domain } = context.state\n\n const qb: SelectQueryBuilder<User> = await getRepository(User).createQueryBuilder('USER')\n const { roles }: User = await qb\n .leftJoinAndSelect('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'ROLE_DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .andWhere('ROLE_DOMAIN.id = :domainId', { domainId: domain.id })\n .getOne()\n\n return roles || []\n }\n\n @Query(returns => [Role], { description: 'To fetch the preset of role for new user' })\n async checkRolePreset(@Ctx() context: ResolverContext): Promise<Role[]> {\n const rolePreset = config.get('rolePreset') || []\n\n return rolePreset\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() role: Role) {\n return await getRepository(Domain).findOneBy({ id: role.domainId })\n }\n\n @FieldResolver(type => [User])\n async users(@Root() role: Role) {\n return (\n await getRepository(Role).findOne({\n where: { id: role.id },\n relations: ['users']\n })\n ).users\n }\n\n @FieldResolver(type => [Privilege])\n async privileges(@Root() role: Role) {\n return (\n await getRepository(Role).findOne({\n where: { id: role.id },\n relations: ['privileges']\n })\n ).privileges\n }\n\n @FieldResolver(type => User)\n async updater(@Root() role: Role): Promise<User> {\n return await getRepository(User).findOneBy({ id: role.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() role: Role): Promise<User> {\n return await getRepository(User).findOneBy({ id: role.creatorId })\n }\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import { ObjectRef } from '@things-factory/shell';
2
+ import { Role } from './role';
3
+ export declare class NewRole {
4
+ name: string;
5
+ description?: string;
6
+ users?: ObjectRef[];
7
+ privileges?: ObjectRef[];
8
+ }
9
+ export declare class RolePatch {
10
+ id?: string;
11
+ name?: string;
12
+ description?: string;
13
+ users?: ObjectRef[];
14
+ privileges?: ObjectRef[];
15
+ cuFlag?: string;
16
+ }
17
+ export declare class RoleList {
18
+ items?: Role[];
19
+ total?: number;
20
+ }
21
+ export declare class RolePrivilege {
22
+ id?: string;
23
+ name?: string;
24
+ category?: string;
25
+ description?: string;
26
+ assigned?: boolean;
27
+ }
28
+ export declare class UserRole {
29
+ id?: string;
30
+ name?: string;
31
+ description?: string;
32
+ assigned?: boolean;
33
+ }
@@ -0,0 +1,18 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ import { Privilege } from '../privilege/privilege';
3
+ import { User } from '../user/user';
4
+ export declare class Role {
5
+ readonly id: string;
6
+ domain: Domain;
7
+ domainId: string;
8
+ name: string;
9
+ users: User[];
10
+ privileges: Privilege[];
11
+ description: string;
12
+ creator: User;
13
+ creatorId: string;
14
+ updater: User;
15
+ updaterId: string;
16
+ createdAt: Date;
17
+ updatedAt: Date;
18
+ }
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Role = void 0;
5
4
  const tslib_1 = require("tslib");
@@ -17,7 +16,7 @@ tslib_1.__decorate([
17
16
  ], Role.prototype, "id", void 0);
18
17
  tslib_1.__decorate([
19
18
  (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
20
- tslib_1.__metadata("design:type", typeof (_a = typeof shell_1.Domain !== "undefined" && shell_1.Domain) === "function" ? _a : Object)
19
+ tslib_1.__metadata("design:type", shell_1.Domain)
21
20
  ], Role.prototype, "domain", void 0);
22
21
  tslib_1.__decorate([
23
22
  (0, typeorm_1.RelationId)((role) => role.domain),
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sourceRoot":"","sources":["../../../server/service/role/role.ts"],"names":[],"mappings":";;;;;AAAA,iDAA8C;AAC9C,qCAWgB;AAChB,+CAAoD;AACpD,sDAAkD;AAClD,uCAAmC;AAKnC,IAAa,IAAI,GAAjB,MAAa,IAAI;CAsDhB,CAAA;AAnDC;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;gCACC;AAGnB;IADC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;0DAClB,cAAM,oBAAN,cAAM;oCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;;sCACxB;AAIhB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;kCACI;AAIZ;IAFC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mCAC7B;AAIb;IAFC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,qBAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3D,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACxB;AAMvB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACP;AAMnB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC/B,WAAI;qCAAA;AAGb;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACxB;AAMjB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC/B,WAAI;qCAAA;AAGb;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACxB;AAIjB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;uCAAA;AAIf;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;uCAAA;AArDJ,IAAI;IAHhB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,WAAW,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9E,IAAA,yBAAU,GAAE;GACA,IAAI,CAsDhB;AAtDY,oBAAI","sourcesContent":["import { Domain } from '@things-factory/shell'\nimport {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinTable,\n ManyToMany,\n ManyToOne,\n RelationId,\n PrimaryGeneratedColumn,\n UpdateDateColumn\n} from 'typeorm'\nimport { ObjectType, Field, ID } from 'type-graphql'\nimport { Privilege } from '../privilege/privilege'\nimport { User } from '../user/user'\n\n@Entity()\n@Index('ix_role_0', (role: Role) => [role.name, role.domain], { unique: true })\n@ObjectType()\nexport class Role {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain: Domain\n\n @RelationId((role: Role) => role.domain)\n domainId: string\n\n @Column()\n @Field()\n name: string\n\n @ManyToMany(type => User, user => user.roles)\n @Field(type => [User], { nullable: true })\n users: User[]\n\n @ManyToMany(type => Privilege, privilege => privilege.roles)\n @Field(type => [Privilege], { nullable: true })\n privileges: Privilege[]\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n description: string\n\n @ManyToOne(type => User, {\n nullable: true\n })\n @Field(type => User, { nullable: true })\n creator: User\n\n @RelationId((role: Role) => role.creator)\n creatorId: string\n\n @ManyToOne(type => User, {\n nullable: true\n })\n @Field(type => User, { nullable: true })\n updater: User\n\n @RelationId((role: Role) => role.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"]}
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../../server/service/role/role.ts"],"names":[],"mappings":";;;;AAAA,iDAA8C;AAC9C,qCAWgB;AAChB,+CAAoD;AACpD,sDAAkD;AAClD,uCAAmC;AAKnC,IAAa,IAAI,GAAjB,MAAa,IAAI;CAsDhB,CAAA;AAnDC;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;gCACC;AAGnB;IADC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;sCAClB,cAAM;oCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;;sCACxB;AAIhB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;kCACI;AAIZ;IAFC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mCAC7B;AAIb;IAFC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,qBAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3D,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACxB;AAMvB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACP;AAMnB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC/B,WAAI;qCAAA;AAGb;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACxB;AAMjB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC/B,WAAI;qCAAA;AAGb;IADC,IAAA,oBAAU,EAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;uCACxB;AAIjB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;uCAAA;AAIf;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;uCAAA;AArDJ,IAAI;IAHhB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,WAAW,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9E,IAAA,yBAAU,GAAE;GACA,IAAI,CAsDhB;AAtDY,oBAAI","sourcesContent":["import { Domain } from '@things-factory/shell'\nimport {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n JoinTable,\n ManyToMany,\n ManyToOne,\n RelationId,\n PrimaryGeneratedColumn,\n UpdateDateColumn\n} from 'typeorm'\nimport { ObjectType, Field, ID } from 'type-graphql'\nimport { Privilege } from '../privilege/privilege'\nimport { User } from '../user/user'\n\n@Entity()\n@Index('ix_role_0', (role: Role) => [role.name, role.domain], { unique: true })\n@ObjectType()\nexport class Role {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n domain: Domain\n\n @RelationId((role: Role) => role.domain)\n domainId: string\n\n @Column()\n @Field()\n name: string\n\n @ManyToMany(type => User, user => user.roles)\n @Field(type => [User], { nullable: true })\n users: User[]\n\n @ManyToMany(type => Privilege, privilege => privilege.roles)\n @Field(type => [Privilege], { nullable: true })\n privileges: Privilege[]\n\n @Column({\n nullable: true\n })\n @Field({ nullable: true })\n description: string\n\n @ManyToOne(type => User, {\n nullable: true\n })\n @Field(type => User, { nullable: true })\n creator: User\n\n @RelationId((role: Role) => role.creator)\n creatorId: string\n\n @ManyToOne(type => User, {\n nullable: true\n })\n @Field(type => User, { nullable: true })\n updater: User\n\n @RelationId((role: Role) => role.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"]}
@@ -0,0 +1,5 @@
1
+ import { User } from './user';
2
+ import { UserQuery } from './user-query';
3
+ import { UserMutation } from './user-mutation';
4
+ export declare const entities: (typeof User)[];
5
+ export declare const resolvers: (typeof UserQuery | typeof UserMutation)[];
@@ -0,0 +1,28 @@
1
+ import { Domain, ObjectRef } from '@things-factory/shell';
2
+ import { Role } from '../role/role';
3
+ import { User } from './user';
4
+ import { NewUser, UserPatch } from './user-types';
5
+ export declare class UserMutation {
6
+ createUser(user: NewUser, context: ResolverContext): Promise<{
7
+ domains: Domain[];
8
+ roles: Role[];
9
+ salt: string;
10
+ passwordUpdatedAt: Date;
11
+ password: string;
12
+ name: string;
13
+ description?: string;
14
+ email: string;
15
+ userType?: string;
16
+ creator: User;
17
+ updater: User;
18
+ } & User>;
19
+ updateUser(email: string, patch: UserPatch, context: ResolverContext): Promise<any>;
20
+ updateMultipleUser(patches: UserPatch[], context: ResolverContext): Promise<any[]>;
21
+ deleteUser(email: string, context: ResolverContext): Promise<boolean>;
22
+ deleteUsers(emails: string[], context: ResolverContext): Promise<boolean>;
23
+ inviteUser(email: string, context: ResolverContext): Promise<boolean>;
24
+ deleteDomainUser(email: string, context: ResolverContext): Promise<boolean>;
25
+ transferOwner(email: string, context: ResolverContext): Promise<boolean>;
26
+ resetPasswordToDefault(userId: string, context: ResolverContext): Promise<boolean>;
27
+ updateUserRoles(userId: string, availableRoles: ObjectRef[], selectedRoles: ObjectRef[], context: ResolverContext): Promise<User>;
28
+ }
@@ -4,20 +4,20 @@ exports.UserMutation = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const type_graphql_1 = require("type-graphql");
6
6
  const typeorm_1 = require("typeorm");
7
+ const env_1 = require("@things-factory/env");
7
8
  const shell_1 = require("@things-factory/shell");
8
- const user_1 = require("./user");
9
+ const delete_user_1 = require("../../controllers/delete-user");
10
+ const get_domain_users_1 = require("../../utils/get-domain-users");
9
11
  const role_1 = require("../role/role");
12
+ const user_1 = require("./user");
10
13
  const user_types_1 = require("./user-types");
11
- const get_domain_users_1 = require("../../utils/get-domain-users");
12
- const env_1 = require("@things-factory/env");
13
- const delete_user_1 = require("../../controllers/delete-user");
14
14
  let UserMutation = class UserMutation {
15
15
  async createUser(user, context) {
16
16
  const { domain } = context.state;
17
17
  const { defaultPassword } = env_1.config.get('password');
18
18
  const { email } = user;
19
19
  user.email = email.trim();
20
- const oldUser = await (0, typeorm_1.getRepository)(user_1.User).findOne({ where: { email: user.email } });
20
+ const oldUser = await (0, shell_1.getRepository)(user_1.User).findOne({ where: { email: user.email } });
21
21
  if (oldUser) {
22
22
  throw new Error(context.t('error.x already exists in y', { x: context.t('field.user'), y: 'operato' }));
23
23
  }
@@ -25,9 +25,10 @@ let UserMutation = class UserMutation {
25
25
  /* check if password is following the rule */
26
26
  // User.validatePasswordByRule(user.password, context.lng)
27
27
  const salt = user_1.User.generateSalt();
28
- return await (0, typeorm_1.getRepository)(user_1.User).save(Object.assign(Object.assign({ creator: context.state.user, updater: context.state.user }, user), { domains: [domain], roles: user.roles && user.roles.length
29
- ? await (0, typeorm_1.getRepository)(role_1.Role).findByIds(user.roles.map(role => role.id), {
30
- where: { domain }
28
+ return await (0, shell_1.getRepository)(user_1.User).save(Object.assign(Object.assign({ creator: context.state.user, updater: context.state.user }, user), { domains: [domain], roles: user.roles && user.roles.length
29
+ ? await (0, shell_1.getRepository)(role_1.Role).findBy({
30
+ id: (0, typeorm_1.In)(user.roles.map(role => role.id)),
31
+ domain
31
32
  })
32
33
  : [], salt, passwordUpdatedAt: new Date(), password: user.password ? user_1.User.encode(user.password, salt) : user_1.User.encode(defaultPassword, salt) }));
33
34
  }
@@ -40,12 +41,12 @@ let UserMutation = class UserMutation {
40
41
  .leftJoinAndSelect('ROLES.domain', 'R_DOMAIN')
41
42
  .getOne();
42
43
  if (patch.roles) {
43
- patch.roles = await (0, typeorm_1.getRepository)(role_1.Role).find({ where: { id: (0, typeorm_1.In)(patch.roles.map((r) => r.id)) } });
44
+ patch.roles = await (0, shell_1.getRepository)(role_1.Role).find({ where: { id: (0, typeorm_1.In)(patch.roles.map((r) => r.id)) } });
44
45
  }
45
46
  if (patch.status && patch.status === 'activated') {
46
47
  user.status = user_1.UserStatus.ACTIVATED;
47
48
  }
48
- return await (0, typeorm_1.getRepository)(user_1.User).save(Object.assign(Object.assign(Object.assign({}, user), patch), { updater }));
49
+ return await (0, shell_1.getRepository)(user_1.User).save(Object.assign(Object.assign(Object.assign({}, user), patch), { updater }));
49
50
  }
50
51
  async updateMultipleUser(patches, context) {
51
52
  const { domain, user, tx } = context.state;
@@ -119,8 +120,8 @@ let UserMutation = class UserMutation {
119
120
  return true;
120
121
  }
121
122
  async inviteUser(email, context) {
122
- let { domain } = context.state;
123
- const invitee = await (0, typeorm_1.getRepository)(user_1.User).findOne({
123
+ const { domain } = context.state;
124
+ const invitee = await (0, shell_1.getRepository)(user_1.User).findOne({
124
125
  where: { email },
125
126
  relations: ['domains']
126
127
  });
@@ -132,7 +133,7 @@ let UserMutation = class UserMutation {
132
133
  throw new Error(context.t('error.x already exists in y', { x: context.t('field.user'), y: domain.name }));
133
134
  }
134
135
  invitee.domains = [...existingDomains, domain];
135
- await (0, typeorm_1.getRepository)(user_1.User).save(invitee);
136
+ await (0, shell_1.getRepository)(user_1.User).save(invitee);
136
137
  return true;
137
138
  }
138
139
  async deleteDomainUser(email, context) {
@@ -155,11 +156,11 @@ let UserMutation = class UserMutation {
155
156
  }
156
157
  async transferOwner(email, context) {
157
158
  const { domain } = context.state;
158
- const user = await (0, typeorm_1.getRepository)(user_1.User).findOne({
159
+ const user = await (0, shell_1.getRepository)(user_1.User).findOne({
159
160
  where: { email }
160
161
  });
161
162
  domain.owner = user.id;
162
- await (0, typeorm_1.getRepository)(shell_1.Domain).save(domain);
163
+ await (0, shell_1.getRepository)(shell_1.Domain).save(domain);
163
164
  return true;
164
165
  }
165
166
  async resetPasswordToDefault(userId, context) {
@@ -168,7 +169,10 @@ let UserMutation = class UserMutation {
168
169
  const { defaultPassword } = env_1.config.get('password');
169
170
  if (!defaultPassword)
170
171
  throw new Error('No default password found');
171
- const targetUser = await tx.getRepository(user_1.User).findOne(userId, { relations: ['domains'] });
172
+ const targetUser = await tx.getRepository(user_1.User).findOne({
173
+ where: { id: userId },
174
+ relations: ['domains']
175
+ });
172
176
  if (!targetUser)
173
177
  throw new Error('No user found');
174
178
  if (!((_a = targetUser === null || targetUser === void 0 ? void 0 : targetUser.domains) === null || _a === void 0 ? void 0 : _a.find((userDomain) => userDomain.id === domain.id))) {
@@ -181,7 +185,10 @@ let UserMutation = class UserMutation {
181
185
  }
182
186
  async updateUserRoles(userId, availableRoles, selectedRoles, context) {
183
187
  const { domain, tx } = context.state;
184
- let user = await tx.getRepository(user_1.User).findOne(userId, { relations: ['domains', 'roles'] });
188
+ let user = await tx.getRepository(user_1.User).findOne({
189
+ where: { id: userId },
190
+ relations: ['domains', 'roles']
191
+ });
185
192
  if (!user)
186
193
  throw new Error('Failed to find user');
187
194
  if (user.domains.map((d) => d.id).indexOf(domain.id) < 0)