@things-factory/auth-base 9.0.0-beta.4 → 9.0.0-beta.43

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 (355) 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 +21 -21
  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 +1 -1
  144. package/dist-server/service/appliance/appliance.js +8 -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 +4 -4
  286. package/dist-server/service/role/role-query.js +29 -29
  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 +3 -3
  304. package/dist-server/service/user/user-query.js +21 -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/check-user-has-role.d.ts +1 -1
  339. package/dist-server/utils/check-user-has-role.js +2 -2
  340. package/dist-server/utils/check-user-has-role.js.map +1 -1
  341. package/dist-server/utils/get-domain-users.d.ts +1 -1
  342. package/dist-server/utils/get-domain-users.js +2 -2
  343. package/dist-server/utils/get-domain-users.js.map +1 -1
  344. package/dist-server/utils/get-user-domains.d.ts +2 -3
  345. package/dist-server/utils/get-user-domains.js +30 -26
  346. package/dist-server/utils/get-user-domains.js.map +1 -1
  347. package/helps/config/recaptcha.ja.md +49 -0
  348. package/helps/config/recaptcha.ko.md +49 -0
  349. package/helps/config/recaptcha.md +49 -0
  350. package/helps/config/recaptcha.ms.md +49 -0
  351. package/helps/config/recaptcha.zh.md +49 -0
  352. package/package.json +7 -6
  353. package/dist-server/utils/get-domain-from-hostname.d.ts +0 -1
  354. package/dist-server/utils/get-domain-from-hostname.js +0 -9
  355. package/dist-server/utils/get-domain-from-hostname.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./change-pwd"), exports);
5
- tslib_1.__exportStar(require("./signin"), exports);
6
- tslib_1.__exportStar(require("./signup"), exports);
7
- tslib_1.__exportStar(require("./verification"), exports);
8
- tslib_1.__exportStar(require("./invitation"), exports);
4
+ tslib_1.__exportStar(require("./change-pwd.js"), exports);
5
+ tslib_1.__exportStar(require("./signin.js"), exports);
6
+ tslib_1.__exportStar(require("./signup.js"), exports);
7
+ tslib_1.__exportStar(require("./verification.js"), exports);
8
+ tslib_1.__exportStar(require("./invitation.js"), exports);
9
9
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,mDAAwB;AACxB,mDAAwB;AACxB,yDAA8B;AAC9B,uDAA4B","sourcesContent":["export * from './change-pwd'\nexport * from './signin'\nexport * from './signup'\nexport * from './verification'\nexport * from './invitation'\n"]}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../server/controllers/auth.ts"],"names":[],"mappings":";;;AAAA,0DAA+B;AAC/B,sDAA2B;AAC3B,sDAA2B;AAC3B,4DAAiC;AACjC,0DAA+B","sourcesContent":["export * from './change-pwd.js'\nexport * from './signin.js'\nexport * from './signup.js'\nexport * from './verification.js'\nexport * from './invitation.js'\n"]}
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.changePwd = changePwd;
4
4
  const env_1 = require("@things-factory/env");
5
5
  const shell_1 = require("@things-factory/shell");
6
- const error_code_1 = require("../constants/error-code");
7
- const auth_error_1 = require("../errors/auth-error");
8
- const password_history_1 = require("../service/password-history/password-history");
9
- const user_1 = require("../service/user/user");
6
+ const error_code_js_1 = require("../constants/error-code.js");
7
+ const auth_error_js_1 = require("../errors/auth-error.js");
8
+ const password_history_js_1 = require("../service/password-history/password-history.js");
9
+ const user_js_1 = require("../service/user/user.js");
10
10
  const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
11
11
  async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
12
12
  const { domain } = context.state;
13
13
  // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
14
- const repository = (0, shell_1.getRepository)(user_1.User);
14
+ const repository = (0, shell_1.getRepository)(user_js_1.User);
15
15
  const user = await repository.findOne({ where: { id: attrs.id } });
