hazo_auth 1.4.1 → 1.6.0

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 (478) hide show
  1. package/README.md +25 -38
  2. package/SETUP_CHECKLIST.md +708 -0
  3. package/dist/app/api/hazo_auth/change_password/route.d.ts +8 -0
  4. package/dist/app/api/hazo_auth/change_password/route.d.ts.map +1 -0
  5. package/dist/app/api/hazo_auth/change_password/route.js +98 -0
  6. package/dist/app/api/hazo_auth/forgot_password/route.d.ts +8 -0
  7. package/dist/app/api/hazo_auth/forgot_password/route.d.ts.map +1 -0
  8. package/dist/app/api/hazo_auth/forgot_password/route.js +78 -0
  9. package/dist/app/api/hazo_auth/get_auth/route.d.ts +10 -0
  10. package/dist/app/api/hazo_auth/get_auth/route.d.ts.map +1 -0
  11. package/dist/app/api/hazo_auth/get_auth/route.js +63 -0
  12. package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts +14 -0
  13. package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts.map +1 -0
  14. package/dist/app/api/hazo_auth/invalidate_cache/route.js +96 -0
  15. package/dist/app/api/hazo_auth/library_photos/route.d.ts +13 -0
  16. package/dist/app/api/hazo_auth/library_photos/route.d.ts.map +1 -0
  17. package/dist/app/api/hazo_auth/library_photos/route.js +55 -0
  18. package/dist/app/api/hazo_auth/login/route.d.ts +12 -0
  19. package/dist/app/api/hazo_auth/login/route.d.ts.map +1 -0
  20. package/dist/app/api/hazo_auth/login/route.js +140 -0
  21. package/dist/app/api/hazo_auth/logout/route.d.ts +8 -0
  22. package/dist/app/api/hazo_auth/logout/route.d.ts.map +1 -0
  23. package/dist/app/api/hazo_auth/logout/route.js +71 -0
  24. package/dist/app/api/hazo_auth/me/route.d.ts +3 -0
  25. package/dist/app/api/hazo_auth/me/route.d.ts.map +1 -0
  26. package/dist/app/api/hazo_auth/me/route.js +34 -0
  27. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts +7 -0
  28. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts.map +1 -0
  29. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.js +43 -0
  30. package/dist/app/api/hazo_auth/register/route.d.ts +9 -0
  31. package/dist/app/api/hazo_auth/register/route.d.ts.map +1 -0
  32. package/dist/app/api/hazo_auth/register/route.js +80 -0
  33. package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts +8 -0
  34. package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts.map +1 -0
  35. package/dist/app/api/hazo_auth/remove_profile_picture/route.js +64 -0
  36. package/dist/app/api/hazo_auth/resend_verification/route.d.ts +8 -0
  37. package/dist/app/api/hazo_auth/resend_verification/route.d.ts.map +1 -0
  38. package/dist/app/api/hazo_auth/resend_verification/route.js +79 -0
  39. package/dist/app/api/hazo_auth/reset_password/route.d.ts +8 -0
  40. package/dist/app/api/hazo_auth/reset_password/route.d.ts.map +1 -0
  41. package/dist/app/api/hazo_auth/reset_password/route.js +76 -0
  42. package/dist/app/api/hazo_auth/update_user/route.d.ts +9 -0
  43. package/dist/app/api/hazo_auth/update_user/route.d.ts.map +1 -0
  44. package/dist/app/api/hazo_auth/update_user/route.js +95 -0
  45. package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts +9 -0
  46. package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts.map +1 -0
  47. package/dist/app/api/hazo_auth/upload_profile_picture/route.js +204 -0
  48. package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts +6 -0
  49. package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts.map +1 -0
  50. package/dist/app/api/hazo_auth/validate_reset_token/route.js +58 -0
  51. package/dist/app/api/hazo_auth/verify_email/route.d.ts +11 -0
  52. package/dist/app/api/hazo_auth/verify_email/route.d.ts.map +1 -0
  53. package/dist/app/api/hazo_auth/verify_email/route.js +63 -0
  54. package/dist/cli/generate.d.ts +2 -0
  55. package/dist/cli/generate.d.ts.map +1 -0
  56. package/dist/cli/generate.js +117 -0
  57. package/dist/cli/index.d.ts +3 -0
  58. package/dist/cli/index.d.ts.map +1 -0
  59. package/dist/cli/index.js +120 -0
  60. package/dist/cli/validate.d.ts +15 -0
  61. package/dist/cli/validate.d.ts.map +1 -0
  62. package/dist/cli/validate.js +509 -0
  63. package/dist/components/layouts/email_verification/config/email_verification_field_config.d.ts +2 -2
  64. package/dist/components/layouts/email_verification/config/email_verification_field_config.d.ts.map +1 -1
  65. package/dist/components/layouts/email_verification/config/email_verification_field_config.js +1 -1
  66. package/dist/components/layouts/email_verification/hooks/use_email_verification.d.ts +2 -2
  67. package/dist/components/layouts/email_verification/hooks/use_email_verification.d.ts.map +1 -1
  68. package/dist/components/layouts/email_verification/hooks/use_email_verification.js +2 -2
  69. package/dist/components/layouts/email_verification/index.d.ts +3 -3
  70. package/dist/components/layouts/email_verification/index.d.ts.map +1 -1
  71. package/dist/components/layouts/email_verification/index.js +9 -9
  72. package/dist/components/layouts/forgot_password/config/forgot_password_field_config.d.ts +2 -2
  73. package/dist/components/layouts/forgot_password/config/forgot_password_field_config.d.ts.map +1 -1
  74. package/dist/components/layouts/forgot_password/config/forgot_password_field_config.js +1 -1
  75. package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.d.ts +2 -2
  76. package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.d.ts.map +1 -1
  77. package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.js +2 -2
  78. package/dist/components/layouts/forgot_password/index.d.ts +2 -2
  79. package/dist/components/layouts/forgot_password/index.d.ts.map +1 -1
  80. package/dist/components/layouts/forgot_password/index.js +8 -8
  81. package/dist/components/layouts/login/config/login_field_config.d.ts +2 -2
  82. package/dist/components/layouts/login/config/login_field_config.d.ts.map +1 -1
  83. package/dist/components/layouts/login/config/login_field_config.js +1 -1
  84. package/dist/components/layouts/login/hooks/use_login_form.d.ts +2 -2
  85. package/dist/components/layouts/login/hooks/use_login_form.d.ts.map +1 -1
  86. package/dist/components/layouts/login/hooks/use_login_form.js +4 -4
  87. package/dist/components/layouts/login/index.d.ts +2 -2
  88. package/dist/components/layouts/login/index.d.ts.map +1 -1
  89. package/dist/components/layouts/login/index.js +9 -9
  90. package/dist/components/layouts/my_settings/components/editable_field.js +3 -3
  91. package/dist/components/layouts/my_settings/components/password_change_dialog.d.ts +1 -1
  92. package/dist/components/layouts/my_settings/components/password_change_dialog.d.ts.map +1 -1
  93. package/dist/components/layouts/my_settings/components/password_change_dialog.js +4 -4
  94. package/dist/components/layouts/my_settings/components/profile_picture_dialog.js +7 -7
  95. package/dist/components/layouts/my_settings/components/profile_picture_display.js +1 -1
  96. package/dist/components/layouts/my_settings/components/profile_picture_gravatar_tab.js +3 -3
  97. package/dist/components/layouts/my_settings/components/profile_picture_library_tab.js +5 -5
  98. package/dist/components/layouts/my_settings/components/profile_picture_upload_tab.js +4 -4
  99. package/dist/components/layouts/my_settings/config/my_settings_field_config.d.ts +1 -1
  100. package/dist/components/layouts/my_settings/config/my_settings_field_config.d.ts.map +1 -1
  101. package/dist/components/layouts/my_settings/config/my_settings_field_config.js +1 -1
  102. package/dist/components/layouts/my_settings/hooks/use_my_settings.d.ts +1 -1
  103. package/dist/components/layouts/my_settings/hooks/use_my_settings.d.ts.map +1 -1
  104. package/dist/components/layouts/my_settings/hooks/use_my_settings.js +1 -1
  105. package/dist/components/layouts/my_settings/index.d.ts +2 -2
  106. package/dist/components/layouts/my_settings/index.d.ts.map +1 -1
  107. package/dist/components/layouts/my_settings/index.js +9 -9
  108. package/dist/components/layouts/register/config/register_field_config.d.ts +2 -2
  109. package/dist/components/layouts/register/config/register_field_config.d.ts.map +1 -1
  110. package/dist/components/layouts/register/config/register_field_config.js +1 -1
  111. package/dist/components/layouts/register/hooks/use_register_form.d.ts +3 -3
  112. package/dist/components/layouts/register/hooks/use_register_form.d.ts.map +1 -1
  113. package/dist/components/layouts/register/hooks/use_register_form.js +2 -2
  114. package/dist/components/layouts/register/index.d.ts +2 -2
  115. package/dist/components/layouts/register/index.d.ts.map +1 -1
  116. package/dist/components/layouts/register/index.js +9 -9
  117. package/dist/components/layouts/reset_password/config/reset_password_field_config.d.ts +2 -2
  118. package/dist/components/layouts/reset_password/config/reset_password_field_config.d.ts.map +1 -1
  119. package/dist/components/layouts/reset_password/config/reset_password_field_config.js +1 -1
  120. package/dist/components/layouts/reset_password/hooks/use_reset_password_form.d.ts +3 -3
  121. package/dist/components/layouts/reset_password/hooks/use_reset_password_form.d.ts.map +1 -1
  122. package/dist/components/layouts/reset_password/hooks/use_reset_password_form.js +2 -2
  123. package/dist/components/layouts/reset_password/index.d.ts +2 -2
  124. package/dist/components/layouts/reset_password/index.d.ts.map +1 -1
  125. package/dist/components/layouts/reset_password/index.js +8 -8
  126. package/dist/components/layouts/shared/components/already_logged_in_guard.js +4 -4
  127. package/dist/components/layouts/shared/components/auth_page_shell.js +3 -3
  128. package/dist/components/layouts/shared/components/form_action_buttons.d.ts +1 -1
  129. package/dist/components/layouts/shared/components/form_action_buttons.d.ts.map +1 -1
  130. package/dist/components/layouts/shared/components/form_action_buttons.js +1 -1
  131. package/dist/components/layouts/shared/components/form_field_wrapper.js +2 -2
  132. package/dist/components/layouts/shared/components/logout_button.js +2 -2
  133. package/dist/components/layouts/shared/components/password_field.js +3 -3
  134. package/dist/components/layouts/shared/components/profile_pic_menu.d.ts +1 -1
  135. package/dist/components/layouts/shared/components/profile_pic_menu.d.ts.map +1 -1
  136. package/dist/components/layouts/shared/components/profile_pic_menu.js +4 -4
  137. package/dist/components/layouts/shared/components/profile_pic_menu_wrapper.js +2 -2
  138. package/dist/components/layouts/shared/components/sidebar_layout_wrapper.js +3 -3
  139. package/dist/components/layouts/shared/components/standalone_layout_wrapper.js +1 -1
  140. package/dist/components/layouts/shared/components/two_column_auth_layout.js +1 -1
  141. package/dist/components/layouts/shared/components/unauthorized_guard.js +2 -2
  142. package/dist/components/layouts/shared/hooks/use_hazo_auth.d.ts +1 -1
  143. package/dist/components/layouts/shared/hooks/use_hazo_auth.d.ts.map +1 -1
  144. package/dist/components/layouts/shared/utils/validation.d.ts +1 -1
  145. package/dist/components/layouts/shared/utils/validation.d.ts.map +1 -1
  146. package/dist/components/layouts/user_management/components/roles_matrix.js +7 -7
  147. package/dist/components/layouts/user_management/index.js +11 -11
  148. package/dist/components/ui/alert-dialog.js +2 -2
  149. package/dist/components/ui/avatar.js +1 -1
  150. package/dist/components/ui/button.js +1 -1
  151. package/dist/components/ui/card.d.ts +9 -0
  152. package/dist/components/ui/card.d.ts.map +1 -0
  153. package/dist/components/ui/card.js +45 -0
  154. package/dist/components/ui/checkbox.js +1 -1
  155. package/dist/components/ui/dialog.js +1 -1
  156. package/dist/components/ui/dropdown-menu.js +1 -1
  157. package/dist/components/ui/hazo_ui_tooltip.js +1 -1
  158. package/dist/components/ui/input.js +1 -1
  159. package/dist/components/ui/label.js +1 -1
  160. package/dist/components/ui/separator.js +1 -1
  161. package/dist/components/ui/sheet.js +1 -1
  162. package/dist/components/ui/sidebar.d.ts +2 -2
  163. package/dist/components/ui/sidebar.d.ts.map +1 -1
  164. package/dist/components/ui/sidebar.js +8 -8
  165. package/dist/components/ui/skeleton.js +1 -1
  166. package/dist/components/ui/switch.js +1 -1
  167. package/dist/components/ui/table.js +1 -1
  168. package/dist/components/ui/tabs.js +1 -1
  169. package/dist/components/ui/tooltip.js +1 -1
  170. package/dist/components/ui/vertical-tabs.js +1 -1
  171. package/dist/hooks/use-mobile.d.ts.map +1 -1
  172. package/dist/hooks/use-mobile.js +17 -3
  173. package/dist/lib/already_logged_in_config.server.js +1 -1
  174. package/dist/lib/app_logger.js +1 -1
  175. package/dist/lib/auth/auth_cache.d.ts +1 -1
  176. package/dist/lib/auth/auth_cache.d.ts.map +1 -1
  177. package/dist/lib/auth/auth_utils.server.js +2 -2
  178. package/dist/lib/auth/hazo_get_auth.server.d.ts +1 -1
  179. package/dist/lib/auth/hazo_get_auth.server.d.ts.map +1 -1
  180. package/dist/lib/auth/hazo_get_auth.server.js +7 -7
  181. package/dist/lib/auth/server_auth.js +2 -2
  182. package/dist/lib/auth_utility_config.server.js +1 -1
  183. package/dist/lib/config/config_loader.server.js +1 -1
  184. package/dist/lib/email_verification_config.server.js +1 -1
  185. package/dist/lib/file_types_config.server.js +1 -1
  186. package/dist/lib/forgot_password_config.server.js +1 -1
  187. package/dist/lib/hazo_connect_instance.server.js +2 -2
  188. package/dist/lib/hazo_connect_setup.server.js +2 -2
  189. package/dist/lib/login_config.server.js +2 -2
  190. package/dist/lib/messages_config.server.js +1 -1
  191. package/dist/lib/my_settings_config.server.js +7 -7
  192. package/dist/lib/password_requirements_config.server.js +1 -1
  193. package/dist/lib/profile_pic_menu_config.server.js +1 -1
  194. package/dist/lib/profile_picture_config.server.js +2 -2
  195. package/dist/lib/register_config.server.js +4 -4
  196. package/dist/lib/reset_password_config.server.js +3 -3
  197. package/dist/lib/services/email_service.js +2 -2
  198. package/dist/lib/services/email_verification_service.js +3 -3
  199. package/dist/lib/services/login_service.js +3 -3
  200. package/dist/lib/services/password_change_service.js +3 -3
  201. package/dist/lib/services/password_reset_service.js +3 -3
  202. package/dist/lib/services/profile_picture_remove_service.js +3 -3
  203. package/dist/lib/services/profile_picture_service.d.ts +1 -1
  204. package/dist/lib/services/profile_picture_service.d.ts.map +1 -1
  205. package/dist/lib/services/profile_picture_service.js +5 -5
  206. package/dist/lib/services/registration_service.js +8 -8
  207. package/dist/lib/services/token_service.js +2 -2
  208. package/dist/lib/services/user_profiles_service.js +2 -2
  209. package/dist/lib/services/user_update_service.d.ts +1 -1
  210. package/dist/lib/services/user_update_service.d.ts.map +1 -1
  211. package/dist/lib/services/user_update_service.js +4 -4
  212. package/dist/lib/ui_shell_config.server.js +1 -1
  213. package/dist/lib/ui_sizes_config.server.js +1 -1
  214. package/dist/lib/user_fields_config.server.js +1 -1
  215. package/dist/lib/user_management_config.server.js +1 -1
  216. package/dist/lib/utils/error_sanitizer.d.ts +1 -1
  217. package/dist/lib/utils/error_sanitizer.d.ts.map +1 -1
  218. package/dist/server/config/config_loader.d.ts +1 -1
  219. package/dist/server/config/config_loader.d.ts.map +1 -1
  220. package/dist/server/config/config_loader.js +1 -1
  221. package/dist/server/index.js +2 -2
  222. package/dist/server/logging/logger_service.d.ts +1 -1
  223. package/dist/server/logging/logger_service.d.ts.map +1 -1
  224. package/dist/server/routes/change_password.d.ts +2 -0
  225. package/dist/server/routes/change_password.d.ts.map +1 -0
  226. package/dist/server/routes/change_password.js +2 -0
  227. package/dist/server/routes/forgot_password.d.ts +2 -0
  228. package/dist/server/routes/forgot_password.d.ts.map +1 -0
  229. package/dist/server/routes/forgot_password.js +2 -0
  230. package/dist/server/routes/get_auth.d.ts +2 -0
  231. package/dist/server/routes/get_auth.d.ts.map +1 -0
  232. package/dist/server/routes/get_auth.js +2 -0
  233. package/dist/server/routes/index.d.ts +18 -0
  234. package/dist/server/routes/index.d.ts.map +1 -0
  235. package/dist/server/routes/index.js +24 -0
  236. package/dist/server/routes/invalidate_cache.d.ts +2 -0
  237. package/dist/server/routes/invalidate_cache.d.ts.map +1 -0
  238. package/dist/server/routes/invalidate_cache.js +2 -0
  239. package/dist/server/routes/library_photos.d.ts +2 -0
  240. package/dist/server/routes/library_photos.d.ts.map +1 -0
  241. package/dist/server/routes/library_photos.js +2 -0
  242. package/dist/server/routes/login.d.ts +2 -0
  243. package/dist/server/routes/login.d.ts.map +1 -0
  244. package/dist/server/routes/login.js +2 -0
  245. package/dist/server/routes/logout.d.ts +2 -0
  246. package/dist/server/routes/logout.d.ts.map +1 -0
  247. package/dist/server/routes/logout.js +2 -0
  248. package/dist/server/routes/me.d.ts +2 -0
  249. package/dist/server/routes/me.d.ts.map +1 -0
  250. package/dist/server/routes/me.js +2 -0
  251. package/dist/server/routes/profile_picture_filename.d.ts +2 -0
  252. package/dist/server/routes/profile_picture_filename.d.ts.map +1 -0
  253. package/dist/server/routes/profile_picture_filename.js +3 -0
  254. package/dist/server/routes/register.d.ts +2 -0
  255. package/dist/server/routes/register.d.ts.map +1 -0
  256. package/dist/server/routes/register.js +2 -0
  257. package/dist/server/routes/remove_profile_picture.d.ts +2 -0
  258. package/dist/server/routes/remove_profile_picture.d.ts.map +1 -0
  259. package/dist/server/routes/remove_profile_picture.js +2 -0
  260. package/dist/server/routes/resend_verification.d.ts +2 -0
  261. package/dist/server/routes/resend_verification.d.ts.map +1 -0
  262. package/dist/server/routes/resend_verification.js +2 -0
  263. package/dist/server/routes/reset_password.d.ts +2 -0
  264. package/dist/server/routes/reset_password.d.ts.map +1 -0
  265. package/dist/server/routes/reset_password.js +2 -0
  266. package/dist/server/routes/update_user.d.ts +2 -0
  267. package/dist/server/routes/update_user.d.ts.map +1 -0
  268. package/dist/server/routes/update_user.js +2 -0
  269. package/dist/server/routes/upload_profile_picture.d.ts +2 -0
  270. package/dist/server/routes/upload_profile_picture.d.ts.map +1 -0
  271. package/dist/server/routes/upload_profile_picture.js +2 -0
  272. package/dist/server/routes/validate_reset_token.d.ts +2 -0
  273. package/dist/server/routes/validate_reset_token.d.ts.map +1 -0
  274. package/dist/server/routes/validate_reset_token.js +2 -0
  275. package/dist/server/routes/verify_email.d.ts +2 -0
  276. package/dist/server/routes/verify_email.d.ts.map +1 -0
  277. package/dist/server/routes/verify_email.js +2 -0
  278. package/dist/server/server.js +2 -2
  279. package/package.json +14 -115
  280. package/components.json +0 -22
  281. package/instrumentation.ts +0 -32
  282. package/migrations/001_add_token_type_to_refresh_tokens.sql +0 -14
  283. package/migrations/002_add_name_to_hazo_users.sql +0 -7
  284. package/migrations/003_add_url_on_logon_to_hazo_users.sql +0 -8
  285. package/next.config.mjs +0 -67
  286. package/postcss.config.mjs +0 -8
  287. package/public/file.svg +0 -1
  288. package/public/globe.svg +0 -1
  289. package/public/next.svg +0 -1
  290. package/public/vercel.svg +0 -1
  291. package/public/window.svg +0 -1
  292. package/scripts/apply_migration.ts +0 -118
  293. package/scripts/init_users.ts +0 -378
  294. package/src/app/api/hazo_auth/auth/upload_profile_picture/route.ts +0 -268
  295. package/src/app/api/hazo_auth/change_password/route.ts +0 -132
  296. package/src/app/api/hazo_auth/forgot_password/route.ts +0 -107
  297. package/src/app/api/hazo_auth/get_auth/route.ts +0 -89
  298. package/src/app/api/hazo_auth/invalidate_cache/route.ts +0 -139
  299. package/src/app/api/hazo_auth/library_photos/route.ts +0 -73
  300. package/src/app/api/hazo_auth/login/route.ts +0 -181
  301. package/src/app/api/hazo_auth/logout/route.ts +0 -89
  302. package/src/app/api/hazo_auth/me/route.ts +0 -47
  303. package/src/app/api/hazo_auth/profile_picture/[filename]/route.ts +0 -67
  304. package/src/app/api/hazo_auth/register/route.ts +0 -109
  305. package/src/app/api/hazo_auth/remove_profile_picture/route.ts +0 -86
  306. package/src/app/api/hazo_auth/resend_verification/route.ts +0 -108
  307. package/src/app/api/hazo_auth/reset_password/route.ts +0 -107
  308. package/src/app/api/hazo_auth/update_user/route.ts +0 -126
  309. package/src/app/api/hazo_auth/upload_profile_picture/route.ts +0 -268
  310. package/src/app/api/hazo_auth/user_management/permissions/route.ts +0 -367
  311. package/src/app/api/hazo_auth/user_management/roles/route.ts +0 -442
  312. package/src/app/api/hazo_auth/user_management/users/roles/route.ts +0 -367
  313. package/src/app/api/hazo_auth/user_management/users/route.ts +0 -239
  314. package/src/app/api/hazo_auth/validate_reset_token/route.ts +0 -83
  315. package/src/app/api/hazo_auth/verify_email/route.ts +0 -88
  316. package/src/app/api/migrations/apply/route.ts +0 -91
  317. package/src/app/favicon.ico +0 -0
  318. package/src/app/fonts/GeistMonoVF.woff +0 -0
  319. package/src/app/fonts/GeistVF.woff +0 -0
  320. package/src/app/globals.css +0 -89
  321. package/src/app/hazo_auth/forgot_password/forgot_password_page_client.tsx +0 -60
  322. package/src/app/hazo_auth/forgot_password/page.tsx +0 -24
  323. package/src/app/hazo_auth/login/login_page_client.tsx +0 -86
  324. package/src/app/hazo_auth/login/page.tsx +0 -38
  325. package/src/app/hazo_auth/my_settings/my_settings_page_client.tsx +0 -120
  326. package/src/app/hazo_auth/my_settings/page.tsx +0 -40
  327. package/src/app/hazo_auth/register/page.tsx +0 -36
  328. package/src/app/hazo_auth/register/register_page_client.tsx +0 -81
  329. package/src/app/hazo_auth/reset_password/page.tsx +0 -29
  330. package/src/app/hazo_auth/reset_password/reset_password_page_client.tsx +0 -81
  331. package/src/app/hazo_auth/user_management/page.tsx +0 -14
  332. package/src/app/hazo_auth/user_management/user_management_page_client.tsx +0 -16
  333. package/src/app/hazo_auth/verify_email/page.tsx +0 -24
  334. package/src/app/hazo_auth/verify_email/verify_email_page_client.tsx +0 -60
  335. package/src/app/hazo_connect/api/sqlite/data/route.ts +0 -203
  336. package/src/app/hazo_connect/api/sqlite/schema/route.ts +0 -45
  337. package/src/app/hazo_connect/api/sqlite/tables/route.ts +0 -36
  338. package/src/app/hazo_connect/sqlite_admin/page.tsx +0 -51
  339. package/src/app/hazo_connect/sqlite_admin/sqlite-admin-client.tsx +0 -984
  340. package/src/app/layout.tsx +0 -43
  341. package/src/app/page.tsx +0 -170
  342. package/src/components/index.ts +0 -7
  343. package/src/components/layouts/email_verification/config/email_verification_field_config.ts +0 -86
  344. package/src/components/layouts/email_verification/hooks/use_email_verification.ts +0 -297
  345. package/src/components/layouts/email_verification/index.tsx +0 -297
  346. package/src/components/layouts/forgot_password/config/forgot_password_field_config.ts +0 -58
  347. package/src/components/layouts/forgot_password/hooks/use_forgot_password_form.ts +0 -179
  348. package/src/components/layouts/forgot_password/index.tsx +0 -168
  349. package/src/components/layouts/index.ts +0 -26
  350. package/src/components/layouts/login/config/login_field_config.ts +0 -67
  351. package/src/components/layouts/login/hooks/use_login_form.ts +0 -286
  352. package/src/components/layouts/login/index.tsx +0 -252
  353. package/src/components/layouts/my_settings/components/editable_field.tsx +0 -177
  354. package/src/components/layouts/my_settings/components/password_change_dialog.tsx +0 -301
  355. package/src/components/layouts/my_settings/components/profile_picture_dialog.tsx +0 -385
  356. package/src/components/layouts/my_settings/components/profile_picture_display.tsx +0 -66
  357. package/src/components/layouts/my_settings/components/profile_picture_gravatar_tab.tsx +0 -143
  358. package/src/components/layouts/my_settings/components/profile_picture_library_tab.tsx +0 -311
  359. package/src/components/layouts/my_settings/components/profile_picture_upload_tab.tsx +0 -341
  360. package/src/components/layouts/my_settings/config/my_settings_field_config.ts +0 -61
  361. package/src/components/layouts/my_settings/hooks/use_my_settings.ts +0 -458
  362. package/src/components/layouts/my_settings/index.tsx +0 -351
  363. package/src/components/layouts/register/config/register_field_config.ts +0 -101
  364. package/src/components/layouts/register/hooks/use_register_form.ts +0 -275
  365. package/src/components/layouts/register/index.tsx +0 -226
  366. package/src/components/layouts/reset_password/config/reset_password_field_config.ts +0 -86
  367. package/src/components/layouts/reset_password/hooks/use_reset_password_form.ts +0 -276
  368. package/src/components/layouts/reset_password/index.tsx +0 -294
  369. package/src/components/layouts/shared/components/already_logged_in_guard.tsx +0 -95
  370. package/src/components/layouts/shared/components/auth_page_shell.tsx +0 -36
  371. package/src/components/layouts/shared/components/field_error_message.tsx +0 -29
  372. package/src/components/layouts/shared/components/form_action_buttons.tsx +0 -64
  373. package/src/components/layouts/shared/components/form_field_wrapper.tsx +0 -44
  374. package/src/components/layouts/shared/components/form_header.tsx +0 -36
  375. package/src/components/layouts/shared/components/logout_button.tsx +0 -76
  376. package/src/components/layouts/shared/components/password_field.tsx +0 -72
  377. package/src/components/layouts/shared/components/profile_pic_menu.tsx +0 -321
  378. package/src/components/layouts/shared/components/profile_pic_menu_wrapper.tsx +0 -40
  379. package/src/components/layouts/shared/components/sidebar_layout_wrapper.tsx +0 -214
  380. package/src/components/layouts/shared/components/standalone_layout_wrapper.tsx +0 -53
  381. package/src/components/layouts/shared/components/two_column_auth_layout.tsx +0 -44
  382. package/src/components/layouts/shared/components/unauthorized_guard.tsx +0 -78
  383. package/src/components/layouts/shared/components/visual_panel.tsx +0 -41
  384. package/src/components/layouts/shared/config/layout_customization.ts +0 -95
  385. package/src/components/layouts/shared/data/layout_data_client.ts +0 -19
  386. package/src/components/layouts/shared/hooks/use_auth_status.ts +0 -103
  387. package/src/components/layouts/shared/hooks/use_hazo_auth.ts +0 -158
  388. package/src/components/layouts/shared/index.ts +0 -34
  389. package/src/components/layouts/shared/utils/ip_address.ts +0 -37
  390. package/src/components/layouts/shared/utils/validation.ts +0 -66
  391. package/src/components/layouts/user_management/components/roles_matrix.tsx +0 -607
  392. package/src/components/layouts/user_management/index.tsx +0 -1295
  393. package/src/components/ui/alert-dialog.tsx +0 -141
  394. package/src/components/ui/avatar.tsx +0 -50
  395. package/src/components/ui/button.tsx +0 -57
  396. package/src/components/ui/checkbox.tsx +0 -30
  397. package/src/components/ui/dialog.tsx +0 -122
  398. package/src/components/ui/dropdown-menu.tsx +0 -201
  399. package/src/components/ui/hazo_ui_tooltip.tsx +0 -67
  400. package/src/components/ui/index.ts +0 -22
  401. package/src/components/ui/input.tsx +0 -22
  402. package/src/components/ui/label.tsx +0 -26
  403. package/src/components/ui/separator.tsx +0 -31
  404. package/src/components/ui/sheet.tsx +0 -139
  405. package/src/components/ui/sidebar.tsx +0 -773
  406. package/src/components/ui/skeleton.tsx +0 -15
  407. package/src/components/ui/sonner.tsx +0 -31
  408. package/src/components/ui/switch.tsx +0 -29
  409. package/src/components/ui/table.tsx +0 -120
  410. package/src/components/ui/tabs.tsx +0 -55
  411. package/src/components/ui/tooltip.tsx +0 -32
  412. package/src/components/ui/vertical-tabs.tsx +0 -59
  413. package/src/hooks/use-mobile.tsx +0 -19
  414. package/src/index.ts +0 -7
  415. package/src/lib/already_logged_in_config.server.ts +0 -46
  416. package/src/lib/app_logger.ts +0 -24
  417. package/src/lib/auth/auth_cache.ts +0 -220
  418. package/src/lib/auth/auth_rate_limiter.ts +0 -121
  419. package/src/lib/auth/auth_types.ts +0 -65
  420. package/src/lib/auth/auth_utils.server.ts +0 -196
  421. package/src/lib/auth/hazo_get_auth.server.ts +0 -333
  422. package/src/lib/auth/index.ts +0 -23
  423. package/src/lib/auth/server_auth.ts +0 -88
  424. package/src/lib/auth_utility_config.server.ts +0 -136
  425. package/src/lib/config/config_loader.server.ts +0 -164
  426. package/src/lib/email_verification_config.server.ts +0 -32
  427. package/src/lib/file_types_config.server.ts +0 -25
  428. package/src/lib/forgot_password_config.server.ts +0 -32
  429. package/src/lib/hazo_connect_instance.server.ts +0 -101
  430. package/src/lib/hazo_connect_setup.server.ts +0 -194
  431. package/src/lib/hazo_connect_setup.ts +0 -54
  432. package/src/lib/index.ts +0 -44
  433. package/src/lib/login_config.server.ts +0 -71
  434. package/src/lib/messages_config.server.ts +0 -45
  435. package/src/lib/migrations/apply_migration.ts +0 -105
  436. package/src/lib/my_settings_config.server.ts +0 -135
  437. package/src/lib/password_requirements_config.server.ts +0 -39
  438. package/src/lib/profile_pic_menu_config.server.ts +0 -138
  439. package/src/lib/profile_picture_config.server.ts +0 -56
  440. package/src/lib/register_config.server.ts +0 -73
  441. package/src/lib/reset_password_config.server.ts +0 -75
  442. package/src/lib/services/email_service.ts +0 -581
  443. package/src/lib/services/email_verification_service.ts +0 -270
  444. package/src/lib/services/index.ts +0 -15
  445. package/src/lib/services/login_service.ts +0 -134
  446. package/src/lib/services/password_change_service.ts +0 -154
  447. package/src/lib/services/password_reset_service.ts +0 -405
  448. package/src/lib/services/profile_picture_remove_service.ts +0 -120
  449. package/src/lib/services/profile_picture_service.ts +0 -215
  450. package/src/lib/services/profile_picture_source_mapper.ts +0 -62
  451. package/src/lib/services/registration_service.ts +0 -184
  452. package/src/lib/services/token_service.ts +0 -240
  453. package/src/lib/services/user_profiles_service.ts +0 -143
  454. package/src/lib/services/user_update_service.ts +0 -141
  455. package/src/lib/ui_shell_config.server.ts +0 -73
  456. package/src/lib/ui_sizes_config.server.ts +0 -37
  457. package/src/lib/user_fields_config.server.ts +0 -31
  458. package/src/lib/user_management_config.server.ts +0 -39
  459. package/src/lib/utils/api_route_helpers.ts +0 -60
  460. package/src/lib/utils/error_sanitizer.ts +0 -75
  461. package/src/lib/utils.ts +0 -11
  462. package/src/middleware.ts +0 -94
  463. package/src/routes/index.ts +0 -34
  464. package/src/server/config/config_loader.ts +0 -496
  465. package/src/server/index.ts +0 -38
  466. package/src/server/logging/logger_service.ts +0 -56
  467. package/src/server/routes/root_router.ts +0 -16
  468. package/src/server/server.ts +0 -28
  469. package/src/server/types/app_types.ts +0 -74
  470. package/src/server/types/express.d.ts +0 -16
  471. package/src/stories/email_verification_layout.stories.tsx +0 -137
  472. package/src/stories/forgot_password_layout.stories.tsx +0 -85
  473. package/src/stories/login_layout.stories.tsx +0 -85
  474. package/src/stories/project_overview.stories.tsx +0 -33
  475. package/src/stories/register_layout.stories.tsx +0 -107
  476. package/tailwind.config.ts +0 -77
  477. package/tsconfig.build.json +0 -39
  478. package/tsconfig.json +0 -28
