@things-factory/auth-base 9.0.0-beta.5 → 9.0.0-beta.52

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 (352) hide show
  1. package/config/config.development.js +46 -0
  2. package/config/config.production.js +45 -0
  3. package/dist-client/auth.js +0 -3
  4. package/dist-client/auth.js.map +1 -1
  5. package/dist-client/bootstrap.d.ts +1 -1
  6. package/dist-client/bootstrap.js +4 -4
  7. package/dist-client/bootstrap.js.map +1 -1
  8. package/dist-client/directive/privileged.d.ts +1 -1
  9. package/dist-client/directive/privileged.js +1 -1
  10. package/dist-client/directive/privileged.js.map +1 -1
  11. package/dist-client/index.d.ts +4 -4
  12. package/dist-client/index.js +4 -4
  13. package/dist-client/index.js.map +1 -1
  14. package/dist-client/profiled.js +1 -1
  15. package/dist-client/profiled.js.map +1 -1
  16. package/dist-client/reducers/auth.js +1 -1
  17. package/dist-client/reducers/auth.js.map +1 -1
  18. package/dist-client/tsconfig.tsbuildinfo +1 -1
  19. package/dist-server/controllers/auth.d.ts +5 -5
  20. package/dist-server/controllers/auth.js +5 -5
  21. package/dist-server/controllers/auth.js.map +1 -1
  22. package/dist-server/controllers/change-pwd.js +19 -19
  23. package/dist-server/controllers/change-pwd.js.map +1 -1
  24. package/dist-server/controllers/checkin.js +4 -4
  25. package/dist-server/controllers/checkin.js.map +1 -1
  26. package/dist-server/controllers/delete-user.js +9 -9
  27. package/dist-server/controllers/delete-user.js.map +1 -1
  28. package/dist-server/controllers/invitation.js +19 -19
  29. package/dist-server/controllers/invitation.js.map +1 -1
  30. package/dist-server/controllers/profile.d.ts +5 -5
  31. package/dist-server/controllers/profile.js +10 -10
  32. package/dist-server/controllers/profile.js.map +1 -1
  33. package/dist-server/controllers/reset-password.js +24 -24
  34. package/dist-server/controllers/reset-password.js.map +1 -1
  35. package/dist-server/controllers/signin.d.ts +1 -1
  36. package/dist-server/controllers/signin.js +24 -24
  37. package/dist-server/controllers/signin.js.map +1 -1
  38. package/dist-server/controllers/signup.d.ts +1 -1
  39. package/dist-server/controllers/signup.js +13 -13
  40. package/dist-server/controllers/signup.js.map +1 -1
  41. package/dist-server/controllers/unlock-user.js +17 -17
  42. package/dist-server/controllers/unlock-user.js.map +1 -1
  43. package/dist-server/controllers/utils/password-rule.js +4 -4
  44. package/dist-server/controllers/utils/password-rule.js.map +1 -1
  45. package/dist-server/controllers/utils/save-invitation-token.d.ts +1 -1
  46. package/dist-server/controllers/utils/save-invitation-token.js +2 -2
  47. package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
  48. package/dist-server/controllers/utils/save-verification-token.d.ts +1 -1
  49. package/dist-server/controllers/utils/save-verification-token.js +3 -3
  50. package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
  51. package/dist-server/controllers/verification.js +23 -23
  52. package/dist-server/controllers/verification.js.map +1 -1
  53. package/dist-server/errors/auth-error.js +1 -1
  54. package/dist-server/errors/auth-error.js.map +1 -1
  55. package/dist-server/errors/index.d.ts +2 -2
  56. package/dist-server/errors/index.js +2 -2
  57. package/dist-server/errors/index.js.map +1 -1
  58. package/dist-server/errors/user-domain-not-match-error.d.ts +1 -1
  59. package/dist-server/errors/user-domain-not-match-error.js +8 -8
  60. package/dist-server/errors/user-domain-not-match-error.js.map +1 -1
  61. package/dist-server/index.d.ts +16 -16
  62. package/dist-server/index.js +18 -18
  63. package/dist-server/index.js.map +1 -1
  64. package/dist-server/middlewares/authenticate-401-middleware.js +11 -11
  65. package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
  66. package/dist-server/middlewares/bypass-signin-middleware.d.ts +1 -0
  67. package/dist-server/middlewares/bypass-signin-middleware.js +20 -0
  68. package/dist-server/middlewares/bypass-signin-middleware.js.map +1 -0
  69. package/dist-server/middlewares/domain-authenticate-middleware.d.ts +1 -1
  70. package/dist-server/middlewares/domain-authenticate-middleware.js +9 -13
  71. package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
  72. package/dist-server/middlewares/graphql-authenticate-middleware.js +4 -4
  73. package/dist-server/middlewares/graphql-authenticate-middleware.js.map +1 -1
  74. package/dist-server/middlewares/index.d.ts +5 -5
  75. package/dist-server/middlewares/index.js +24 -19
  76. package/dist-server/middlewares/index.js.map +1 -1
  77. package/dist-server/middlewares/jwt-authenticate-middleware.js +15 -15
  78. package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -1
  79. package/dist-server/middlewares/signin-middleware.js +2 -2
  80. package/dist-server/middlewares/signin-middleware.js.map +1 -1
  81. package/dist-server/middlewares/verify-recaptcha-middleware.d.ts +3 -0
  82. package/dist-server/middlewares/verify-recaptcha-middleware.js +95 -0
  83. package/dist-server/middlewares/verify-recaptcha-middleware.js.map +1 -0
  84. package/dist-server/middlewares/webauthn-middleware.js +7 -7
  85. package/dist-server/middlewares/webauthn-middleware.js.map +1 -1
  86. package/dist-server/migrations/1548206416130-SeedUser.js +6 -6
  87. package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
  88. package/dist-server/migrations/1566805283882-SeedPrivilege.js +2 -2
  89. package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -1
  90. package/dist-server/migrations/index.js.map +1 -1
  91. package/dist-server/router/auth-checkin-router.js +18 -17
  92. package/dist-server/router/auth-checkin-router.js.map +1 -1
  93. package/dist-server/router/auth-private-process-router.js +27 -19
  94. package/dist-server/router/auth-private-process-router.js.map +1 -1
  95. package/dist-server/router/auth-public-process-router.js +24 -24
  96. package/dist-server/router/auth-public-process-router.js.map +1 -1
  97. package/dist-server/router/auth-signin-router.js +6 -6
  98. package/dist-server/router/auth-signin-router.js.map +1 -1
  99. package/dist-server/router/auth-signup-router.js +11 -8
  100. package/dist-server/router/auth-signup-router.js.map +1 -1
  101. package/dist-server/router/index.d.ts +9 -9
  102. package/dist-server/router/index.js +9 -9
  103. package/dist-server/router/index.js.map +1 -1
  104. package/dist-server/router/oauth2/index.d.ts +2 -2
  105. package/dist-server/router/oauth2/index.js +2 -2
  106. package/dist-server/router/oauth2/index.js.map +1 -1
  107. package/dist-server/router/oauth2/oauth2-authorize-router.js +6 -6
  108. package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
  109. package/dist-server/router/oauth2/oauth2-router.d.ts +1 -1
  110. package/dist-server/router/oauth2/oauth2-router.js +21 -21
  111. package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
  112. package/dist-server/router/oauth2/oauth2-server.js +21 -21
  113. package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
  114. package/dist-server/router/site-root-router.js +4 -4
  115. package/dist-server/router/site-root-router.js.map +1 -1
  116. package/dist-server/router/webauthn-router.js +9 -9
  117. package/dist-server/router/webauthn-router.js.map +1 -1
  118. package/dist-server/routes.js +77 -51
  119. package/dist-server/routes.js.map +1 -1
  120. package/dist-server/service/app-binding/app-binding-mutation.js +4 -4
  121. package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
  122. package/dist-server/service/app-binding/app-binding-query.d.ts +4 -4
  123. package/dist-server/service/app-binding/app-binding-query.js +22 -22
  124. package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
  125. package/dist-server/service/app-binding/app-binding-types.d.ts +1 -1
  126. package/dist-server/service/app-binding/app-binding-types.js +2 -2
  127. package/dist-server/service/app-binding/app-binding-types.js.map +1 -1
  128. package/dist-server/service/app-binding/app-binding.d.ts +2 -2
  129. package/dist-server/service/app-binding/app-binding.js +4 -4
  130. package/dist-server/service/app-binding/app-binding.js.map +1 -1
  131. package/dist-server/service/app-binding/index.d.ts +2 -2
  132. package/dist-server/service/app-binding/index.js +3 -3
  133. package/dist-server/service/app-binding/index.js.map +1 -1
  134. package/dist-server/service/appliance/appliance-mutation.d.ts +2 -2
  135. package/dist-server/service/appliance/appliance-mutation.js +32 -45
  136. package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
  137. package/dist-server/service/appliance/appliance-query.d.ts +3 -3
  138. package/dist-server/service/appliance/appliance-query.js +17 -17
  139. package/dist-server/service/appliance/appliance-query.js.map +1 -1
  140. package/dist-server/service/appliance/appliance-types.d.ts +1 -1
  141. package/dist-server/service/appliance/appliance-types.js +2 -2
  142. package/dist-server/service/appliance/appliance-types.js.map +1 -1
  143. package/dist-server/service/appliance/appliance.d.ts +3 -1
  144. package/dist-server/service/appliance/appliance.js +51 -8
  145. package/dist-server/service/appliance/appliance.js.map +1 -1
  146. package/dist-server/service/appliance/index.d.ts +3 -3
  147. package/dist-server/service/appliance/index.js +5 -5
  148. package/dist-server/service/appliance/index.js.map +1 -1
  149. package/dist-server/service/application/application-mutation.d.ts +8 -8
  150. package/dist-server/service/application/application-mutation.js +20 -20
  151. package/dist-server/service/application/application-mutation.js.map +1 -1
  152. package/dist-server/service/application/application-query.d.ts +2 -2
  153. package/dist-server/service/application/application-query.js +16 -16
  154. package/dist-server/service/application/application-query.js.map +1 -1
  155. package/dist-server/service/application/application-types.d.ts +1 -1
  156. package/dist-server/service/application/application-types.js +4 -4
  157. package/dist-server/service/application/application-types.js.map +1 -1
  158. package/dist-server/service/application/application.d.ts +1 -1
  159. package/dist-server/service/application/application.js +12 -12
  160. package/dist-server/service/application/application.js.map +1 -1
  161. package/dist-server/service/application/index.d.ts +3 -3
  162. package/dist-server/service/application/index.js +5 -5
  163. package/dist-server/service/application/index.js.map +1 -1
  164. package/dist-server/service/auth-provider/auth-provider-mutation.d.ts +2 -2
  165. package/dist-server/service/auth-provider/auth-provider-mutation.js +20 -20
  166. package/dist-server/service/auth-provider/auth-provider-mutation.js.map +1 -1
  167. package/dist-server/service/auth-provider/auth-provider-query.d.ts +3 -3
  168. package/dist-server/service/auth-provider/auth-provider-query.js +20 -20
  169. package/dist-server/service/auth-provider/auth-provider-query.js.map +1 -1
  170. package/dist-server/service/auth-provider/auth-provider-type.d.ts +1 -1
  171. package/dist-server/service/auth-provider/auth-provider-type.js +2 -2
  172. package/dist-server/service/auth-provider/auth-provider-type.js.map +1 -1
  173. package/dist-server/service/auth-provider/auth-provider.d.ts +3 -3
  174. package/dist-server/service/auth-provider/auth-provider.js +12 -12
  175. package/dist-server/service/auth-provider/auth-provider.js.map +1 -1
  176. package/dist-server/service/auth-provider/index.d.ts +3 -3
  177. package/dist-server/service/auth-provider/index.js +5 -5
  178. package/dist-server/service/auth-provider/index.js.map +1 -1
  179. package/dist-server/service/domain-generator/domain-generator-mutation.d.ts +1 -1
  180. package/dist-server/service/domain-generator/domain-generator-mutation.js +11 -11
  181. package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
  182. package/dist-server/service/domain-generator/domain-generator-types.d.ts +1 -1
  183. package/dist-server/service/domain-generator/domain-generator-types.js +3 -3
  184. package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
  185. package/dist-server/service/domain-generator/index.d.ts +1 -1
  186. package/dist-server/service/domain-generator/index.js +2 -2
  187. package/dist-server/service/domain-generator/index.js.map +1 -1
  188. package/dist-server/service/domain-link/domain-link-mutation.d.ts +9 -0
  189. package/dist-server/service/domain-link/domain-link-mutation.js +116 -0
  190. package/dist-server/service/domain-link/domain-link-mutation.js.map +1 -0
  191. package/dist-server/service/domain-link/domain-link-query.d.ts +11 -0
  192. package/dist-server/service/domain-link/domain-link-query.js +75 -0
  193. package/dist-server/service/domain-link/domain-link-query.js.map +1 -0
  194. package/dist-server/service/domain-link/domain-link-types.d.ts +18 -0
  195. package/dist-server/service/domain-link/domain-link-types.js +66 -0
  196. package/dist-server/service/domain-link/domain-link-types.js.map +1 -0
  197. package/dist-server/service/domain-link/domain-link.d.ts +28 -0
  198. package/dist-server/service/domain-link/domain-link.js +105 -0
  199. package/dist-server/service/domain-link/domain-link.js.map +1 -0
  200. package/dist-server/service/domain-link/index.d.ts +6 -0
  201. package/dist-server/service/domain-link/index.js +10 -0
  202. package/dist-server/service/domain-link/index.js.map +1 -0
  203. package/dist-server/service/granted-role/granted-role-mutation.d.ts +3 -3
  204. package/dist-server/service/granted-role/granted-role-mutation.js +17 -17
  205. package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
  206. package/dist-server/service/granted-role/granted-role-query.d.ts +2 -2
  207. package/dist-server/service/granted-role/granted-role-query.js +13 -13
  208. package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
  209. package/dist-server/service/granted-role/granted-role.d.ts +1 -1
  210. package/dist-server/service/granted-role/granted-role.js +3 -3
  211. package/dist-server/service/granted-role/granted-role.js.map +1 -1
  212. package/dist-server/service/granted-role/index.d.ts +3 -3
  213. package/dist-server/service/granted-role/index.js +5 -5
  214. package/dist-server/service/granted-role/index.js.map +1 -1
  215. package/dist-server/service/index.d.ts +27 -25
  216. package/dist-server/service/index.js +75 -70
  217. package/dist-server/service/index.js.map +1 -1
  218. package/dist-server/service/invitation/index.d.ts +3 -3
  219. package/dist-server/service/invitation/index.js +5 -5
  220. package/dist-server/service/invitation/index.js.map +1 -1
  221. package/dist-server/service/invitation/invitation-mutation.d.ts +2 -2
  222. package/dist-server/service/invitation/invitation-mutation.js +10 -10
  223. package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
  224. package/dist-server/service/invitation/invitation-query.d.ts +1 -1
  225. package/dist-server/service/invitation/invitation-query.js +7 -7
  226. package/dist-server/service/invitation/invitation-query.js.map +1 -1
  227. package/dist-server/service/invitation/invitation-types.d.ts +1 -1
  228. package/dist-server/service/invitation/invitation-types.js +2 -2
  229. package/dist-server/service/invitation/invitation-types.js.map +1 -1
  230. package/dist-server/service/invitation/invitation.d.ts +1 -1
  231. package/dist-server/service/invitation/invitation.js +5 -5
  232. package/dist-server/service/invitation/invitation.js.map +1 -1
  233. package/dist-server/service/login-history/index.d.ts +2 -2
  234. package/dist-server/service/login-history/index.js +4 -4
  235. package/dist-server/service/login-history/index.js.map +1 -1
  236. package/dist-server/service/login-history/login-history-query.d.ts +3 -3
  237. package/dist-server/service/login-history/login-history-query.js +11 -11
  238. package/dist-server/service/login-history/login-history-query.js.map +1 -1
  239. package/dist-server/service/login-history/login-history-type.d.ts +1 -1
  240. package/dist-server/service/login-history/login-history-type.js +2 -2
  241. package/dist-server/service/login-history/login-history-type.js.map +1 -1
  242. package/dist-server/service/login-history/login-history.d.ts +1 -1
  243. package/dist-server/service/login-history/login-history.js +4 -4
  244. package/dist-server/service/login-history/login-history.js.map +1 -1
  245. package/dist-server/service/partner/index.d.ts +3 -3
  246. package/dist-server/service/partner/index.js +5 -5
  247. package/dist-server/service/partner/index.js.map +1 -1
  248. package/dist-server/service/partner/partner-mutation.js +8 -8
  249. package/dist-server/service/partner/partner-mutation.js.map +1 -1
  250. package/dist-server/service/partner/partner-query.d.ts +3 -3
  251. package/dist-server/service/partner/partner-query.js +17 -17
  252. package/dist-server/service/partner/partner-query.js.map +1 -1
  253. package/dist-server/service/partner/partner-types.d.ts +1 -1
  254. package/dist-server/service/partner/partner-types.js +2 -2
  255. package/dist-server/service/partner/partner-types.js.map +1 -1
  256. package/dist-server/service/partner/partner.d.ts +1 -1
  257. package/dist-server/service/partner/partner.js +5 -5
  258. package/dist-server/service/partner/partner.js.map +1 -1
  259. package/dist-server/service/password-history/index.d.ts +1 -1
  260. package/dist-server/service/password-history/index.js +2 -2
  261. package/dist-server/service/password-history/index.js.map +1 -1
  262. package/dist-server/service/privilege/index.d.ts +3 -3
  263. package/dist-server/service/privilege/index.js +5 -5
  264. package/dist-server/service/privilege/index.js.map +1 -1
  265. package/dist-server/service/privilege/privilege-directive.js +2 -2
  266. package/dist-server/service/privilege/privilege-directive.js.map +1 -1
  267. package/dist-server/service/privilege/privilege-mutation.d.ts +2 -2
  268. package/dist-server/service/privilege/privilege-mutation.js +15 -15
  269. package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
  270. package/dist-server/service/privilege/privilege-query.d.ts +4 -4
  271. package/dist-server/service/privilege/privilege-query.js +20 -20
  272. package/dist-server/service/privilege/privilege-query.js.map +1 -1
  273. package/dist-server/service/privilege/privilege-types.d.ts +1 -1
  274. package/dist-server/service/privilege/privilege-types.js +2 -2
  275. package/dist-server/service/privilege/privilege-types.js.map +1 -1
  276. package/dist-server/service/privilege/privilege.d.ts +2 -2
  277. package/dist-server/service/privilege/privilege.js +10 -10
  278. package/dist-server/service/privilege/privilege.js.map +1 -1
  279. package/dist-server/service/role/index.d.ts +3 -3
  280. package/dist-server/service/role/index.js +5 -5
  281. package/dist-server/service/role/index.js.map +1 -1
  282. package/dist-server/service/role/role-mutation.d.ts +2 -2
  283. package/dist-server/service/role/role-mutation.js +19 -19
  284. package/dist-server/service/role/role-mutation.js.map +1 -1
  285. package/dist-server/service/role/role-query.d.ts +9 -5
  286. package/dist-server/service/role/role-query.js +38 -31
  287. package/dist-server/service/role/role-query.js.map +1 -1
  288. package/dist-server/service/role/role-types.d.ts +1 -1
  289. package/dist-server/service/role/role-types.js +2 -2
  290. package/dist-server/service/role/role-types.js.map +1 -1
  291. package/dist-server/service/role/role.d.ts +2 -2
  292. package/dist-server/service/role/role.js +12 -12
  293. package/dist-server/service/role/role.js.map +1 -1
  294. package/dist-server/service/user/domain-query.d.ts +1 -1
  295. package/dist-server/service/user/domain-query.js +3 -3
  296. package/dist-server/service/user/domain-query.js.map +1 -1
  297. package/dist-server/service/user/index.d.ts +4 -4
  298. package/dist-server/service/user/index.js +6 -6
  299. package/dist-server/service/user/index.js.map +1 -1
  300. package/dist-server/service/user/user-mutation.d.ts +3 -3
  301. package/dist-server/service/user/user-mutation.js +42 -42
  302. package/dist-server/service/user/user-mutation.js.map +1 -1
  303. package/dist-server/service/user/user-query.d.ts +4 -3
  304. package/dist-server/service/user/user-query.js +31 -21
  305. package/dist-server/service/user/user-query.js.map +1 -1
  306. package/dist-server/service/user/user-types.d.ts +1 -1
  307. package/dist-server/service/user/user-types.js +2 -2
  308. package/dist-server/service/user/user-types.js.map +1 -1
  309. package/dist-server/service/user/user.d.ts +3 -3
  310. package/dist-server/service/user/user.js +40 -40
  311. package/dist-server/service/user/user.js.map +1 -1
  312. package/dist-server/service/users-auth-providers/index.d.ts +1 -1
  313. package/dist-server/service/users-auth-providers/index.js +2 -2
  314. package/dist-server/service/users-auth-providers/index.js.map +1 -1
  315. package/dist-server/service/users-auth-providers/users-auth-providers.d.ts +2 -2
  316. package/dist-server/service/users-auth-providers/users-auth-providers.js +8 -8
  317. package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
  318. package/dist-server/service/verification-token/index.d.ts +1 -1
  319. package/dist-server/service/verification-token/index.js +2 -2
  320. package/dist-server/service/verification-token/index.js.map +1 -1
  321. package/dist-server/service/web-auth-credential/index.d.ts +1 -1
  322. package/dist-server/service/web-auth-credential/index.js +2 -2
  323. package/dist-server/service/web-auth-credential/index.js.map +1 -1
  324. package/dist-server/service/web-auth-credential/web-auth-credential.d.ts +1 -1
  325. package/dist-server/service/web-auth-credential/web-auth-credential.js +10 -10
  326. package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -1
  327. package/dist-server/tsconfig.tsbuildinfo +1 -1
  328. package/dist-server/types.d.ts +1 -1
  329. package/dist-server/types.js.map +1 -1
  330. package/dist-server/utils/access-token-cookie.js +2 -11
  331. package/dist-server/utils/access-token-cookie.js.map +1 -1
  332. package/dist-server/utils/check-permission.d.ts +2 -2
  333. package/dist-server/utils/check-permission.js +3 -3
  334. package/dist-server/utils/check-permission.js.map +1 -1
  335. package/dist-server/utils/check-user-belongs-domain.d.ts +1 -1
  336. package/dist-server/utils/check-user-belongs-domain.js +2 -2
  337. package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
  338. package/dist-server/utils/get-domain-users.d.ts +1 -1
  339. package/dist-server/utils/get-domain-users.js +2 -2
  340. package/dist-server/utils/get-domain-users.js.map +1 -1
  341. package/dist-server/utils/get-user-domains.d.ts +2 -3
  342. package/dist-server/utils/get-user-domains.js +30 -26
  343. package/dist-server/utils/get-user-domains.js.map +1 -1
  344. package/helps/config/recaptcha.ja.md +49 -0
  345. package/helps/config/recaptcha.ko.md +49 -0
  346. package/helps/config/recaptcha.md +49 -0
  347. package/helps/config/recaptcha.ms.md +49 -0
  348. package/helps/config/recaptcha.zh.md +49 -0
  349. package/package.json +7 -6
  350. package/dist-server/utils/get-domain-from-hostname.d.ts +0 -1
  351. package/dist-server/utils/get-domain-from-hostname.js +0 -9
  352. package/dist-server/utils/get-domain-from-hostname.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { TFunction } from 'i18next';