16
16
  if (!user) {
17
- throw new auth_error_1.AuthError({
18
- errorCode: error_code_1.USER_NOT_FOUND
17
+ throw new auth_error_js_1.AuthError({
18
+ errorCode: error_code_js_1.USER_NOT_FOUND
19
19
  });
20
20
  }
21
21
  if (newPass !== confirmPass) {
22
- throw new auth_error_1.AuthError({
23
- errorCode: error_code_1.CONFIRM_PASSWORD_NOT_MATCHED
22
+ throw new auth_error_js_1.AuthError({
23
+ errorCode: error_code_js_1.CONFIRM_PASSWORD_NOT_MATCHED
24
24
  });
25
25
  }
26
- if (!user_1.User.verify(user.password, currentPass, user.salt)) {
27
- throw new auth_error_1.AuthError({
28
- errorCode: error_code_1.PASSWORD_NOT_MATCHED,
26
+ if (!user_js_1.User.verify(user.password, currentPass, user.salt)) {
27
+ throw new auth_error_js_1.AuthError({
28
+ errorCode: error_code_js_1.PASSWORD_NOT_MATCHED,
29
29
  detail: {
30
30
  username: user.username,
31
31
  email: user.email,
@@ -34,10 +34,10 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
34
34
  });
35
35
  }
36
36
  /* check if password is following the rule */
37
- user_1.User.validatePasswordByRule(newPass, context === null || context === void 0 ? void 0 : context.lng);
38
- user.password = user_1.User.encode(newPass, user.salt);
37
+ user_js_1.User.validatePasswordByRule(newPass, context === null || context === void 0 ? void 0 : context.lng);
38
+ user.password = user_js_1.User.encode(newPass, user.salt);
39
39
  if (HISTORY_SIZE > 0) {
40
- var passwordHistory = await (0, shell_1.getRepository)(password_history_1.PasswordHistory).findOneBy({ userId: user.id });
40
+ var passwordHistory = await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).findOneBy({ userId: user.id });
41
41
  var history = [];
42
42
  if (passwordHistory) {
43
43
  try {
@@ -51,11 +51,11 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
51
51
  console.error('password history currupted - not json format');
52
52
  }
53
53
  const found = history.slice(0, HISTORY_SIZE).find(h => {
54
- return user_1.User.verify(h.password, newPass, h.salt);
54
+ return user_js_1.User.verify(h.password, newPass, h.salt);
55
55
  });
56
56
  if (found) {
57
- throw new auth_error_1.AuthError({
58
- errorCode: error_code_1.PASSWORD_USED_PAST
57
+ throw new auth_error_js_1.AuthError({
58
+ errorCode: error_code_js_1.PASSWORD_USED_PAST
59
59
  });
60
60
  }
61
61
  }
@@ -69,7 +69,7 @@ async function changePwd(attrs, currentPass, newPass, confirmPass, context) {
69
69
  },
70
70
  ...history
71
71
  ].slice(0, HISTORY_SIZE);
72
- await (0, shell_1.getRepository)(password_history_1.PasswordHistory).save({
72
+ await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).save({
73
73
  userId: user.id,
74
74
  history: JSON.stringify(history)
75
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":"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","sourcesContent":["import { config } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport {\n CONFIRM_PASSWORD_NOT_MATCHED,\n PASSWORD_NOT_MATCHED,\n PASSWORD_USED_PAST,\n USER_NOT_FOUND\n} from '../constants/error-code'\nimport { AuthError } from '../errors/auth-error'\nimport { PasswordHistory } from '../service/password-history/password-history'\nimport { User } from '../service/user/user'\n\nconst HISTORY_SIZE = config.get('password', { history: 0 }).history\n\nexport async function changePwd(attrs, currentPass, newPass, confirmPass, context) {\n const { domain } = context.state\n\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n const repository = getRepository(User)\n\n const user: User = await repository.findOne({ where: { id: attrs.id } })\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n if (newPass !== confirmPass) {\n throw new AuthError({\n errorCode: CONFIRM_PASSWORD_NOT_MATCHED\n })\n }\n\n if (!User.verify(user.password, currentPass, user.salt)) {\n throw new AuthError({\n errorCode: PASSWORD_NOT_MATCHED,\n detail: {\n username: user.username,\n email: user.email,\n failCount: user.failCount\n }\n })\n }\n\n /* check if password is following the rule */\n User.validatePasswordByRule(newPass, context?.lng)\n\n user.password = User.encode(newPass, user.salt)\n\n if (HISTORY_SIZE > 0) {\n var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOneBy({ userId: user.id })\n var history = []\n\n if (passwordHistory) {\n try {\n history = JSON.parse(passwordHistory.history)\n if (!(history instanceof Array)) {\n console.error('password history maybe currupted - not an array')\n history = []\n }\n } catch (e) {\n console.error('password history currupted - not json format')\n }\n\n const found = history.slice(0, HISTORY_SIZE).find(h => {\n return User.verify(h.password, newPass, h.salt)\n })\n\n if (found) {\n throw new AuthError({\n errorCode: PASSWORD_USED_PAST\n })\n }\n }\n }\n\n await repository.save({\n ...user,\n passwordUpdatedAt: new Date()\n })\n\n if (HISTORY_SIZE > 0) {\n history = [\n {\n password: user.password,\n salt: user.salt\n },\n ...history\n ].slice(0, HISTORY_SIZE)\n\n await getRepository(PasswordHistory).save({\n userId: user.id,\n history: JSON.stringify(history)\n })\n }\n\n return await user.sign({ subdomain: domain.subdomain })\n}\n"]}
1
+ {"version":3,"file":"change-pwd.js","sourceRoot":"","sources":["../../server/controllers/change-pwd.ts"],"names":[],"mappings":"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","sourcesContent":["import { config } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport {\n CONFIRM_PASSWORD_NOT_MATCHED,\n PASSWORD_NOT_MATCHED,\n PASSWORD_USED_PAST,\n USER_NOT_FOUND\n} from '../constants/error-code.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { PasswordHistory } from '../service/password-history/password-history.js'\nimport { User } from '../service/user/user.js'\n\nconst HISTORY_SIZE = config.get('password', { history: 0 }).history\n\nexport async function changePwd(attrs, currentPass, newPass, confirmPass, context) {\n const { domain } = context.state\n\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n const repository = getRepository(User)\n\n const user: User = await repository.findOne({ where: { id: attrs.id } })\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n if (newPass !== confirmPass) {\n throw new AuthError({\n errorCode: CONFIRM_PASSWORD_NOT_MATCHED\n })\n }\n\n if (!User.verify(user.password, currentPass, user.salt)) {\n throw new AuthError({\n errorCode: PASSWORD_NOT_MATCHED,\n detail: {\n username: user.username,\n email: user.email,\n failCount: user.failCount\n }\n })\n }\n\n /* check if password is following the rule */\n User.validatePasswordByRule(newPass, context?.lng)\n\n user.password = User.encode(newPass, user.salt)\n\n if (HISTORY_SIZE > 0) {\n var passwordHistory: PasswordHistory = await getRepository(PasswordHistory).findOneBy({ userId: user.id })\n var history = []\n\n if (passwordHistory) {\n try {\n history = JSON.parse(passwordHistory.history)\n if (!(history instanceof Array)) {\n console.error('password history maybe currupted - not an array')\n history = []\n }\n } catch (e) {\n console.error('password history currupted - not json format')\n }\n\n const found = history.slice(0, HISTORY_SIZE).find(h => {\n return User.verify(h.password, newPass, h.salt)\n })\n\n if (found) {\n throw new AuthError({\n errorCode: PASSWORD_USED_PAST\n })\n }\n }\n }\n\n await repository.save({\n ...user,\n passwordUpdatedAt: new Date()\n })\n\n if (HISTORY_SIZE > 0) {\n history = [\n {\n password: user.password,\n salt: user.salt\n },\n ...history\n ].slice(0, HISTORY_SIZE)\n\n await getRepository(PasswordHistory).save({\n userId: user.id,\n history: JSON.stringify(history)\n })\n }\n\n return await user.sign({ subdomain: domain.subdomain })\n}\n"]}
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkin = checkin;
4
4
  const shell_1 = require("@things-factory/shell");
5
- const user_1 = require("../service/user/user");
6
- const get_user_domains_1 = require("../utils/get-user-domains");
5
+ const user_js_1 = require("../service/user/user.js");
6
+ const get_user_domains_js_1 = require("../utils/get-user-domains.js");
7
7
  async function checkin({ userId, subdomain }) {
8
- const userRepo = (0, shell_1.getRepository)(user_1.User);
8
+ const userRepo = (0, shell_1.getRepository)(user_js_1.User);
9
9
  const user = await userRepo.findOne({ where: { id: userId } });
10
- const domains = await (0, get_user_domains_1.getUserDomains)(user);
10
+ const domains = await (0, get_user_domains_js_1.getUserDomains)(user);
11
11
  if (!(domains === null || domains === void 0 ? void 0 : domains.length)) {
12
12
  return false;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;AAKA,0BAeC;AApBD,iDAA6D;AAE7D,+CAA2C;AAC3C,gEAA0D;AAEnD,KAAK,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,qBAAa,EAAC,WAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAsB,MAAM,IAAA,iCAAc,EAAC,IAAI,CAAC,CAAA;IAE7D,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACvC,CAAC","sourcesContent":["import { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user'\nimport { getUserDomains } from '../utils/get-user-domains'\n\nexport async function checkin({ userId, subdomain }) {\n const userRepo = getRepository(User)\n const user = await userRepo.findOne({ where: { id: userId } })\n const domains: Partial<Domain>[] = await getUserDomains(user)\n\n if (!domains?.length) {\n return false\n }\n\n const domain = domains.find(domain => domain.subdomain == subdomain)\n if (!domain) {\n return false\n }\n\n return await user.sign({ subdomain })\n}\n"]}
1
+ {"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../server/controllers/checkin.ts"],"names":[],"mappings":";;AAKA,0BAeC;AApBD,iDAA6D;AAE7D,qDAA8C;AAC9C,sEAA6D;AAEtD,KAAK,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAsB,MAAM,IAAA,oCAAc,EAAC,IAAI,CAAC,CAAA;IAE7D,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AACvC,CAAC","sourcesContent":["import { Domain, getRepository } from '@things-factory/shell'\n\nimport { User } from '../service/user/user.js'\nimport { getUserDomains } from '../utils/get-user-domains.js'\n\nexport async function checkin({ userId, subdomain }) {\n const userRepo = getRepository(User)\n const user = await userRepo.findOne({ where: { id: userId } })\n const domains: Partial<Domain>[] = await getUserDomains(user)\n\n if (!domains?.length) {\n return false\n }\n\n const domain = domains.find(domain => domain.subdomain == subdomain)\n if (!domain) {\n return false\n }\n\n return await user.sign({ subdomain })\n}\n"]}
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deleteUser = deleteUser;
4
4
  exports.deleteUsers = deleteUsers;
5
5
  const typeorm_1 = require("typeorm");
6
- const user_1 = require("../service/user/user");
7
- const auth_error_1 = require("../errors/auth-error");
8
- const error_code_1 = require("../constants/error-code");
6
+ const user_js_1 = require("../service/user/user.js");
7
+ const auth_error_js_1 = require("../errors/auth-error.js");
8
+ const error_code_js_1 = require("../constants/error-code.js");
9
9
  async function deleteUser(attrs, tx) {
10
10
  // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
11
11
  // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
12
- const repository = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_1.User);
12
+ const repository = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_js_1.User);
13
13
  const { username } = attrs;
14
14
  var user = await repository.findOne({
15
15
  where: { username },
@@ -22,11 +22,11 @@ async function deleteUser(attrs, tx) {
22
22
  });
23
23
  }
24
24
  if (!user) {
25
- throw new auth_error_1.AuthError({
26
- errorCode: error_code_1.USER_NOT_FOUND
25
+ throw new auth_error_js_1.AuthError({
26
+ errorCode: error_code_js_1.USER_NOT_FOUND
27
27
  });
28
28
  }
29
- user.status = user_1.UserStatus.DELETED;
29
+ user.status = user_js_1.UserStatus.DELETED;
30
30
  user.domains = [];
31
31
  await repository.save(user);
32
32
  }
@@ -34,7 +34,7 @@ async function deleteUsers(attrs, tx) {
34
34
  // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.
35
35
  // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.
36
36
  const { usernames } = attrs;
37
- const repo = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_1.User);
37
+ const repo = tx === null || tx === void 0 ? void 0 : tx.getRepository(user_js_1.User);
38
38
  const users = await repo.find({
39
39
  where: {
40
40
  username: (0, typeorm_1.In)(usernames)
@@ -42,7 +42,7 @@ async function deleteUsers(attrs, tx) {
42
42
  });
43
43
  const userIds = [];
44
44
  users.forEach(user => {
45
- user.status = user_1.UserStatus.DELETED;
45
+ user.status = user_js_1.UserStatus.DELETED;
46
46
  user.domains = [];
47
47
  userIds.push(user.id);
48
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;AAKA,gCA6BC;AAED,kCAkCC;AAtED,qCAAkD;AAClD,+CAAuD;AACvD,qDAAgD;AAChD,wDAAwD;AAEjD,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,EAAkB;IACxD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,UAAU,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAE1B,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,SAAS,EAAE,CAAC,SAAS,CAAC;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,QAAQ,CAAC,EAAE;YACjC,SAAS,EAAE,CAAC,SAAS,CAAC;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;IAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAEjB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,EAAkB;IACzD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAE3B,MAAM,IAAI,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAI,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE;YACL,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC;SACxB;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtB,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,2BAA2B;IAC3B,OAAO;IACP,eAAe;IACf,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { EntityManager, ILike, In } from 'typeorm'\nimport { User, UserStatus } from '../service/user/user'\nimport { AuthError } from '../errors/auth-error'\nimport { USER_NOT_FOUND } from '../constants/error-code'\n\nexport async function deleteUser(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const repository = tx?.getRepository(User)\n const { username } = attrs\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n user.status = UserStatus.DELETED\n user.domains = []\n\n await repository.save(user)\n}\n\nexport async function deleteUsers(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const { usernames } = attrs\n\n const repo = tx?.getRepository(User)\n\n const users = await repo.find({\n where: {\n username: In(usernames)\n }\n })\n\n const userIds = []\n users.forEach(user => {\n user.status = UserStatus.DELETED\n user.domains = []\n\n userIds.push(user.id)\n })\n\n await repo.save(users)\n\n // repository api는 작동하지 않음.\n // await txManager\n // .createQueryBuilder()\n // .delete()\n // .from('users_domains')\n // .where({\n // usersId: In(userIds)\n // })\n // .execute()\n return true\n}\n"]}
1
+ {"version":3,"file":"delete-user.js","sourceRoot":"","sources":["../../server/controllers/delete-user.ts"],"names":[],"mappings":";;AAKA,gCA6BC;AAED,kCAkCC;AAtED,qCAAkD;AAClD,qDAA0D;AAC1D,2DAAmD;AACnD,8DAA2D;AAEpD,KAAK,UAAU,UAAU,CAAC,KAAK,EAAE,EAAkB;IACxD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,UAAU,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,cAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAE1B,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,SAAS,EAAE,CAAC,SAAS,CAAC;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,QAAQ,CAAC,EAAE;YACjC,SAAS,EAAE,CAAC,SAAS,CAAC;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,yBAAS,CAAC;YAClB,SAAS,EAAE,8BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,GAAG,oBAAU,CAAC,OAAO,CAAA;IAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAEjB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,EAAkB;IACzD,qCAAqC;IACrC,iEAAiE;IAEjE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAE3B,MAAM,IAAI,GAAG,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,cAAI,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE;YACL,QAAQ,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC;SACxB;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,oBAAU,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtB,2BAA2B;IAC3B,kBAAkB;IAClB,0BAA0B;IAC1B,cAAc;IACd,2BAA2B;IAC3B,aAAa;IACb,2BAA2B;IAC3B,OAAO;IACP,eAAe;IACf,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { EntityManager, ILike, In } from 'typeorm'\nimport { User, UserStatus } from '../service/user/user.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { USER_NOT_FOUND } from '../constants/error-code.js'\n\nexport async function deleteUser(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const repository = tx?.getRepository(User)\n const { username } = attrs\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n user.status = UserStatus.DELETED\n user.domains = []\n\n await repository.save(user)\n}\n\nexport async function deleteUsers(attrs, tx?: EntityManager) {\n // TODO 이 사용자가 이 도메인에 속한 사용자인지 확인해야함.\n // TODO 다른 도메인에도 포함되어있다면, domains-users 관게와 해당 도메인 관련 정보만 삭제해야 함.\n\n const { usernames } = attrs\n\n const repo = tx?.getRepository(User)\n\n const users = await repo.find({\n where: {\n username: In(usernames)\n }\n })\n\n const userIds = []\n users.forEach(user => {\n user.status = UserStatus.DELETED\n user.domains = []\n\n userIds.push(user.id)\n })\n\n await repo.save(users)\n\n // repository api는 작동하지 않음.\n // await txManager\n // .createQueryBuilder()\n // .delete()\n // .from('users_domains')\n // .where({\n // usersId: In(userIds)\n // })\n // .execute()\n return true\n}\n"]}
@@ -8,14 +8,14 @@ const typeorm_1 = require("typeorm");
8
8
  const url_1 = require("url");
9
9
  const email_base_1 = require("@things-factory/email-base");
10
10
  const shell_1 = require("@things-factory/shell");
11
- const invitation_1 = require("../service/invitation/invitation");
12
- const user_1 = require("../service/user/user");
13
- const invitation_email_1 = require("../templates/invitation-email");
14
- const make_invitation_token_1 = require("./utils/make-invitation-token");
15
- const save_invitation_token_1 = require("./utils/save-invitation-token");
11
+ const invitation_js_1 = require("../service/invitation/invitation.js");
12
+ const user_js_1 = require("../service/user/user.js");
13
+ const invitation_email_js_1 = require("../templates/invitation-email.js");
14
+ const make_invitation_token_js_1 = require("./utils/make-invitation-token.js");
15
+ const save_invitation_token_js_1 = require("./utils/save-invitation-token.js");
16
16
  async function invite(attrs, withEmailInvitation) {
17
17
  const { username, reference, type, context } = attrs;
18
- const repository = (0, shell_1.getRepository)(user_1.User);
18
+ const repository = (0, shell_1.getRepository)(user_js_1.User);
19
19
  var user = await repository.findOne({
20
20
  where: { username },
21
21
  relations: ['domains']
@@ -38,13 +38,13 @@ async function invite(attrs, withEmailInvitation) {
38
38
  if (withEmailInvitation) {
39
39
  const email = user.email;
40
40
  // TODO 초대장의 유효기간을 설정할 수 있어야 함.
41
- var invitation = await (0, shell_1.getRepository)(invitation_1.Invitation).findOneBy({
41
+ var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
42
42
  email: (0, typeorm_1.ILike)(email),
43
43
  reference,
44
44
  type
45
45
  });
46
46
  if (!invitation) {
47
- invitation = await (0, shell_1.getRepository)(invitation_1.Invitation).save({
47
+ invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).save({
48
48
  email,
49
49
  reference,
50
50
  type
@@ -58,21 +58,21 @@ async function invite(attrs, withEmailInvitation) {
58
58
  }
59
59
  if (user) {
60
60
  user.domains = [...domains, await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: reference })];
61
- await (0, shell_1.getRepository)(user_1.User).save(user);
61
+ await (0, shell_1.getRepository)(user_js_1.User).save(user);
62
62
  }
63
63
  else {
64
64
  // TODO need to signup
65
65
  }
66
66
  }
67
67
  async function acceptInvitation(token) {
68
- var invitation = await (0, shell_1.getRepository)(invitation_1.Invitation).findOneBy({
68
+ var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
69
69
  token
70
70
  });
71
71
  if (!invitation) {
72
72
  throw new Error(`not found invitation.`);
73
73
  }
74
74
  var { email, reference, type } = invitation;
75
- var user = await (0, shell_1.getRepository)(user_1.User).findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['domains'] });
75
+ var user = await (0, shell_1.getRepository)(user_js_1.User).findOne({ where: { email: (0, typeorm_1.ILike)(email) }, relations: ['domains'] });
76
76
  if (user) {
77
77
  var domains = user.domains;
78
78
  const domain = domains.find(domain => domain.id == reference);
@@ -81,8 +81,8 @@ async function acceptInvitation(token) {
81
81
  throw new Error(msg);
82
82
  }
83
83
  user.domains = [...domains, await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: reference })];
84
- await (0, shell_1.getRepository)(user_1.User).save(user);
85
- await (0, shell_1.getRepository)(invitation_1.Invitation).delete(invitation.id);
84
+ await (0, shell_1.getRepository)(user_js_1.User).save(user);
85
+ await (0, shell_1.getRepository)(invitation_js_1.Invitation).delete(invitation.id);
86
86
  }
87
87
  else {
88
88
  // TODO goto signup
@@ -91,14 +91,14 @@ async function acceptInvitation(token) {
91
91
  }
92
92
  async function sendInvitationEmail({ invitation, user, context }) {
93
93
  try {
94
- var token = (0, make_invitation_token_1.makeInvitationToken)();
95
- var verifaction = await (0, save_invitation_token_1.saveInvitationToken)(invitation.id, token);
94
+ var token = (0, make_invitation_token_js_1.makeInvitationToken)();
95
+ var verifaction = await (0, save_invitation_token_js_1.saveInvitationToken)(invitation.id, token);
96
96
  if (verifaction) {
97
97
  var serviceUrl = new url_1.URL(`/auth/accept/${token}`, context.header.referer);
98
98
  await (0, email_base_1.sendEmail)({
99
99
  receiver: invitation.email,
100
100
  subject: 'Invitation',
101
- content: (0, invitation_email_1.getInvitationEmailForm)({
101
+ content: (0, invitation_email_js_1.getInvitationEmailForm)({
102
102
  username: user.username,
103
103
  email: invitation.email,
104
104
  acceptUrl: serviceUrl
@@ -112,7 +112,7 @@ async function sendInvitationEmail({ invitation, user, context }) {
112
112
  }
113
113
  }
114
114
  async function resendInvitationEmail({ email, reference, type }, context) {
115
- var invitation = await (0, shell_1.getRepository)(invitation_1.Invitation).findOneBy({
115
+ var invitation = await (0, shell_1.getRepository)(invitation_js_1.Invitation).findOneBy({
116
116
  email: (0, typeorm_1.ILike)(email),
117
117
  reference,
118
118
  type
@@ -120,10 +120,10 @@ async function resendInvitationEmail({ email, reference, type }, context) {
120
120
  if (!invitation) {
121
121
  throw new Error(`not found invitation.`);
122
122
  }
123
- var user = await (0, shell_1.getRepository)(user_1.User).findOne({
123
+ var user = await (0, shell_1.getRepository)(user_js_1.User).findOne({
124
124
  where: {
125
125
  email: (0, typeorm_1.ILike)(email),
126
- status: user_1.UserStatus.ACTIVATED
126
+ status: user_js_1.UserStatus.ACTIVATED
127
127
  }
128
128
  });
129
129
  if (!user) {
@@ -1 +1 @@
1
- {"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILike } from 'typeorm'\nimport { URL } from 'url'\n\nimport { sendEmail } from '@things-factory/email-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Invitation } from '../service/invitation/invitation'\nimport { User, UserStatus } from '../service/user/user'\nimport { getInvitationEmailForm } from '../templates/invitation-email'\nimport { makeInvitationToken } from './utils/make-invitation-token'\nimport { saveInvitationToken } from './utils/save-invitation-token'\n\nexport async function invite(attrs, withEmailInvitation?: Boolean) {\n const { username, reference, type, context } = attrs\n const repository = getRepository(User)\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n var domains = user.domains\n\n // TODO reference should not be a domain.id (security reason)\n\n if (user) {\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n }\n\n if (withEmailInvitation) {\n const email = user.email\n\n // TODO 초대장의 유효기간을 설정할 수 있어야 함.\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n invitation = await getRepository(Invitation).save({\n email,\n reference,\n type\n })\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n }\n\n if (user) {\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n } else {\n // TODO need to signup\n }\n}\n\nexport async function acceptInvitation(token) {\n var invitation = await getRepository(Invitation).findOneBy({\n token\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var { email, reference, type } = invitation\n\n var user = await getRepository(User).findOne({ where: { email: ILike(email) }, relations: ['domains'] })\n\n if (user) {\n var domains = user.domains\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n\n await getRepository(Invitation).delete(invitation.id)\n } else {\n // TODO goto signup\n }\n\n return true\n}\n\nexport async function sendInvitationEmail({ invitation, user, context }) {\n try {\n var token = makeInvitationToken()\n var verifaction = await saveInvitationToken(invitation.id, token)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/accept/${token}`, context.header.referer)\n\n await sendEmail({\n receiver: invitation.email,\n subject: 'Invitation',\n content: getInvitationEmailForm({\n username: user.username,\n email: invitation.email,\n acceptUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function resendInvitationEmail(\n { email, reference, type }: { email: string; reference: string; type: string },\n context\n) {\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var user = await getRepository(User).findOne({\n where: {\n email: ILike(email),\n status: UserStatus.ACTIVATED\n }\n })\n\n if (!user) {\n throw new Error(`user not found: ${email}`)\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n}\n"]}
1
+ {"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../server/controllers/invitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILike } from 'typeorm'\nimport { URL } from 'url'\n\nimport { sendEmail } from '@things-factory/email-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Invitation } from '../service/invitation/invitation.js'\nimport { User, UserStatus } from '../service/user/user.js'\nimport { getInvitationEmailForm } from '../templates/invitation-email.js'\nimport { makeInvitationToken } from './utils/make-invitation-token.js'\nimport { saveInvitationToken } from './utils/save-invitation-token.js'\n\nexport async function invite(attrs, withEmailInvitation?: Boolean) {\n const { username, reference, type, context } = attrs\n const repository = getRepository(User)\n\n var user = await repository.findOne({\n where: { username },\n relations: ['domains']\n })\n\n if (!user && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(username)) {\n user = await repository.findOne({\n where: { email: ILike(username) },\n relations: ['domains']\n })\n }\n\n var domains = user.domains\n\n // TODO reference should not be a domain.id (security reason)\n\n if (user) {\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n }\n\n if (withEmailInvitation) {\n const email = user.email\n\n // TODO 초대장의 유효기간을 설정할 수 있어야 함.\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n invitation = await getRepository(Invitation).save({\n email,\n reference,\n type\n })\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n }\n\n if (user) {\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n } else {\n // TODO need to signup\n }\n}\n\nexport async function acceptInvitation(token) {\n var invitation = await getRepository(Invitation).findOneBy({\n token\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var { email, reference, type } = invitation\n\n var user = await getRepository(User).findOne({ where: { email: ILike(email) }, relations: ['domains'] })\n\n if (user) {\n var domains = user.domains\n const domain = domains.find(domain => domain.id == reference)\n\n if (domain) {\n const msg = `user already a member of the ${type}.`\n throw new Error(msg)\n }\n\n user.domains = [...domains, await getRepository(Domain).findOneBy({ id: reference })]\n await getRepository(User).save(user)\n\n await getRepository(Invitation).delete(invitation.id)\n } else {\n // TODO goto signup\n }\n\n return true\n}\n\nexport async function sendInvitationEmail({ invitation, user, context }) {\n try {\n var token = makeInvitationToken()\n var verifaction = await saveInvitationToken(invitation.id, token)\n\n if (verifaction) {\n var serviceUrl = new URL(`/auth/accept/${token}`, context.header.referer)\n\n await sendEmail({\n receiver: invitation.email,\n subject: 'Invitation',\n content: getInvitationEmailForm({\n username: user.username,\n email: invitation.email,\n acceptUrl: serviceUrl\n })\n })\n\n return true\n }\n } catch (e) {\n return false\n }\n}\n\nexport async function resendInvitationEmail(\n { email, reference, type }: { email: string; reference: string; type: string },\n context\n) {\n var invitation = await getRepository(Invitation).findOneBy({\n email: ILike(email),\n reference,\n type\n })\n\n if (!invitation) {\n throw new Error(`not found invitation.`)\n }\n\n var user = await getRepository(User).findOne({\n where: {\n email: ILike(email),\n status: UserStatus.ACTIVATED\n }\n })\n\n if (!user) {\n throw new Error(`user not found: ${email}`)\n }\n\n return await sendInvitationEmail({\n invitation,\n user,\n context\n })\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { User } from '../service/user/user';
1
+ import { User } from '../service/user/user.js';
2
2
  export declare function updateProfile({ id }: {
3
3
  id: any;
4
4
  }, newProfiles: any): Promise<{
@@ -10,17 +10,17 @@ export declare function updateProfile({ id }: {
10
10
  description: string;
11
11
  domains?: import("@things-factory/shell").Domain[];
12
12
  password: string;
13
- roles?: import("..").Role[];
13
+ roles?: import("../index.js").Role[];
14
14
  userType: string;
15
15
  reference: string;
16
16
  salt: string;
17
17
  ssoId: string;
18
- status: import("../service/user/user").UserStatus;
18
+ status: import("../service/user/user.js").UserStatus;
19
19
  failCount: number;
20
20
  passwordUpdatedAt: Date;
21
21
  owner: boolean;
22
- credentials: import("..").WebAuthCredential[];
23
- usersAuthProviders: import("..").UsersAuthProviders[];
22
+ credentials: import("../index.js").WebAuthCredential[];
23
+ usersAuthProviders: import("../index.js").UsersAuthProviders[];
24
24
  creator: User;
25
25
  creatorId: string;
26
26
  updater: User;
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateProfile = updateProfile;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const shell_1 = require("@things-factory/shell");
6
- const error_code_1 = require("../constants/error-code");
7
- const auth_error_1 = require("../errors/auth-error");
8
- const user_1 = require("../service/user/user");
6
+ const error_code_js_1 = require("../constants/error-code.js");
7
+ const auth_error_js_1 = require("../errors/auth-error.js");
8
+ const user_js_1 = require("../service/user/user.js");
9
9
  async function updateProfile({ id }, newProfiles) {
10
- const repository = (0, shell_1.getRepository)(user_1.User);
10
+ const repository = (0, shell_1.getRepository)(user_js_1.User);
11
11
  const user = await repository.findOneBy({ id });
12
12
  if (!user) {
13
- throw new auth_error_1.AuthError({
14
- errorCode: error_code_1.USER_NOT_FOUND
13
+ throw new auth_error_js_1.AuthError({
14
+ errorCode: error_code_js_1.USER_NOT_FOUND
15
15
  });
16
16
  }
17
17
  /* only 'username', 'name', 'email' and 'locale' attributes can be changed */
@@ -25,16 +25,16 @@ async function updateProfile({ id }, newProfiles) {
25
25
  if ('email' in allowed) {
26
26
  var found = await repository.findOne({ where: { email: (0, typeorm_1.ILike)(allowed.email) } });
27
27
  if (found && found.id != id) {
28
- throw new auth_error_1.AuthError({
29
- errorCode: auth_error_1.AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS
28
+ throw new auth_error_js_1.AuthError({
29
+ errorCode: auth_error_js_1.AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS
30
30
  });
31
31
  }
32
32
  }
33
33
  if ('username' in allowed) {
34
34
  var found = await repository.findOne({ where: { username: allowed.username } });
35
35
  if (found && found.id != id) {
36
- throw new auth_error_1.AuthError({
37
- errorCode: auth_error_1.AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS
36
+ throw new auth_error_js_1.AuthError({
37
+ errorCode: auth_error_js_1.AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS
38
38
  });
39
39
  }
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;AAQA,sCA8CC;AAtDD,qCAA+B;AAE/B,iDAAqD;AAErD,wDAAwD;AACxD,qDAAgD;AAChD,+CAA2C;AAEpC,KAAK,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW;IACrD,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,WAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,sBAAS,CAAC;YAClB,SAAS,EAAE,2BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,OAAO,GAKP,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;SACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;SACnC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAEtF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAS,CAAC;gBAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,oBAAoB;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACrF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAS,CAAC;gBAClB,SAAS,EAAE,sBAAS,CAAC,WAAW,CAAC,uBAAuB;aACzD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,IAAI,GACJ,OAAO,EACV,CAAA;AACJ,CAAC","sourcesContent":["import { ILike } from 'typeorm'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { USER_NOT_FOUND } from '../constants/error-code'\nimport { AuthError } from '../errors/auth-error'\nimport { User } from '../service/user/user'\n\nexport async function updateProfile({ id }, newProfiles) {\n const repository = getRepository(User)\n const user = await repository.findOneBy({ id })\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n /* only 'username', 'name', 'email' and 'locale' attributes can be changed */\n var allowed: {\n username?: string\n name?: string\n email?: string\n locale?: string\n } = ['username', 'name', 'email', 'locale']\n .filter(attr => attr in newProfiles)\n .reduce((sum, attr) => {\n sum[attr] = newProfiles[attr]\n return sum\n }, {})\n\n /* check if email and username is unique */\n if ('email' in allowed) {\n var found: User = await repository.findOne({ where: { email: ILike(allowed.email) } })\n\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS\n })\n }\n }\n\n if ('username' in allowed) {\n var found: User = await repository.findOne({ where: { username: allowed.username } })\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS\n })\n }\n }\n\n return await repository.save({\n ...user,\n ...allowed\n })\n}\n"]}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../server/controllers/profile.ts"],"names":[],"mappings":";;AAQA,sCA8CC;AAtDD,qCAA+B;AAE/B,iDAAqD;AAErD,8DAA2D;AAC3D,2DAAmD;AACnD,qDAA8C;AAEvC,KAAK,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW;IACrD,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,cAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,yBAAS,CAAC;YAClB,SAAS,EAAE,8BAAc;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,OAAO,GAKP,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;SACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;SACnC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAER,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,eAAK,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAEtF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAS,CAAC;gBAClB,SAAS,EAAE,yBAAS,CAAC,WAAW,CAAC,oBAAoB;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAS,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACrF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAS,CAAC;gBAClB,SAAS,EAAE,yBAAS,CAAC,WAAW,CAAC,uBAAuB;aACzD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,IAAI,GACJ,OAAO,EACV,CAAA;AACJ,CAAC","sourcesContent":["import { ILike } from 'typeorm'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { USER_NOT_FOUND } from '../constants/error-code.js'\nimport { AuthError } from '../errors/auth-error.js'\nimport { User } from '../service/user/user.js'\n\nexport async function updateProfile({ id }, newProfiles) {\n const repository = getRepository(User)\n const user = await repository.findOneBy({ id })\n if (!user) {\n throw new AuthError({\n errorCode: USER_NOT_FOUND\n })\n }\n\n /* only 'username', 'name', 'email' and 'locale' attributes can be changed */\n var allowed: {\n username?: string\n name?: string\n email?: string\n locale?: string\n } = ['username', 'name', 'email', 'locale']\n .filter(attr => attr in newProfiles)\n .reduce((sum, attr) => {\n sum[attr] = newProfiles[attr]\n return sum\n }, {})\n\n /* check if email and username is unique */\n if ('email' in allowed) {\n var found: User = await repository.findOne({ where: { email: ILike(allowed.email) } })\n\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.EMAIL_ALREADY_EXISTS\n })\n }\n }\n\n if ('username' in allowed) {\n var found: User = await repository.findOne({ where: { username: allowed.username } })\n if (found && found.id != id) {\n throw new AuthError({\n errorCode: AuthError.ERROR_CODES.USERNAME_ALREADY_EXISTS\n })\n }\n }\n\n return await repository.save({\n ...user,\n ...allowed\n })\n}\n"]}
@@ -6,25 +6,25 @@ const url_1 = require("url");
6
6
  const email_base_1 = require("@things-factory/email-base");
7
7
  const env_1 = require("@things-factory/env");
8
8
  const shell_1 = require("@things-factory/shell");
9
- const error_code_1 = require("../constants/error-code");
10
- const auth_error_1 = require("../errors/auth-error");
11
- const password_history_1 = require("../service/password-history/password-history");
12
- const user_1 = require("../service/user/user");
13
- const verification_token_1 = require("../service/verification-token/verification-token");
14
- const reset_password_email_1 = require("../templates/reset-password-email");
15
- const make_verification_token_1 = require("./utils/make-verification-token");
16
- const save_verification_token_1 = require("./utils/save-verification-token");
9
+ const error_code_js_1 = require("../constants/error-code.js");
10
+ const auth_error_js_1 = require("../errors/auth-error.js");
11
+ const password_history_js_1 = require("../service/password-history/password-history.js");
12
+ const user_js_1 = require("../service/user/user.js");
13
+ const verification_token_js_1 = require("../service/verification-token/verification-token.js");
14
+ const reset_password_email_js_1 = require("../templates/reset-password-email.js");
15
+ const make_verification_token_js_1 = require("./utils/make-verification-token.js");
16
+ const save_verification_token_js_1 = require("./utils/save-verification-token.js");
17
17
  const HISTORY_SIZE = env_1.config.get('password', { history: 0 }).history;
18
18
  async function sendPasswordResetEmail({ user, context }) {
19
19
  try {
20
- var token = (0, make_verification_token_1.makeVerificationToken)();
21
- var verifaction = await (0, save_verification_token_1.saveVerificationToken)(user.id, token, verification_token_1.VerificationTokenType.PASSWORD_RESET);
20
+ var token = (0, make_verification_token_js_1.makeVerificationToken)();
21
+ var verifaction = await (0, save_verification_token_js_1.saveVerificationToken)(user.id, token, verification_token_js_1.VerificationTokenType.PASSWORD_RESET);
22
22
  if (verifaction) {
23
23
  var serviceUrl = new url_1.URL(`/auth/reset-password?token=${token}`, context.header.referer);
24
24
  await (0, email_base_1.sendEmail)({
25
25
  receiver: user.email,
26
26
  subject: 'Reset your password',
27
- content: (0, reset_password_email_1.getResetPasswordEmailForm)({
27
+ content: (0, reset_password_email_js_1.getResetPasswordEmailForm)({
28
28
  name: user.name,
29
29
  resetUrl: serviceUrl
30
30
  })
@@ -38,10 +38,10 @@ async function sendPasswordResetEmail({ user, context }) {
38
38
  }
39
39
  async function resetPassword(token, password, context) {
40
40
  const { t } = context;
41
- const verificationToken = await (0, shell_1.getRepository)(verification_token_1.VerificationToken).findOne({
41
+ const verificationToken = await (0, shell_1.getRepository)(verification_token_js_1.VerificationToken).findOne({
42
42
  where: {
43
43
  token,
44
- type: verification_token_1.VerificationTokenType.PASSWORD_RESET
44
+ type: verification_token_js_1.VerificationTokenType.PASSWORD_RESET
45
45
  }
46
46
  });
47
47
  if (!verificationToken) {
@@ -51,7 +51,7 @@ async function resetPassword(token, password, context) {
51
51
  if (!userId) {
52
52
  throw new Error(t('text.invalid verification token'));
53
53
  }
54
- var user = await (0, shell_1.getRepository)(user_1.User).findOneBy({ id: userId });
54
+ var user = await (0, shell_1.getRepository)(user_js_1.User).findOneBy({ id: userId });
55
55
  if (!user) {
56
56
  throw new Error(t('error.user not found'));
57
57
  }
@@ -59,10 +59,10 @@ async function resetPassword(token, password, context) {
59
59
  // throw new Error(t('text.inactive user'))
60
60
  // }
61
61
  /* check if password is following the rule */
62
- user_1.User.validatePasswordByRule(password, context === null || context === void 0 ? void 0 : context.lng);
63
- user.password = user_1.User.encode(password, user.salt);
62
+ user_js_1.User.validatePasswordByRule(password, context === null || context === void 0 ? void 0 : context.lng);
63
+ user.password = user_js_1.User.encode(password, user.salt);
64
64
  if (HISTORY_SIZE > 0) {
65
- var passwordHistory = await (0, shell_1.getRepository)(password_history_1.PasswordHistory).findOneBy({ userId: user.id });
65
+ var passwordHistory = await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).findOneBy({ userId: user.id });
66
66
  var history = [];
67
67
  if (passwordHistory) {
68
68
  try {
@@ -76,20 +76,20 @@ async function resetPassword(token, password, context) {
76
76
  console.error('password history currupted - not json format');
77
77
  }
78
78
  const found = history.slice(0, HISTORY_SIZE).find(h => {
79
- return user_1.User.verify(h.password, password, h.salt);
79
+ return user_js_1.User.verify(h.password, password, h.salt);
80
80
  });
81
81
  if (found) {
82
- throw new auth_error_1.AuthError({
83
- errorCode: error_code_1.PASSWORD_USED_PAST
82
+ throw new auth_error_js_1.AuthError({
83
+ errorCode: error_code_js_1.PASSWORD_USED_PAST
84
84
  });
85
85
  }
86
86
  }
87
87
  }
88
- await (0, shell_1.getRepository)(user_1.User).save(Object.assign(Object.assign({}, user), { passwordUpdatedAt: new Date() }));
89
- await (0, shell_1.getRepository)(verification_token_1.VerificationToken).delete({
88
+ await (0, shell_1.getRepository)(user_js_1.User).save(Object.assign(Object.assign({}, user), { passwordUpdatedAt: new Date() }));
89
+ await (0, shell_1.getRepository)(verification_token_js_1.VerificationToken).delete({
90
90
  userId,
91
91
  token,
92
- type: verification_token_1.VerificationTokenType.PASSWORD_RESET
92
+ type: verification_token_js_1.VerificationTokenType.PASSWORD_RESET
93
93
  });
94
94
  if (HISTORY_SIZE > 0) {
95
95
  history = [
@@ -99,7 +99,7 @@ async function resetPassword(token, password, context) {
99
99
  },
100
100
  ...history
101
101
  ].slice(0, HISTORY_SIZE);
102
- await (0, shell_1.getRepository)(password_history_1.PasswordHistory).save({
102
+ await (0, shell_1.getRepository)(password_history_js_1.PasswordHistory).save({
103
103
  userId: user.id,
104
104
  history: JSON.stringify(history)
105
105
  });