package/next.config.mjs DELETED
@@ -1,67 +0,0 @@
1
- // file_description: configure next.js application settings for the hazo_auth project
2
- // section: imports
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
-
6
- // section: path_resolution
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
-
10
- // section: base_configuration
11
- const next_config = {
12
- /* config options here */
13
- // Note: hazo_connect configuration is now read from hazo_auth_config.ini using hazo_config
14
- // Environment variables are only used as fallback if hazo_auth_config.ini is not found
15
- // See hazo_auth_config.ini for hazo_connect configuration parameters
16
- env: {
17
- // Environment variables can be set here as fallback, but hazo_auth_config.ini is preferred
18
- // HAZO_CONNECT_ENABLE_ADMIN_UI: "true",
19
- // HAZO_CONNECT_SQLITE_PATH: path.resolve(__dirname, "__tests__", "fixtures", "hazo_auth.sqlite"),
20
- },
21
- // Note: serverComponentsExternalPackages is not available in Next.js 14.2
22
- // Using webpack externals configuration instead (see webpack section below)
23
- // section: webpack_configuration
24
- webpack: (config, { isServer }) => {
25
- // section: hazo_auth_alias_resolution
26
- // Add hazo_auth/* alias to resolve to ./src/* during local development
27
- // This allows package-style imports to work during development
28
- config.resolve.alias = {
29
- ...config.resolve.alias,
30
- "hazo_auth/components": path.resolve(__dirname, "src/components"),
31
- "hazo_auth/lib": path.resolve(__dirname, "src/lib"),
32
- "hazo_auth/hooks": path.resolve(__dirname, "src/hooks"),
33
- "hazo_auth/server": path.resolve(__dirname, "src/server"),
34
- "hazo_auth/app": path.resolve(__dirname, "src/app"),
35
- };
36
-
37
- // Exclude sql.js from webpack bundling for API routes
38
- // These packages use Node.js module.exports which doesn't work in webpack context
39
- if (isServer) {
40
- config.externals = config.externals || [];
41
- // Add sql.js as external to prevent webpack from bundling it
42
- if (Array.isArray(config.externals)) {
43
- config.externals.push("sql.js");
44
- // Exclude hazo_notify from Edge runtime bundles (middleware)
45
- // hazo_notify is only available in Node.js runtime (server bundles), not Edge runtime
46
- // This ensures hazo_notify is loaded at runtime for API routes using Node.js runtime
47
- config.externals.push("hazo_notify");
48
- } else {
49
- config.externals = [config.externals, "sql.js", "hazo_notify"];
50
- }
51
- } else {
52
- // Client-side: exclude server-only files from client bundles
53
- config.resolve.alias = {
54
- ...config.resolve.alias,
55
- "@/lib/hazo_connect_setup.server": false,
56
- "@/lib/hazo_connect_instance.server": false,
57
- "@/lib/login_config.server": false,
58
- // Exclude hazo_notify from client bundles
59
- "hazo_notify": false,
60
- };
61
- }
62
- return config;
63
- },
64
- };
65
-
66
- export default next_config;
67
-
@@ -1,8 +0,0 @@
1
- /** @type {import('postcss-load-config').Config} */
2
- const config = {
3
- plugins: {
4
- tailwindcss: {},
5
- },
6
- };
7
-
8
- export default config;
package/public/file.svg DELETED
@@ -1 +0,0 @@
1
- <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
package/public/globe.svg DELETED
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
package/public/next.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
package/public/vercel.svg DELETED
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
package/public/window.svg DELETED
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
@@ -1,118 +0,0 @@
1
- // file_description: script to apply database migrations directly to SQLite database
2
- // Run with: npx tsx scripts/apply_migration.ts
3
- // section: imports
4
- import Database from "better-sqlite3";
5
- import path from "path";
6
- import fs from "fs";
7
-
8
- // section: helpers
9
- function get_database_path(): string {
10
- // Read from hazo_auth_config.ini or use default
11
- const config_path = path.resolve(process.cwd(), "hazo_auth_config.ini");
12
- let sqlite_path: string | undefined;
13
-
14
- if (fs.existsSync(config_path)) {
15
- try {
16
- const config_content = fs.readFileSync(config_path, "utf-8");
17
- const sqlite_path_match = config_content.match(/sqlite_path\s*=\s*(.+)/);
18
- if (sqlite_path_match) {
19
- sqlite_path = sqlite_path_match[1].trim();
20
- }
21
- } catch (error) {
22
- console.warn("Could not read hazo_auth_config.ini, using default path");
23
- }
24
- }
25
-
26
- // Default path if not found in config
27
- if (!sqlite_path) {
28
- sqlite_path = "__tests__/fixtures/hazo_auth.sqlite";
29
- }
30
-
31
- // Resolve to absolute path
32
- const resolved_path = path.isAbsolute(sqlite_path)
33
- ? sqlite_path
34
- : path.resolve(process.cwd(), sqlite_path);
35
-
36
- return path.normalize(resolved_path);
37
- }
38
-
39
- function apply_migration_sql(db: Database.Database, sql: string): void {
40
- // Remove comments (lines starting with --)
41
- const sql_without_comments = sql
42
- .split("\n")
43
- .filter((line) => !line.trim().startsWith("--"))
44
- .join("\n");
45
-
46
- // Split by semicolon and execute each statement
47
- const statements = sql_without_comments
48
- .split(";")
49
- .map((stmt) => stmt.trim())
50
- .filter((stmt) => stmt.length > 0);
51
-
52
- console.log(`Found ${statements.length} SQL statement(s) to execute\n`);
53
-
54
- for (let i = 0; i < statements.length; i++) {
55
- const statement = statements[i];
56
- try {
57
- db.exec(statement + ";");
58
- console.log(`✓ [${i + 1}/${statements.length}] Executed:`, statement.substring(0, 100));
59
- } catch (error) {
60
- // Check if error is because column/index already exists
61
- const error_message = error instanceof Error ? error.message : String(error);
62
- if (
63
- error_message.includes("duplicate column") ||
64
- error_message.includes("already exists") ||
65
- error_message.includes("UNIQUE constraint failed") ||
66
- error_message.includes("index already exists")
67
- ) {
68
- console.log(`⚠ [${i + 1}/${statements.length}] Already exists, skipping:`, statement.substring(0, 100));
69
- } else {
70
- console.error(`✗ [${i + 1}/${statements.length}] Error:`, error_message);
71
- throw error;
72
- }
73
- }
74
- }
75
- }
76
-
77
- // section: main
78
- function main() {
79
- const db_path = get_database_path();
80
-
81
- console.log("Applying migration to database:", db_path);
82
-
83
- if (!fs.existsSync(db_path)) {
84
- console.error("Database file not found:", db_path);
85
- process.exit(1);
86
- }
87
-
88
- // Get migration file from command line argument or use default
89
- const migration_file_arg = process.argv[2];
90
- const migration_file = migration_file_arg
91
- ? path.resolve(process.cwd(), migration_file_arg)
92
- : path.resolve(process.cwd(), "migrations", "002_add_name_to_hazo_users.sql");
93
-
94
- if (!fs.existsSync(migration_file)) {
95
- console.error("Migration file not found:", migration_file);
96
- console.error("\nUsage: npx tsx scripts/apply_migration.ts [migration_file_path]");
97
- process.exit(1);
98
- }
99
-
100
- const db = new Database(db_path);
101
-
102
- try {
103
- const migration_sql = fs.readFileSync(migration_file, "utf-8");
104
-
105
- console.log(`\nApplying migration: ${path.basename(migration_file)}`);
106
- apply_migration_sql(db, migration_sql);
107
-
108
- console.log("\n✓ Migration applied successfully!");
109
- } catch (error) {
110
- console.error("Error applying migration:", error);
111
- process.exit(1);
112
- } finally {
113
- db.close();
114
- }
115
- }
116
-
117
- main();
118
-
@@ -1,378 +0,0 @@
1
- // file_description: script to initialize users, roles, and permissions from configuration
2
- // Run with: npx tsx scripts/init_users.ts init_users
3
- // section: imports
4
- import { get_hazo_connect_instance } from "../src/lib/hazo_connect_instance.server";
5
- import { createCrudService } from "hazo_connect/server";
6
- import { get_user_management_config } from "../src/lib/user_management_config.server";
7
- import { get_config_value } from "../src/lib/config/config_loader.server";
8
- import { create_app_logger } from "../src/lib/app_logger";
9
-
10
- // section: types
11
- type InitSummary = {
12
- permissions: {
13
- inserted: string[];
14
- existing: string[];
15
- };
16
- role: {
17
- inserted: boolean;
18
- existing: boolean;
19
- role_id: string | null;
20
- };
21
- role_permissions: {
22
- inserted: number;
23
- existing: number;
24
- };
25
- user_role: {
26
- inserted: boolean;
27
- existing: boolean;
28
- };
29
- };
30
-
31
- // section: helpers
32
- /**
33
- * Displays help information for available commands
34
- */
35
- function show_help(): void {
36
- console.log(`
37
- hazo_auth CLI - User and Permission Management
38
-
39
- Usage: npx tsx scripts/init_users.ts <command>
40
-
41
- Available Commands:
42
- init_users Initialize users, roles, and permissions from configuration
43
- - Reads permissions from hazo_auth_config.ini [hazo_auth__user_management] application_permission_list_defaults
44
- - Creates default_super_user_role in hazo_roles
45
- - Assigns all permissions to the super user role
46
- - Finds user by email from hazo_auth_config.ini [hazo_auth__initial_setup] default_super_user_email
47
- - Assigns super user role to the user
48
- - Provides summary of what was inserted vs what already existed
49
-
50
- help Show this help message
51
-
52
- Configuration:
53
- Add the following to hazo_auth_config.ini:
54
-
55
- [hazo_auth__user_management]
56
- application_permission_list_defaults = admin_user_management,admin_role_management,admin_permission_management
57
-
58
- [hazo_auth__initial_setup]
59
- default_super_user_email = admin@example.com
60
-
61
- Examples:
62
- npx tsx scripts/init_users.ts init_users
63
- npx tsx scripts/init_users.ts help
64
- `);
65
- }
66
-
67
- /**
68
- * Initializes users, roles, and permissions from configuration
69
- */
70
- async function init_users(): Promise<void> {
71
- const logger = create_app_logger();
72
- const summary: InitSummary = {
73
- permissions: {
74
- inserted: [],
75
- existing: [],
76
- },
77
- role: {
78
- inserted: false,
79
- existing: false,
80
- role_id: null,
81
- },
82
- role_permissions: {
83
- inserted: 0,
84
- existing: 0,
85
- },
86
- user_role: {
87
- inserted: false,
88
- existing: false,
89
- },
90
- };
91
-
92
- try {
93
- console.log("Initializing users, roles, and permissions from configuration...\n");
94
-
95
- // Get hazo_connect instance
96
- const hazoConnect = get_hazo_connect_instance();
97
- const permissions_service = createCrudService(hazoConnect, "hazo_permissions");
98
- const roles_service = createCrudService(hazoConnect, "hazo_roles");
99
- const role_permissions_service = createCrudService(hazoConnect, "hazo_role_permissions");
100
- const users_service = createCrudService(hazoConnect, "hazo_users");
101
- const user_roles_service = createCrudService(hazoConnect, "hazo_user_roles");
102
-
103
- // 1. Get permissions from config
104
- const config = get_user_management_config();
105
- const permission_names = config.application_permission_list_defaults || [];
106
-
107
- if (permission_names.length === 0) {
108
- console.log("⚠ No permissions found in configuration.");
109
- console.log(" Add permissions to [hazo_auth__user_management] application_permission_list_defaults\n");
110
- return;
111
- }
112
-
113
- console.log(`Found ${permission_names.length} permission(s) in configuration:`);
114
- permission_names.forEach((name) => console.log(` - ${name}`));
115
- console.log();
116
-
117
- // 2. Add permissions to hazo_permissions table
118
- const permission_id_map: Record<string, string> = {};
119
- const now = new Date().toISOString();
120
-
121
- for (const permission_name of permission_names) {
122
- const trimmed_name = permission_name.trim();
123
- if (!trimmed_name) continue;
124
-
125
- // Check if permission already exists
126
- const existing_permissions = await permissions_service.findBy({
127
- permission_name: trimmed_name,
128
- });
129
-
130
- if (Array.isArray(existing_permissions) && existing_permissions.length > 0) {
131
- const existing_permission = existing_permissions[0];
132
- const perm_id = existing_permission.id as string;
133
- permission_id_map[trimmed_name] = perm_id;
134
- summary.permissions.existing.push(trimmed_name);
135
- console.log(`✓ Permission already exists: ${trimmed_name} (ID: ${perm_id})`);
136
- } else {
137
- // Insert new permission
138
- const new_permission = await permissions_service.insert({
139
- permission_name: trimmed_name,
140
- description: `Permission for ${trimmed_name}`,
141
- created_at: now,
142
- changed_at: now,
143
- });
144
-
145
- const perm_id = Array.isArray(new_permission)
146
- ? (new_permission[0] as { id: string }).id
147
- : (new_permission as { id: string }).id;
148
- permission_id_map[trimmed_name] = perm_id;
149
- summary.permissions.inserted.push(trimmed_name);
150
- console.log(`✓ Inserted permission: ${trimmed_name} (ID: ${perm_id})`);
151
- }
152
- }
153
-
154
- console.log();
155
-
156
- // 3. Create or get default_super_user_role
157
- const role_name = "default_super_user_role";
158
- const existing_roles = await roles_service.findBy({
159
- role_name,
160
- });
161
-
162
- let role_id: string;
163
- if (Array.isArray(existing_roles) && existing_roles.length > 0) {
164
- role_id = existing_roles[0].id as string;
165
- summary.role.existing = true;
166
- summary.role.role_id = role_id;
167
- console.log(`✓ Role already exists: ${role_name} (ID: ${role_id})`);
168
- } else {
169
- const new_role = await roles_service.insert({
170
- role_name,
171
- created_at: now,
172
- changed_at: now,
173
- });
174
-
175
- role_id = Array.isArray(new_role)
176
- ? (new_role[0] as { id: string }).id
177
- : (new_role as { id: string }).id;
178
- summary.role.inserted = true;
179
- summary.role.role_id = role_id;
180
- console.log(`✓ Created role: ${role_name} (ID: ${role_id})`);
181
- }
182
-
183
- console.log();
184
-
185
- // 4. Assign all permissions to the role
186
- const permission_ids = Object.values(permission_id_map);
187
-
188
- for (const permission_id of permission_ids) {
189
- // Check if role-permission assignment already exists
190
- const existing_assignments = await role_permissions_service.findBy({
191
- role_id,
192
- permission_id,
193
- });
194
-
195
- if (Array.isArray(existing_assignments) && existing_assignments.length > 0) {
196
- summary.role_permissions.existing++;
197
- const perm_name = Object.keys(permission_id_map).find(
198
- (key) => permission_id_map[key] === permission_id,
199
- );
200
- console.log(`✓ Role-permission already exists: ${role_name} -> ${perm_name}`);
201
- } else {
202
- await role_permissions_service.insert({
203
- role_id,
204
- permission_id,
205
- created_at: now,
206
- changed_at: now,
207
- });
208
- summary.role_permissions.inserted++;
209
- const perm_name = Object.keys(permission_id_map).find(
210
- (key) => permission_id_map[key] === permission_id,
211
- );
212
- console.log(`✓ Assigned permission to role: ${role_name} -> ${perm_name}`);
213
- }
214
- }
215
-
216
- console.log();
217
-
218
- // 5. Get super user email from config
219
- const super_user_email = get_config_value(
220
- "hazo_auth__initial_setup",
221
- "default_super_user_email",
222
- "",
223
- ).trim();
224
-
225
- if (!super_user_email) {
226
- console.log("⚠ No super user email found in configuration.");
227
- console.log(" Add [hazo_auth__initial_setup] default_super_user_email to config\n");
228
- print_summary(summary);
229
- return;
230
- }
231
-
232
- console.log(`Looking up user with email: ${super_user_email}`);
233
-
234
- // 6. Find user by email
235
- const users = await users_service.findBy({
236
- email_address: super_user_email,
237
- });
238
-
239
- if (!Array.isArray(users) || users.length === 0) {
240
- console.log(`✗ User not found with email: ${super_user_email}`);
241
- console.log(" Please ensure the user exists in the database before running this script.\n");
242
- print_summary(summary);
243
- return;
244
- }
245
-
246
- const user = users[0];
247
- const user_id = user.id as string;
248
- console.log(`✓ Found user: ${super_user_email} (ID: ${user_id})`);
249
- console.log();
250
-
251
- // 7. Assign role to user
252
- const existing_user_roles = await user_roles_service.findBy({
253
- user_id,
254
- role_id,
255
- });
256
-
257
- if (Array.isArray(existing_user_roles) && existing_user_roles.length > 0) {
258
- summary.user_role.existing = true;
259
- console.log(`✓ User already has role assigned: ${user_id} -> ${role_name}`);
260
- } else {
261
- await user_roles_service.insert({
262
- user_id,
263
- role_id,
264
- created_at: now,
265
- changed_at: now,
266
- });
267
- summary.user_role.inserted = true;
268
- console.log(`✓ Assigned role to user: ${user_id} -> ${role_name}`);
269
- }
270
-
271
- console.log();
272
-
273
- // 8. Print summary
274
- print_summary(summary);
275
-
276
- logger.info("init_users_completed", {
277
- filename: "init_users.ts",
278
- line_number: 0,
279
- summary,
280
- });
281
- } catch (error) {
282
- const error_message = error instanceof Error ? error.message : "Unknown error";
283
- const error_stack = error instanceof Error ? error.stack : undefined;
284
-
285
- console.error("\n✗ Error initializing users:");
286
- console.error(` ${error_message}`);
287
- if (error_stack) {
288
- console.error("\nStack trace:");
289
- console.error(error_stack);
290
- }
291
-
292
- const logger = create_app_logger();
293
- logger.error("init_users_failed", {
294
- filename: "init_users.ts",
295
- line_number: 0,
296
- error_message,
297
- error_stack,
298
- });
299
-
300
- process.exit(1);
301
- }
302
- }
303
-
304
- /**
305
- * Prints a summary of what was inserted vs what already existed
306
- */
307
- function print_summary(summary: InitSummary): void {
308
- console.log("=".repeat(60));
309
- console.log("INITIALIZATION SUMMARY");
310
- console.log("=".repeat(60));
311
- console.log();
312
-
313
- // Permissions summary
314
- console.log("Permissions:");
315
- if (summary.permissions.inserted.length > 0) {
316
- console.log(` ✓ Inserted (${summary.permissions.inserted.length}):`);
317
- summary.permissions.inserted.forEach((name) => console.log(` - ${name}`));
318
- }
319
- if (summary.permissions.existing.length > 0) {
320
- console.log(` ⊙ Already existed (${summary.permissions.existing.length}):`);
321
- summary.permissions.existing.forEach((name) => console.log(` - ${name}`));
322
- }
323
- console.log();
324
-
325
- // Role summary
326
- console.log("Role:");
327
- if (summary.role.inserted) {
328
- console.log(` ✓ Inserted: default_super_user_role (ID: ${summary.role.role_id})`);
329
- }
330
- if (summary.role.existing) {
331
- console.log(` ⊙ Already existed: default_super_user_role (ID: ${summary.role.role_id})`);
332
- }
333
- console.log();
334
-
335
- // Role permissions summary
336
- console.log("Role-Permission Assignments:");
337
- if (summary.role_permissions.inserted > 0) {
338
- console.log(` ✓ Inserted: ${summary.role_permissions.inserted} assignment(s)`);
339
- }
340
- if (summary.role_permissions.existing > 0) {
341
- console.log(` ⊙ Already existed: ${summary.role_permissions.existing} assignment(s)`);
342
- }
343
- console.log();
344
-
345
- // User role summary
346
- console.log("User-Role Assignment:");
347
- if (summary.user_role.inserted) {
348
- console.log(` ✓ Inserted: Super user role assigned to user`);
349
- }
350
- if (summary.user_role.existing) {
351
- console.log(` ⊙ Already existed: User already has super user role`);
352
- }
353
- console.log();
354
-
355
- console.log("=".repeat(60));
356
- }
357
-
358
- // section: main
359
- function main(): void {
360
- const command = process.argv[2];
361
-
362
- if (!command || command === "help" || command === "--help" || command === "-h") {
363
- show_help();
364
- return;
365
- }
366
-
367
- if (command === "init_users") {
368
- void init_users();
369
- } else {
370
- console.error(`Unknown command: ${command}\n`);
371
- show_help();
372
- process.exit(1);
373
- }
374
- }
375
-
376
- main();
377
-
378
-