2
2
  import { EntityManager } from 'typeorm';
3
3
  import { Domain } from '@things-factory/shell';
4
- import { User } from './service/user/user';
4
+ import { User } from './service/user/user.js';
5
5
  declare global {
6
6
  export type ResolverContext = {
7
7
  state: IContextState;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../server/types.ts"],"names":[],"mappings":"","sourcesContent":["import { TFunction } from 'i18next'\nimport { EntityManager } from 'typeorm'\n\nimport { Domain } from '@things-factory/shell'\n\nimport { User } from './service/user/user'\n\ndeclare global {\n export type ResolverContext = {\n state: IContextState\n t?: TFunction\n [key: string]: any\n }\n\n interface IContextState {\n domain: Domain\n user: User\n tx?: EntityManager\n [key: string]: any\n }\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../server/types.ts"],"names":[],"mappings":"","sourcesContent":["import { TFunction } from 'i18next'\nimport { EntityManager } from 'typeorm'\n\nimport { Domain } from '@things-factory/shell'\n\nimport { User } from './service/user/user.js'\n\ndeclare global {\n export type ResolverContext = {\n state: IContextState\n t?: TFunction\n [key: string]: any\n }\n\n interface IContextState {\n domain: Domain\n user: User\n tx?: EntityManager\n [key: string]: any\n }\n}\n"]}
@@ -4,9 +4,8 @@ exports.getAccessTokenCookie = getAccessTokenCookie;
4
4
  exports.setAccessTokenCookie = setAccessTokenCookie;
5
5
  exports.setSessionAccessToken = setSessionAccessToken;
6
6
  exports.clearAccessTokenCookie = clearAccessTokenCookie;
7
- const shell_1 = require("@things-factory/shell");
8
7
  const env_1 = require("@things-factory/env");
9
- const max_age_1 = require("../constants/max-age");
8
+ const max_age_js_1 = require("../constants/max-age.js");
10
9
  const accessTokenCookieKey = env_1.config.get('accessTokenCookieKey', 'access_token');
11
10
  function getAccessTokenCookie(context) {
12
11
  var _a;
@@ -17,13 +16,9 @@ function setAccessTokenCookie(context, token) {
17
16
  var cookie = {
18
17
  secure,
19
18
  httpOnly: true,
20
- maxAge: max_age_1.MAX_AGE,
19
+ maxAge: max_age_js_1.MAX_AGE,
21
20
  sameSite: 'Lax'
22
21
  };
23
- const cookieDomain = (0, shell_1.getCookieDomainFromHostname)(context.hostname);
24
- if (cookieDomain) {
25
- cookie['domain'] = cookieDomain;
26
- }
27
22
  context.cookies.set(accessTokenCookieKey, token, cookie);
28
23
  }
29
24
  function setSessionAccessToken(context) {
@@ -42,10 +37,6 @@ function clearAccessTokenCookie(context) {
42
37
  httpOnly: true,
43
38
  sameSite: 'Lax'
44
39
  };
45
- const cookieDomain = (0, shell_1.getCookieDomainFromHostname)(context.hostname);
46
- if (cookieDomain) {
47
- cookie['domain'] = cookieDomain;
48
- }
49
40
  context.cookies.set(accessTokenCookieKey, '', cookie);
50
41
  /*
51
42
  * TODO clear i18next cookie as well - need to support domain
@@ -1 +1 @@
1
- {"version":3,"file":"access-token-cookie.js","sourceRoot":"","sources":["../../server/utils/access-token-cookie.ts"],"names":[],"mappings":";;AAMA,oDAEC;AAED,oDAgBC;AAED,sDASC;AAED,wDAqBC;AA5DD,iDAAmE;AACnE,6CAA4C;AAC5C,kDAA8C;AAE9C,MAAM,oBAAoB,GAAG,YAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAA;AAE/E,SAAgB,oBAAoB,CAAC,OAAO;;IAC1C,OAAO,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACpD,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1B,IAAI,MAAM,GAAG;QACX,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,iBAAO;QACf,QAAQ,EAAE,KAAK;KAChB,CAAA;IAED,MAAM,YAAY,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAO;IAC3C,0FAA0F;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE9B,OAAO,CAAC,OAAO,GAAG;QAChB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,MAAM,EAAE,IAAI,CAAC,KAAK;KACnB,CAAA;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAO;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1B,IAAI,MAAM,GAAG;QACX,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;KAChB,CAAA;IAED,MAAM,YAAY,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACrD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IAC1C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;AACxB,CAAC","sourcesContent":["import { getCookieDomainFromHostname } from '@things-factory/shell'\nimport { config } from '@things-factory/env'\nimport { MAX_AGE } from '../constants/max-age'\n\nconst accessTokenCookieKey = config.get('accessTokenCookieKey', 'access_token')\n\nexport function getAccessTokenCookie(context) {\n return context?.cookies?.get(accessTokenCookieKey)\n}\n\nexport function setAccessTokenCookie(context, token) {\n const { secure } = context\n\n var cookie = {\n secure,\n httpOnly: true,\n maxAge: MAX_AGE,\n sameSite: 'Lax'\n }\n\n const cookieDomain = getCookieDomainFromHostname(context.hostname)\n if (cookieDomain) {\n cookie['domain'] = cookieDomain\n }\n\n context.cookies.set(accessTokenCookieKey, token, cookie)\n}\n\nexport function setSessionAccessToken(context) {\n /* koa-session 을 사용하는 경우에는, cookie 직접 설정이 작동되지 않는다. 그런 경우에는 session에 설정해서 cookie를 변경한다. */\n const { user } = context.state\n\n context.session = {\n id: user.id,\n userType: user.type,\n status: user.state\n }\n}\n\nexport function clearAccessTokenCookie(context) {\n const { secure } = context\n\n var cookie = {\n secure,\n httpOnly: true,\n sameSite: 'Lax'\n }\n\n const cookieDomain = getCookieDomainFromHostname(context.hostname)\n if (cookieDomain) {\n cookie['domain'] = cookieDomain\n }\n\n context.cookies.set(accessTokenCookieKey, '', cookie)\n /*\n * TODO clear i18next cookie as well - need to support domain\n * https://github.com/hatiolab/things-factory/issues/70\n */\n context.cookies.set('i18next', '', cookie)\n context.session = null\n}\n"]}
1
+ {"version":3,"file":"access-token-cookie.js","sourceRoot":"","sources":["../../server/utils/access-token-cookie.ts"],"names":[],"mappings":";;AAKA,oDAEC;AAED,oDAWC;AAED,sDASC;AAED,wDAgBC;AAjDD,6CAA4C;AAC5C,wDAAiD;AAEjD,MAAM,oBAAoB,GAAG,YAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAA;AAE/E,SAAgB,oBAAoB,CAAC,OAAO;;IAC1C,OAAO,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACpD,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1B,IAAI,MAAM,GAAG;QACX,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,oBAAO;QACf,QAAQ,EAAE,KAAK;KAChB,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAO;IAC3C,0FAA0F;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE9B,OAAO,CAAC,OAAO,GAAG;QAChB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,MAAM,EAAE,IAAI,CAAC,KAAK;KACnB,CAAA;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAO;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1B,IAAI,MAAM,GAAG;QACX,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;KAChB,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACrD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IAC1C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;AACxB,CAAC","sourcesContent":["import { config } from '@things-factory/env'\nimport { MAX_AGE } from '../constants/max-age.js'\n\nconst accessTokenCookieKey = config.get('accessTokenCookieKey', 'access_token')\n\nexport function getAccessTokenCookie(context) {\n return context?.cookies?.get(accessTokenCookieKey)\n}\n\nexport function setAccessTokenCookie(context, token) {\n const { secure } = context\n\n var cookie = {\n secure,\n httpOnly: true,\n maxAge: MAX_AGE,\n sameSite: 'Lax'\n }\n\n context.cookies.set(accessTokenCookieKey, token, cookie)\n}\n\nexport function setSessionAccessToken(context) {\n /* koa-session 을 사용하는 경우에는, cookie 직접 설정이 작동되지 않는다. 그런 경우에는 session에 설정해서 cookie를 변경한다. */\n const { user } = context.state\n\n context.session = {\n id: user.id,\n userType: user.type,\n status: user.state\n }\n}\n\nexport function clearAccessTokenCookie(context) {\n const { secure } = context\n\n var cookie = {\n secure,\n httpOnly: true,\n sameSite: 'Lax'\n }\n\n context.cookies.set(accessTokenCookieKey, '', cookie)\n /*\n * TODO clear i18next cookie as well - need to support domain\n * https://github.com/hatiolab/things-factory/issues/70\n */\n context.cookies.set('i18next', '', cookie)\n context.session = null\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Domain } from '@things-factory/shell';
2
- import { PrivilegeObject } from '../service/privilege/privilege';
3
- import { User } from '../service/user/user';
2
+ import { PrivilegeObject } from '../service/privilege/privilege.js';
3
+ import { User } from '../service/user/user.js';
4
4
  export declare function checkPermission(privilegeObject: PrivilegeObject, user: User, domain: Domain, unsafeIP?: boolean, prohibitedPrivileges?: {
5
5
  category: string;
6
6
  privilege: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkPermission = checkPermission;
4
- const user_1 = require("../service/user/user");
4
+ const user_js_1 = require("../service/user/user.js");
5
5
  async function checkPermission(privilegeObject, user, domain, unsafeIP, prohibitedPrivileges) {
6
6
  if (!privilegeObject) {
7
7
  return true;
@@ -13,7 +13,7 @@ async function checkPermission(privilegeObject, user, domain, unsafeIP, prohibit
13
13
  if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {
14
14
  return false;
15
15
  }
16
- return await user_1.User.hasPrivilege(privilege, category, domain, user);
16
+ return await user_js_1.User.hasPrivilege(privilege, category, domain, user);
17
17
  }
18
18
  // privilege, category가 설정되지 않은 경우에는 ownership granted가 설정되었다면 허가하지 않는다.
19
19
  return !domainOwnerGranted && !superUserGranted;
@@ -31,7 +31,7 @@ async function checkPermission(privilegeObject, user, domain, unsafeIP, prohibit
31
31
  if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {
32
32
  return false;
33
33
  }
34
- return await user_1.User.hasPrivilege(privilege, category, domain, user);
34
+ return await user_js_1.User.hasPrivilege(privilege, category, domain, user);
35
35
  }
36
36
  }
37
37
  //# sourceMappingURL=check-permission.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-permission.js","sourceRoot":"","sources":["../../server/utils/check-permission.ts"],"names":[],"mappings":";;AAIA,0CA+CC;AAjDD,+CAA2C;AAEpC,KAAK,UAAU,eAAe,CACnC,eAAgC,EAChC,IAAU,EACV,MAAc,EACd,QAAkB,EAClB,oBAAgE;IAEhE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,eAAe,CAAA;IAEnG,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;gBAClG,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,MAAM,WAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACnE,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,8DAA8D;YAC9D,OAAO,CACL,CAAC,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxE,CAAC,gBAAgB,IAAI,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CACrE,CAAA;QACH,CAAC;QAED,IACE,CAAC,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACxE,CAAC,gBAAgB,IAAI,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACpE,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;YAClG,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,MAAM,WAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACnE,CAAC;AACH,CAAC","sourcesContent":["import { Domain } from '@things-factory/shell'\nimport { PrivilegeObject } from '../service/privilege/privilege'\nimport { User } from '../service/user/user'\n\nexport async function checkPermission(\n privilegeObject: PrivilegeObject,\n user: User,\n domain: Domain,\n unsafeIP?: boolean,\n prohibitedPrivileges?: { category: string; privilege: string }[]\n): Promise<boolean> {\n if (!privilegeObject) {\n return true\n }\n\n const { owner: domainOwnerGranted, super: superUserGranted, category, privilege } = privilegeObject\n\n if (unsafeIP) {\n if (privilege && category) {\n // unsafeIP 상황에서는 ownership granted는 적용되지 않는다.\n if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {\n return false\n }\n\n return await User.hasPrivilege(privilege, category, domain, user)\n }\n\n // privilege, category가 설정되지 않은 경우에는 ownership granted가 설정되었다면 허가하지 않는다.\n return !domainOwnerGranted && !superUserGranted\n } else {\n if (!privilege || !category) {\n // privilege, category가 설정되지 않은 경우에는 ownership granted만을 적용한다.\n return (\n (domainOwnerGranted && (await process.domainOwnerGranted(domain, user))) ||\n (superUserGranted && (await process.superUserGranted(domain, user)))\n )\n }\n\n if (\n (domainOwnerGranted && (await process.domainOwnerGranted(domain, user))) ||\n (superUserGranted && (await process.superUserGranted(domain, user)))\n ) {\n return true\n }\n\n if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {\n return false\n }\n\n return await User.hasPrivilege(privilege, category, domain, user)\n }\n}\n"]}
1
+ {"version":3,"file":"check-permission.js","sourceRoot":"","sources":["../../server/utils/check-permission.ts"],"names":[],"mappings":";;AAIA,0CA+CC;AAjDD,qDAA8C;AAEvC,KAAK,UAAU,eAAe,CACnC,eAAgC,EAChC,IAAU,EACV,MAAc,EACd,QAAkB,EAClB,oBAAgE;IAEhE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,eAAe,CAAA;IAEnG,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;gBAClG,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,MAAM,cAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACnE,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,8DAA8D;YAC9D,OAAO,CACL,CAAC,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxE,CAAC,gBAAgB,IAAI,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CACrE,CAAA;QACH,CAAC;QAED,IACE,CAAC,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACxE,CAAC,gBAAgB,IAAI,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACpE,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;YAClG,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,MAAM,cAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACnE,CAAC;AACH,CAAC","sourcesContent":["import { Domain } from '@things-factory/shell'\nimport { PrivilegeObject } from '../service/privilege/privilege.js'\nimport { User } from '../service/user/user.js'\n\nexport async function checkPermission(\n privilegeObject: PrivilegeObject,\n user: User,\n domain: Domain,\n unsafeIP?: boolean,\n prohibitedPrivileges?: { category: string; privilege: string }[]\n): Promise<boolean> {\n if (!privilegeObject) {\n return true\n }\n\n const { owner: domainOwnerGranted, super: superUserGranted, category, privilege } = privilegeObject\n\n if (unsafeIP) {\n if (privilege && category) {\n // unsafeIP 상황에서는 ownership granted는 적용되지 않는다.\n if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {\n return false\n }\n\n return await User.hasPrivilege(privilege, category, domain, user)\n }\n\n // privilege, category가 설정되지 않은 경우에는 ownership granted가 설정되었다면 허가하지 않는다.\n return !domainOwnerGranted && !superUserGranted\n } else {\n if (!privilege || !category) {\n // privilege, category가 설정되지 않은 경우에는 ownership granted만을 적용한다.\n return (\n (domainOwnerGranted && (await process.domainOwnerGranted(domain, user))) ||\n (superUserGranted && (await process.superUserGranted(domain, user)))\n )\n }\n\n if (\n (domainOwnerGranted && (await process.domainOwnerGranted(domain, user))) ||\n (superUserGranted && (await process.superUserGranted(domain, user)))\n ) {\n return true\n }\n\n if ((prohibitedPrivileges || []).find(pp => pp.category == category && pp.privilege == privilege)) {\n return false\n }\n\n return await User.hasPrivilege(privilege, category, domain, user)\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Domain } from '@things-factory/shell';
2
- import { User } from '../service/user/user';
2
+ import { User } from '../service/user/user.js';
3
3
  /**
4
4
  * @description Based on domain and user information,
5
5
  * Find out whether the user belongs domain or user has partnership with domain
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkUserBelongsDomain = checkUserBelongsDomain;
4
4
  const shell_1 = require("@things-factory/shell");
5
- const user_1 = require("../service/user/user");
5
+ const user_js_1 = require("../service/user/user.js");
6
6
  /**
7
7
  * @description Based on domain and user information,
8
8
  * Find out whether the user belongs domain or user has partnership with domain
@@ -13,7 +13,7 @@ const user_1 = require("../service/user/user");
13
13
  async function checkUserBelongsDomain(domain, user) {
14
14
  var _a;
15
15
  if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.length)) {
16
- user = await (0, shell_1.getRepository)(user_1.User).findOne({ where: { id: user.id }, relations: ['domains'] });
16
+ user = await (0, shell_1.getRepository)(user_js_1.User).findOne({ where: { id: user.id }, relations: ['domains'] });
17
17
  }
18
18
  const { domains: userDomains } = user;
19
19
  return Boolean(userDomains.find((userDomain) => userDomain.id === domain.id));
@@ -1 +1 @@
1
- {"version":3,"file":"check-user-belongs-domain.js","sourceRoot":"","sources":["../../server/utils/check-user-belongs-domain.ts"],"names":[],"mappings":";;AAWA,wDAOC;AAlBD,iDAA6D;AAE7D,+CAA2C;AAE3C;;;;;;GAMG;AACI,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,IAAU;;IACrE,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAE,CAAC;QAC1B,IAAI,GAAG,MAAM,IAAA,qBAAa,EAAC,WAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC9F,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAS,IAAI,CAAA;IAC3C,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AACvF,CAAC","sourcesContent":["import { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user'\n\n/**\n * @description Based on domain and user information,\n * Find out whether the user belongs domain or user has partnership with domain\n *\n * @param domain\n * @param user\n */\nexport async function checkUserBelongsDomain(domain: Domain, user: User): Promise<Boolean> {\n if (!user.domains?.length) {\n user = await getRepository(User).findOne({ where: { id: user.id }, relations: ['domains'] })\n }\n\n const { domains: userDomains }: User = user\n return Boolean(userDomains.find((userDomain: Domain) => userDomain.id === domain.id))\n}\n"]}
1
+ {"version":3,"file":"check-user-belongs-domain.js","sourceRoot":"","sources":["../../server/utils/check-user-belongs-domain.ts"],"names":[],"mappings":";;AAWA,wDAOC;AAlBD,iDAA6D;AAE7D,qDAA8C;AAE9C;;;;;;GAMG;AACI,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,IAAU;;IACrE,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAE,CAAC;QAC1B,IAAI,GAAG,MAAM,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC9F,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAS,IAAI,CAAA;IAC3C,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AACvF,CAAC","sourcesContent":["import { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user.js'\n\n/**\n * @description Based on domain and user information,\n * Find out whether the user belongs domain or user has partnership with domain\n *\n * @param domain\n * @param user\n */\nexport async function checkUserBelongsDomain(domain: Domain, user: User): Promise<Boolean> {\n if (!user.domains?.length) {\n user = await getRepository(User).findOne({ where: { id: user.id }, relations: ['domains'] })\n }\n\n const { domains: userDomains }: User = user\n return Boolean(userDomains.find((userDomain: Domain) => userDomain.id === domain.id))\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { EntityManager, SelectQueryBuilder } from 'typeorm';
2
2
  import { Domain } from '@things-factory/shell';
3
- import { User } from '../service/user/user';
3
+ import { User } from '../service/user/user.js';
4
4
  export declare function getDomainUsers(domain: Partial<Domain>, trxMgr?: EntityManager): Promise<User[]>;
5
5
  export declare function buildDomainUsersQueryBuilder(domainId: string, alias?: string, trxMgr?: EntityManager): SelectQueryBuilder<User>;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDomainUsers = getDomainUsers;
4
4
  exports.buildDomainUsersQueryBuilder = buildDomainUsersQueryBuilder;
5
5
  const shell_1 = require("@things-factory/shell");
6
- const user_1 = require("../service/user/user");
6
+ const user_js_1 = require("../service/user/user.js");
7
7
  async function getDomainUsers(domain, trxMgr) {
8
8
  const domainRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(shell_1.Domain)) || (0, shell_1.getRepository)(shell_1.Domain);
9
9
  if (!domain.id) {
@@ -16,7 +16,7 @@ async function getDomainUsers(domain, trxMgr) {
16
16
  return await qb.getMany();
17
17
  }
18
18
  function buildDomainUsersQueryBuilder(domainId, alias = 'USER', trxMgr) {
19
- const userRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(user_1.User)) || (0, shell_1.getRepository)(user_1.User);
19
+ const userRepo = (trxMgr === null || trxMgr === void 0 ? void 0 : trxMgr.getRepository(user_js_1.User)) || (0, shell_1.getRepository)(user_js_1.User);
20
20
  const qb = userRepo.createQueryBuilder(alias);
21
21
  qb.select().andWhere(`${alias}.id IN ${qb
22
22
  .subQuery()
@@ -1 +1 @@
1
- {"version":3,"file":"get-domain-users.js","sourceRoot":"","sources":["../../server/utils/get-domain-users.ts"],"names":[],"mappings":";;AAMA,wCAYC;AAED,oEAiBC;AAnCD,iDAA6D;AAE7D,+CAA2C;AAEpC,KAAK,UAAU,cAAc,CAAC,MAAuB,EAAE,MAAsB;IAClF,MAAM,UAAU,GAAuB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,cAAM,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;IAE7F,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,WAAW,GAAW,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAClF,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAA;QAEzF,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC;IAED,MAAM,EAAE,GAA6B,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5E,OAAO,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;AAC3B,CAAC;AAED,SAAgB,4BAA4B,CAC1C,QAAgB,EAChB,QAAgB,MAAM,EACtB,MAAsB;IAEtB,MAAM,QAAQ,GAAqB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,WAAI,CAAC,KAAI,IAAA,qBAAa,EAAC,WAAI,CAAC,CAAA;IACrF,MAAM,EAAE,GAA6B,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACvE,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAClB,GAAG,KAAK,UAAU,EAAE;SACjB,QAAQ,EAAE;SACV,MAAM,CAAC,wBAAwB,CAAC;SAChC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;SACtC,KAAK,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,CAAC;SAC3D,QAAQ,EAAE,EAAE,CAChB,CAAA;IAED,OAAO,EAAE,CAAA;AACX,CAAC","sourcesContent":["import { EntityManager, Repository, SelectQueryBuilder } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user'\n\nexport async function getDomainUsers(domain: Partial<Domain>, trxMgr?: EntityManager): Promise<User[]> {\n const domainRepo: Repository<Domain> = trxMgr?.getRepository(Domain) || getRepository(Domain)\n\n if (!domain.id) {\n const foundDomain: Domain = await domainRepo.findOne({ where: { id: domain.id } })\n if (!foundDomain) throw new Error(`Failed to find domain by passed condition, ${domain}`)\n\n domain = foundDomain\n }\n\n const qb: SelectQueryBuilder<User> = buildDomainUsersQueryBuilder(domain.id)\n return await qb.getMany()\n}\n\nexport function buildDomainUsersQueryBuilder(\n domainId: string,\n alias: string = 'USER',\n trxMgr?: EntityManager\n): SelectQueryBuilder<User> {\n const userRepo: Repository<User> = trxMgr?.getRepository(User) || getRepository(User)\n const qb: SelectQueryBuilder<User> = userRepo.createQueryBuilder(alias)\n qb.select().andWhere(\n `${alias}.id IN ${qb\n .subQuery()\n .select('USERS_DOMAINS.users_id')\n .from('users_domains', 'USERS_DOMAINS')\n .where('USERS_DOMAINS.domains_id = :domainId', { domainId })\n .getQuery()}`\n )\n\n return qb\n}\n"]}
1
+ {"version":3,"file":"get-domain-users.js","sourceRoot":"","sources":["../../server/utils/get-domain-users.ts"],"names":[],"mappings":";;AAMA,wCAYC;AAED,oEAiBC;AAnCD,iDAA6D;AAE7D,qDAA8C;AAEvC,KAAK,UAAU,cAAc,CAAC,MAAuB,EAAE,MAAsB;IAClF,MAAM,UAAU,GAAuB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,cAAM,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;IAE7F,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,WAAW,GAAW,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAClF,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAA;QAEzF,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC;IAED,MAAM,EAAE,GAA6B,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5E,OAAO,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;AAC3B,CAAC;AAED,SAAgB,4BAA4B,CAC1C,QAAgB,EAChB,QAAgB,MAAM,EACtB,MAAsB;IAEtB,MAAM,QAAQ,GAAqB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,cAAI,CAAC,KAAI,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IACrF,MAAM,EAAE,GAA6B,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACvE,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAClB,GAAG,KAAK,UAAU,EAAE;SACjB,QAAQ,EAAE;SACV,MAAM,CAAC,wBAAwB,CAAC;SAChC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;SACtC,KAAK,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,CAAC;SAC3D,QAAQ,EAAE,EAAE,CAChB,CAAA;IAED,OAAO,EAAE,CAAA;AACX,CAAC","sourcesContent":["import { EntityManager, Repository, SelectQueryBuilder } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user.js'\n\nexport async function getDomainUsers(domain: Partial<Domain>, trxMgr?: EntityManager): Promise<User[]> {\n const domainRepo: Repository<Domain> = trxMgr?.getRepository(Domain) || getRepository(Domain)\n\n if (!domain.id) {\n const foundDomain: Domain = await domainRepo.findOne({ where: { id: domain.id } })\n if (!foundDomain) throw new Error(`Failed to find domain by passed condition, ${domain}`)\n\n domain = foundDomain\n }\n\n const qb: SelectQueryBuilder<User> = buildDomainUsersQueryBuilder(domain.id)\n return await qb.getMany()\n}\n\nexport function buildDomainUsersQueryBuilder(\n domainId: string,\n alias: string = 'USER',\n trxMgr?: EntityManager\n): SelectQueryBuilder<User> {\n const userRepo: Repository<User> = trxMgr?.getRepository(User) || getRepository(User)\n const qb: SelectQueryBuilder<User> = userRepo.createQueryBuilder(alias)\n qb.select().andWhere(\n `${alias}.id IN ${qb\n .subQuery()\n .select('USERS_DOMAINS.users_id')\n .from('users_domains', 'USERS_DOMAINS')\n .where('USERS_DOMAINS.domains_id = :domainId', { domainId })\n .getQuery()}`\n )\n\n return qb\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import { Domain } from '@things-factory/shell';
2
- import { User } from '../service/user/user';
3
- export declare function getUserDomains(user: User): Promise<Partial<Domain>[]>;
4
- export declare function getRoleBasedDomains(user: User): Promise<Partial<Domain>[]>;
2
+ import { User } from '../service/user/user.js';
3
+ export declare function getUserDomains(user: User, extType?: string): Promise<Partial<Domain>[]>;
5
4
  export declare function getDomainsWithPrivilege(user: User, privilege: string, category: string): Promise<Partial<Domain>[]>;
6
5
  export declare function getDomainsAsOwner(user: User): Promise<Partial<Domain>[]>;
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUserDomains = getUserDomains;
4
- exports.getRoleBasedDomains = getRoleBasedDomains;
5
4
  exports.getDomainsWithPrivilege = getDomainsWithPrivilege;
6
5
  exports.getDomainsAsOwner = getDomainsAsOwner;
7
6
  const shell_1 = require("@things-factory/shell");
8
- const user_1 = require("../service/user/user");
9
- async function getUserDomains(user) {
7
+ const user_js_1 = require("../service/user/user.js");
8
+ async function getUserDomains(user, extType) {
10
9
  return (await (0, shell_1.getRepository)(shell_1.Domain)
11
10
  .createQueryBuilder('DOMAIN')
12
11
  .where(qb => {
@@ -14,7 +13,7 @@ async function getUserDomains(user) {
14
13
  .subQuery()
15
14
  .distinct(true)
16
15
  .select('DOMAIN.id')
17
- .from(user_1.User, 'USER')
16
+ .from(user_js_1.User, 'USER')
18
17
  .leftJoin('USER.roles', 'ROLE')
19
18
  .leftJoin('ROLE.domain', 'DOMAIN')
20
19
  .where('USER.id = :userId', { userId: user.id })
@@ -31,31 +30,36 @@ async function getUserDomains(user) {
31
30
  return 'DOMAIN.id IN ' + subQuery;
32
31
  })
33
32
  .orderBy('DOMAIN.name', 'ASC')
34
- .getMany()).map(domain => {
35
- const { id, name, description, subdomain, extType, brandName, brandImage } = domain;
36
- return { id, name, description, subdomain, extType, brandName, brandImage };
37
- });
38
- }
39
- async function getRoleBasedDomains(user) {
40
- return (await (0, shell_1.getRepository)(shell_1.Domain)
41
- .createQueryBuilder('DOMAIN')
42
- .where(qb => {
43
- const subQuery = qb
44
- .subQuery()
45
- .distinct(true)
46
- .select('DOMAIN.id')
47
- .from(user_1.User, 'USER')
48
- .leftJoin('USER.roles', 'ROLE')
49
- .leftJoin('ROLE.domain', 'DOMAIN')
50
- .where('USER.id = :userId', { userId: user.id })
51
- .getQuery();
52
- return 'DOMAIN.id IN ' + subQuery;
53
- })
54
- .getMany()).map(domain => {
33
+ .getMany())
34
+ .filter(domain => !extType || domain.extType == extType)
35
+ .map(domain => {
55
36
  const { id, name, description, subdomain, extType, brandName, brandImage } = domain;
37
+ /* do not remove id column for result */
56
38
  return { id, name, description, subdomain, extType, brandName, brandImage };
57
39
  });
58
40
  }
41
+ // export async function getRoleBasedDomains(user: User): Promise<Partial<Domain>[]> {
42
+ // return (
43
+ // await getRepository(Domain)
44
+ // .createQueryBuilder('DOMAIN')
45
+ // .where(qb => {
46
+ // const subQuery = qb
47
+ // .subQuery()
48
+ // .distinct(true)
49
+ // .select('DOMAIN.id')
50
+ // .from(User, 'USER')
51
+ // .leftJoin('USER.roles', 'ROLE')
52
+ // .leftJoin('ROLE.domain', 'DOMAIN')
53
+ // .where('USER.id = :userId', { userId: user.id })
54
+ // .getQuery()
55
+ // return 'DOMAIN.id IN ' + subQuery
56
+ // })
57
+ // .getMany()
58
+ // ).map(domain => {
59
+ // const { id, name, description, subdomain, extType, brandName, brandImage } = domain
60
+ // return { id, name, description, subdomain, extType, brandName, brandImage }
61
+ // })
62
+ // }
59
63
  async function getDomainsWithPrivilege(user, privilege, category) {
60
64
  return (await (0, shell_1.getRepository)(shell_1.Domain)
61
65
  .createQueryBuilder('DOMAIN')
@@ -64,7 +68,7 @@ async function getDomainsWithPrivilege(user, privilege, category) {
64
68
  .subQuery()
65
69
  .distinct(true)
66
70
  .select('DOMAIN.id')
67
- .from(user_1.User, 'USER')
71
+ .from(user_js_1.User, 'USER')
68
72
  .leftJoin('USER.roles', 'ROLE')
69
73
  .leftJoin('ROLE.domain', 'DOMAIN')
70
74
  .leftJoin('ROLE.privileges', 'PRIVILEGE')
@@ -1 +1 @@
1
- {"version":3,"file":"get-user-domains.js","sourceRoot":"","sources":["../../server/utils/get-user-domains.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user'\n\nexport async function getUserDomains(user: User): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :owner', { owner: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n\nexport async function getRoleBasedDomains(user: User): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .getMany()\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n\nexport async function getDomainsWithPrivilege(\n user: User,\n privilege: string,\n category: string\n): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .leftJoin('ROLE.privileges', 'PRIVILEGE')\n .where('USER.id = :userId', { userId: user.id })\n .andWhere('PRIVILEGE.name = :privilege', { privilege })\n .andWhere('PRIVILEGE.category = :category', { category })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :owner', { owner: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n\nexport async function getDomainsAsOwner(user: User): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain).find({\n where: { owner: user.id }\n })\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n"]}
1
+ {"version":3,"file":"get-user-domains.js","sourceRoot":"","sources":["../../server/utils/get-user-domains.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user.js'\n\nexport async function getUserDomains(user: User, extType?: string): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .where('USER.id = :userId', { userId: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :owner', { owner: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n )\n .filter(domain => !extType || domain.extType == extType)\n .map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n /* do not remove id column for result */\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n\n// export async function getRoleBasedDomains(user: User): Promise<Partial<Domain>[]> {\n// return (\n// await getRepository(Domain)\n// .createQueryBuilder('DOMAIN')\n// .where(qb => {\n// const subQuery = qb\n// .subQuery()\n// .distinct(true)\n// .select('DOMAIN.id')\n// .from(User, 'USER')\n// .leftJoin('USER.roles', 'ROLE')\n// .leftJoin('ROLE.domain', 'DOMAIN')\n// .where('USER.id = :userId', { userId: user.id })\n// .getQuery()\n// return 'DOMAIN.id IN ' + subQuery\n// })\n// .getMany()\n// ).map(domain => {\n// const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n// return { id, name, description, subdomain, extType, brandName, brandImage }\n// })\n// }\n\nexport async function getDomainsWithPrivilege(\n user: User,\n privilege: string,\n category: string\n): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain)\n .createQueryBuilder('DOMAIN')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .distinct(true)\n .select('DOMAIN.id')\n .from(User, 'USER')\n .leftJoin('USER.roles', 'ROLE')\n .leftJoin('ROLE.domain', 'DOMAIN')\n .leftJoin('ROLE.privileges', 'PRIVILEGE')\n .where('USER.id = :userId', { userId: user.id })\n .andWhere('PRIVILEGE.name = :privilege', { privilege })\n .andWhere('PRIVILEGE.category = :category', { category })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orWhere(qb => {\n const subQuery = qb\n .subQuery()\n .select('DOMAIN.id')\n .from(Domain, 'DOMAIN')\n .where('DOMAIN.owner = :owner', { owner: user.id })\n .getQuery()\n return 'DOMAIN.id IN ' + subQuery\n })\n .orderBy('DOMAIN.name', 'ASC')\n .getMany()\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n\nexport async function getDomainsAsOwner(user: User): Promise<Partial<Domain>[]> {\n return (\n await getRepository(Domain).find({\n where: { owner: user.id }\n })\n ).map(domain => {\n const { id, name, description, subdomain, extType, brandName, brandImage } = domain\n return { id, name, description, subdomain, extType, brandName, brandImage }\n })\n}\n"]}
@@ -0,0 +1,49 @@
1
+ # reCAPTCHA
2
+
3
+ reCAPTCHAは、ユーザーが人間かボットかを確認するために使用されます。
4
+
5
+ Google Cloud Consoleでサービスアカウントを作成できます。
6
+ サービスアカウントを作成するには、「IAM & Admin」セクションに移動し、
7
+ 「Service Accounts」を選択して「Create Service Account」をクリックします。
8
+ 必要な資格情報を生成するための指示に従ってください。
9
+
10
+ ## サービスアカウント情報
11
+
12
+ - **type**: サービスアカウントのタイプ
13
+ - **project_id**: プロジェクトID
14
+ - **private_key_id**: プライベートキーID
15
+ - **private_key**: プライベートキー
16
+ - **client_email**: クライアントメール
17
+ - **client_id**: クライアントID
18
+ - **auth_uri**: 認証URI
19
+ - **token_uri**: トークンURI
20
+ - **auth_provider_x509_cert_url**: 認証プロバイダーx509証明書URL
21
+ - **client_x509_cert_url**: クライアントx509証明書URL
22
+ - **universe_domain**: ユニバースドメイン
23
+
24
+ ## サイトキー
25
+
26
+ - **siteKey**: reCAPTCHAサイトキー
27
+
28
+ ## 設定例
29
+
30
+ ```javascript
31
+ module.exports = {
32
+ recaptcha: {
33
+ serviceAccount: {
34
+ type: 'service_account',
35
+ project_id: '--',
36
+ private_key_id: '-----',
37
+ private_key: '-----BEGIN PRIVATE KEY-----\nXXXX==\n-----END PRIVATE KEY-----\n',
38
+ client_email: 'abc@xyz.com',
39
+ client_id: '----',
40
+ auth_uri: 'https://accounts.google.com/o/oauth2/auth',
41
+ token_uri: 'https://oauth2.googleapis.com/token',
42
+ auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs',
43
+ client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/abc%40xyz.com',
44
+ universe_domain: 'googleapis.com'
45
+ },
46
+ siteKey: '6Ld1Dr4qAAAAAMJBYZheIOw8wQopz5NwraHAbCzt'
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,49 @@
1
+ # reCAPTCHA 설정 도움말
2
+
3
+ reCAPTCHA는 사용자가 사람인지 봇인지 확인하는 데 사용됩니다.
4
+
5
+ 서비스 계정은 Google Cloud Console에서 생성할 수 있습니다.
6
+ 서비스 계정을 생성하려면 "IAM 및 관리자" 섹션으로 이동하여
7
+ "서비스 계정"을 선택한 다음 "서비스 계정 만들기"를 클릭합니다.
8
+ 필요한 자격 증명을 생성하는 지침을 따르세요.
9
+
10
+ ## 서비스 계정 정보
11
+
12
+ - **type**: 서비스 계정 유형
13
+ - **project_id**: 프로젝트 ID
14
+ - **private_key_id**: 개인 키 ID
15
+ - **private_key**: 개인 키
16
+ - **client_email**: 클라이언트 이메일
17
+ - **client_id**: 클라이언트 ID
18
+ - **auth_uri**: 인증 URI
19
+ - **token_uri**: 토큰 URI
20
+ - **auth_provider_x509_cert_url**: 인증 제공자 x509 인증서 URL
21
+ - **client_x509_cert_url**: 클라이언트 x509 인증서 URL
22
+ - **universe_domain**: 유니버스 도메인
23
+
24
+ ## 사이트 키
25
+
26
+ - **siteKey**: reCAPTCHA 사이트 키
27
+
28
+ ## 설정 예시
29
+
30
+ ```javascript
31
+ module.exports = {
32
+ recaptcha: {
33
+ serviceAccount: {
34
+ type: 'service_account',
35
+ project_id: '--',
36
+ private_key_id: '-----',
37
+ private_key: '-----BEGIN PRIVATE KEY-----\nXXXX==\n-----END PRIVATE KEY-----\n',
38
+ client_email: 'abc@xyz.com',
39
+ client_id: '----',
40
+ auth_uri: 'https://accounts.google.com/o/oauth2/auth',
41
+ token_uri: 'https://oauth2.googleapis.com/token',
42
+ auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs',
43
+ client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/abc%40xyz.com',
44
+ universe_domain: 'googleapis.com'
45
+ },
46
+ siteKey: '6Ld1Dr4qAAAAAMJBYZheIOw8wQopz5NwraHAbCzt'
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,49 @@
1
+ # reCAPTCHA
2
+
3
+ reCAPTCHA is used to verify whether a user is human or a bot.
4
+
5
+ A service account can be created in the Google Cloud Console.
6
+ To create a service account, navigate to the "IAM & Admin" section,
7
+ select "Service Accounts," and then click "Create Service Account."
8
+ Follow the instructions to generate the necessary credentials.
9
+
10
+ ## Service Account Information
11
+
12
+ - **type**: Service account type
13
+ - **project_id**: Project ID
14
+ - **private_key_id**: Private key ID
15
+ - **private_key**: Private key
16
+ - **client_email**: Client email
17
+ - **client_id**: Client ID
18
+ - **auth_uri**: Auth URI
19
+ - **token_uri**: Token URI
20
+ - **auth_provider_x509_cert_url**: Auth provider x509 cert URL
21
+ - **client_x509_cert_url**: Client x509 cert URL
22
+ - **universe_domain**: Universe domain
23
+
24
+ ## Site Key
25
+
26
+ - **siteKey**: reCAPTCHA site key
27
+
28
+ ## Configuration Example
29
+
30
+ ```javascript
31
+ module.exports = {
32
+ recaptcha: {
33
+ serviceAccount: {
34
+ type: 'service_account',
35
+ project_id: '--',
36
+ private_key_id: '-----',
37
+ private_key: '-----BEGIN PRIVATE KEY-----\nXXXX==\n-----END PRIVATE KEY-----\n',
38
+ client_email: 'abc@xyz.com',
39
+ client_id: '----',
40
+ auth_uri: 'https://accounts.google.com/o/oauth2/auth',
41
+ token_uri: 'https://oauth2.googleapis.com/token',
42
+ auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs',
43
+ client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/abc%40xyz.com',
44
+ universe_domain: 'googleapis.com'
45
+ },
46
+ siteKey: '6Ld1Dr4qAAAAAMJBYZheIOw8wQopz5NwraHAbCzt'
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,49 @@
1
+ # reCAPTCHA
2
+
3
+ reCAPTCHA digunakan untuk mengesahkan sama ada pengguna adalah manusia atau bot.
4
+
5
+ Akaun perkhidmatan boleh dibuat di Google Cloud Console.
6
+ Untuk membuat akaun perkhidmatan, navigasi ke bahagian "IAM & Admin",
7
+ pilih "Service Accounts," dan kemudian klik "Create Service Account."
8
+ Ikuti arahan untuk menjana kelayakan yang diperlukan.
9
+
10
+ ## Maklumat Akaun Perkhidmatan
11
+
12
+ - **type**: Jenis akaun perkhidmatan
13
+ - **project_id**: ID Projek
14
+ - **private_key_id**: ID kunci peribadi
15
+ - **private_key**: Kunci peribadi
16
+ - **client_email**: E-mel pelanggan
17
+ - **client_id**: ID pelanggan
18
+ - **auth_uri**: URI pengesahan
19
+ - **token_uri**: URI token
20
+ - **auth_provider_x509_cert_url**: URL sijil x509 penyedia pengesahan
21
+ - **client_x509_cert_url**: URL sijil x509 pelanggan
22
+ - **universe_domain**: Domain alam semesta
23
+
24
+ ## Kunci Laman
25
+
26
+ - **siteKey**: Kunci laman reCAPTCHA
27
+
28
+ ## Contoh Konfigurasi
29
+
30
+ ```javascript
31
+ module.exports = {
32
+ recaptcha: {
33
+ serviceAccount: {
34
+ type: 'service_account',
35
+ project_id: '--',
36
+ private_key_id: '-----',
37
+ private_key: '-----BEGIN PRIVATE KEY-----\nXXXX==\n-----END PRIVATE KEY-----\n',
38
+ client_email: 'abc@xyz.com',
39
+ client_id: '----',
40
+ auth_uri: 'https://accounts.google.com/o/oauth2/auth',
41
+ token_uri: 'https://oauth2.googleapis.com/token',
42
+ auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs',
43
+ client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/abc%40xyz.com',
44
+ universe_domain: 'googleapis.com'
45
+ },
46
+ siteKey: '6Ld1Dr4qAAAAAMJBYZheIOw8wQopz5NwraHAbCzt'
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,49 @@
1
+ # reCAPTCHA
2
+
3
+ reCAPTCHA 用于验证用户是人类还是机器人。
4
+
5
+ 可以在 Google Cloud Console 中创建服务帐户。
6
+ 要创建服务帐户,请导航到“IAM 和管理”部分,
7
+ 选择“服务帐户”,然后点击“创建服务帐户”。
8
+ 按照说明生成必要的凭据。
9
+
10
+ ## 服务帐户信息
11
+
12
+ - **type**: 服务帐户类型
13
+ - **project_id**: 项目 ID
14
+ - **private_key_id**: 私钥 ID
15
+ - **private_key**: 私钥
16
+ - **client_email**: 客户端电子邮件
17
+ - **client_id**: 客户端 ID
18
+ - **auth_uri**: 认证 URI
19
+ - **token_uri**: 令牌 URI
20
+ - **auth_provider_x509_cert_url**: 认证提供者 x509 证书 URL
21
+ - **client_x509_cert_url**: 客户端 x509 证书 URL
22
+ - **universe_domain**: 宇宙域
23
+
24
+ ## 网站密钥
25
+
26
+ - **siteKey**: reCAPTCHA 网站密钥
27
+
28
+ ## 配置示例
29
+
30
+ ```javascript
31
+ module.exports = {
32
+ recaptcha: {
33
+ serviceAccount: {
34
+ type: 'service_account',
35
+ project_id: '--',
36
+ private_key_id: '-----',
37
+ private_key: '-----BEGIN PRIVATE KEY-----\nXXXX==\n-----END PRIVATE KEY-----\n',
38
+ client_email: 'abc@xyz.com',
39
+ client_id: '----',
40
+ auth_uri: 'https://accounts.google.com/o/oauth2/auth',
41
+ token_uri: 'https://oauth2.googleapis.com/token',
42
+ auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs',
43
+ client_x509_cert_url: 'https://www.googleapis.com/robot/v1/metadata/x509/abc%40xyz.com',
44
+ universe_domain: 'googleapis.com'
45
+ },
46
+ siteKey: '6Ld1Dr4qAAAAAMJBYZheIOw8wQopz5NwraHAbCzt'
47
+ }
48
+ }
49
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/auth-base",
3
- "version": "9.0.0-beta.5",
3
+ "version": "9.0.0-beta.52",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -30,12 +30,13 @@
30
30
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
31
31
  },
32
32
  "dependencies": {
33
+ "@google-cloud/recaptcha-enterprise": "^5.13.0",
33
34
  "@simplewebauthn/browser": "^13.0.0",
34
35
  "@simplewebauthn/server": "^13.0.0",
35
- "@things-factory/email-base": "^9.0.0-beta.5",
36
- "@things-factory/env": "^9.0.0-beta.5",
37
- "@things-factory/shell": "^9.0.0-beta.5",
38
- "@things-factory/utils": "^9.0.0-beta.0",
36
+ "@things-factory/email-base": "^9.0.0-beta.52",
37
+ "@things-factory/env": "^9.0.0-beta.52",
38
+ "@things-factory/shell": "^9.0.0-beta.52",
39
+ "@things-factory/utils": "^9.0.0-beta.38",
39
40
  "@types/webappsec-credential-management": "^0.6.9",
40
41
  "jsonwebtoken": "^9.0.0",
41
42
  "koa-passport": "^6.0.0",
@@ -46,5 +47,5 @@
46
47
  "passport-jwt": "^4.0.0",
47
48
  "passport-local": "^1.0.0"
48
49
  },
49
- "gitHead": "f075f1bd00a9b902a677d44f1844bcbd9c85ea97"
50
+ "gitHead": "887b3f87ba9072dd8c76bad6f491443419728d38"
50
51
  }
@@ -1 +0,0 @@
1
- export declare function getDomainFromHostname(hostname: any): any;