hazo_auth 1.4.2 → 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 (320) hide show
  1. package/SETUP_CHECKLIST.md +708 -0
  2. package/dist/app/api/hazo_auth/change_password/route.d.ts +8 -0
  3. package/dist/app/api/hazo_auth/change_password/route.d.ts.map +1 -0
  4. package/dist/app/api/hazo_auth/change_password/route.js +98 -0
  5. package/dist/app/api/hazo_auth/forgot_password/route.d.ts +8 -0
  6. package/dist/app/api/hazo_auth/forgot_password/route.d.ts.map +1 -0
  7. package/dist/app/api/hazo_auth/forgot_password/route.js +78 -0
  8. package/dist/app/api/hazo_auth/get_auth/route.d.ts +10 -0
  9. package/dist/app/api/hazo_auth/get_auth/route.d.ts.map +1 -0
  10. package/dist/app/api/hazo_auth/get_auth/route.js +63 -0
  11. package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts +14 -0
  12. package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts.map +1 -0
  13. package/dist/app/api/hazo_auth/invalidate_cache/route.js +96 -0
  14. package/dist/app/api/hazo_auth/library_photos/route.d.ts +13 -0
  15. package/dist/app/api/hazo_auth/library_photos/route.d.ts.map +1 -0
  16. package/dist/app/api/hazo_auth/library_photos/route.js +55 -0
  17. package/dist/app/api/hazo_auth/login/route.d.ts +12 -0
  18. package/dist/app/api/hazo_auth/login/route.d.ts.map +1 -0
  19. package/dist/app/api/hazo_auth/login/route.js +140 -0
  20. package/dist/app/api/hazo_auth/logout/route.d.ts +8 -0
  21. package/dist/app/api/hazo_auth/logout/route.d.ts.map +1 -0
  22. package/dist/app/api/hazo_auth/logout/route.js +71 -0
  23. package/dist/app/api/hazo_auth/me/route.d.ts +3 -0
  24. package/dist/app/api/hazo_auth/me/route.d.ts.map +1 -0
  25. package/dist/app/api/hazo_auth/me/route.js +34 -0
  26. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts +7 -0
  27. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts.map +1 -0
  28. package/dist/app/api/hazo_auth/profile_picture/[filename]/route.js +43 -0
  29. package/dist/app/api/hazo_auth/register/route.d.ts +9 -0
  30. package/dist/app/api/hazo_auth/register/route.d.ts.map +1 -0
  31. package/dist/app/api/hazo_auth/register/route.js +80 -0
  32. package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts +8 -0
  33. package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts.map +1 -0
  34. package/dist/app/api/hazo_auth/remove_profile_picture/route.js +64 -0
  35. package/dist/app/api/hazo_auth/resend_verification/route.d.ts +8 -0
  36. package/dist/app/api/hazo_auth/resend_verification/route.d.ts.map +1 -0
  37. package/dist/app/api/hazo_auth/resend_verification/route.js +79 -0
  38. package/dist/app/api/hazo_auth/reset_password/route.d.ts +8 -0
  39. package/dist/app/api/hazo_auth/reset_password/route.d.ts.map +1 -0
  40. package/dist/app/api/hazo_auth/reset_password/route.js +76 -0
  41. package/dist/app/api/hazo_auth/update_user/route.d.ts +9 -0
  42. package/dist/app/api/hazo_auth/update_user/route.d.ts.map +1 -0
  43. package/dist/app/api/hazo_auth/update_user/route.js +95 -0
  44. package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts +9 -0
  45. package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts.map +1 -0
  46. package/dist/app/api/hazo_auth/upload_profile_picture/route.js +204 -0
  47. package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts +6 -0
  48. package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts.map +1 -0
  49. package/dist/app/api/hazo_auth/validate_reset_token/route.js +58 -0
  50. package/dist/app/api/hazo_auth/verify_email/route.d.ts +11 -0
  51. package/dist/app/api/hazo_auth/verify_email/route.d.ts.map +1 -0
  52. package/dist/app/api/hazo_auth/verify_email/route.js +63 -0
  53. package/dist/cli/generate.d.ts +2 -0
  54. package/dist/cli/generate.d.ts.map +1 -0
  55. package/dist/cli/generate.js +117 -0
  56. package/dist/cli/index.d.ts +3 -0
  57. package/dist/cli/index.d.ts.map +1 -0
  58. package/dist/cli/index.js +120 -0
  59. package/dist/cli/validate.d.ts +15 -0
  60. package/dist/cli/validate.d.ts.map +1 -0
  61. package/dist/cli/validate.js +509 -0
  62. package/dist/components/ui/card.d.ts +9 -0
  63. package/dist/components/ui/card.d.ts.map +1 -0
  64. package/dist/components/ui/card.js +45 -0
  65. package/dist/hooks/use-mobile.d.ts.map +1 -1
  66. package/dist/hooks/use-mobile.js +17 -3
  67. package/dist/server/routes/change_password.d.ts +2 -0
  68. package/dist/server/routes/change_password.d.ts.map +1 -0
  69. package/dist/server/routes/change_password.js +2 -0
  70. package/dist/server/routes/forgot_password.d.ts +2 -0
  71. package/dist/server/routes/forgot_password.d.ts.map +1 -0
  72. package/dist/server/routes/forgot_password.js +2 -0
  73. package/dist/server/routes/get_auth.d.ts +2 -0
  74. package/dist/server/routes/get_auth.d.ts.map +1 -0
  75. package/dist/server/routes/get_auth.js +2 -0
  76. package/dist/server/routes/index.d.ts +18 -0
  77. package/dist/server/routes/index.d.ts.map +1 -0
  78. package/dist/server/routes/index.js +24 -0
  79. package/dist/server/routes/invalidate_cache.d.ts +2 -0
  80. package/dist/server/routes/invalidate_cache.d.ts.map +1 -0
  81. package/dist/server/routes/invalidate_cache.js +2 -0
  82. package/dist/server/routes/library_photos.d.ts +2 -0
  83. package/dist/server/routes/library_photos.d.ts.map +1 -0
  84. package/dist/server/routes/library_photos.js +2 -0
  85. package/dist/server/routes/login.d.ts +2 -0
  86. package/dist/server/routes/login.d.ts.map +1 -0
  87. package/dist/server/routes/login.js +2 -0
  88. package/dist/server/routes/logout.d.ts +2 -0
  89. package/dist/server/routes/logout.d.ts.map +1 -0
  90. package/dist/server/routes/logout.js +2 -0
  91. package/dist/server/routes/me.d.ts +2 -0
  92. package/dist/server/routes/me.d.ts.map +1 -0
  93. package/dist/server/routes/me.js +2 -0
  94. package/dist/server/routes/profile_picture_filename.d.ts +2 -0
  95. package/dist/server/routes/profile_picture_filename.d.ts.map +1 -0
  96. package/dist/server/routes/profile_picture_filename.js +3 -0
  97. package/dist/server/routes/register.d.ts +2 -0
  98. package/dist/server/routes/register.d.ts.map +1 -0
  99. package/dist/server/routes/register.js +2 -0
  100. package/dist/server/routes/remove_profile_picture.d.ts +2 -0
  101. package/dist/server/routes/remove_profile_picture.d.ts.map +1 -0
  102. package/dist/server/routes/remove_profile_picture.js +2 -0
  103. package/dist/server/routes/resend_verification.d.ts +2 -0
  104. package/dist/server/routes/resend_verification.d.ts.map +1 -0
  105. package/dist/server/routes/resend_verification.js +2 -0
  106. package/dist/server/routes/reset_password.d.ts +2 -0
  107. package/dist/server/routes/reset_password.d.ts.map +1 -0
  108. package/dist/server/routes/reset_password.js +2 -0
  109. package/dist/server/routes/update_user.d.ts +2 -0
  110. package/dist/server/routes/update_user.d.ts.map +1 -0
  111. package/dist/server/routes/update_user.js +2 -0
  112. package/dist/server/routes/upload_profile_picture.d.ts +2 -0
  113. package/dist/server/routes/upload_profile_picture.d.ts.map +1 -0
  114. package/dist/server/routes/upload_profile_picture.js +2 -0
  115. package/dist/server/routes/validate_reset_token.d.ts +2 -0
  116. package/dist/server/routes/validate_reset_token.d.ts.map +1 -0
  117. package/dist/server/routes/validate_reset_token.js +2 -0
  118. package/dist/server/routes/verify_email.d.ts +2 -0
  119. package/dist/server/routes/verify_email.d.ts.map +1 -0
  120. package/dist/server/routes/verify_email.js +2 -0
  121. package/package.json +12 -17
  122. package/components.json +0 -22
  123. package/instrumentation.ts +0 -32
  124. package/migrations/001_add_token_type_to_refresh_tokens.sql +0 -14
  125. package/migrations/002_add_name_to_hazo_users.sql +0 -7
  126. package/migrations/003_add_url_on_logon_to_hazo_users.sql +0 -8
  127. package/next.config.mjs +0 -67
  128. package/postcss.config.mjs +0 -8
  129. package/public/file.svg +0 -1
  130. package/public/globe.svg +0 -1
  131. package/public/next.svg +0 -1
  132. package/public/vercel.svg +0 -1
  133. package/public/window.svg +0 -1
  134. package/scripts/apply_migration.ts +0 -118
  135. package/scripts/init_users.ts +0 -378
  136. package/src/app/api/hazo_auth/auth/upload_profile_picture/route.ts +0 -268
  137. package/src/app/api/hazo_auth/change_password/route.ts +0 -132
  138. package/src/app/api/hazo_auth/forgot_password/route.ts +0 -107
  139. package/src/app/api/hazo_auth/get_auth/route.ts +0 -89
  140. package/src/app/api/hazo_auth/invalidate_cache/route.ts +0 -139
  141. package/src/app/api/hazo_auth/library_photos/route.ts +0 -73
  142. package/src/app/api/hazo_auth/login/route.ts +0 -181
  143. package/src/app/api/hazo_auth/logout/route.ts +0 -89
  144. package/src/app/api/hazo_auth/me/route.ts +0 -47
  145. package/src/app/api/hazo_auth/profile_picture/[filename]/route.ts +0 -67
  146. package/src/app/api/hazo_auth/register/route.ts +0 -109
  147. package/src/app/api/hazo_auth/remove_profile_picture/route.ts +0 -86
  148. package/src/app/api/hazo_auth/resend_verification/route.ts +0 -108
  149. package/src/app/api/hazo_auth/reset_password/route.ts +0 -107
  150. package/src/app/api/hazo_auth/update_user/route.ts +0 -126
  151. package/src/app/api/hazo_auth/upload_profile_picture/route.ts +0 -268
  152. package/src/app/api/hazo_auth/user_management/permissions/route.ts +0 -367
  153. package/src/app/api/hazo_auth/user_management/roles/route.ts +0 -442
  154. package/src/app/api/hazo_auth/user_management/users/roles/route.ts +0 -367
  155. package/src/app/api/hazo_auth/user_management/users/route.ts +0 -239
  156. package/src/app/api/hazo_auth/validate_reset_token/route.ts +0 -83
  157. package/src/app/api/hazo_auth/verify_email/route.ts +0 -88
  158. package/src/app/api/migrations/apply/route.ts +0 -91
  159. package/src/app/favicon.ico +0 -0
  160. package/src/app/fonts/GeistMonoVF.woff +0 -0
  161. package/src/app/fonts/GeistVF.woff +0 -0
  162. package/src/app/globals.css +0 -89
  163. package/src/app/hazo_auth/forgot_password/forgot_password_page_client.tsx +0 -60
  164. package/src/app/hazo_auth/forgot_password/page.tsx +0 -24
  165. package/src/app/hazo_auth/login/login_page_client.tsx +0 -86
  166. package/src/app/hazo_auth/login/page.tsx +0 -38
  167. package/src/app/hazo_auth/my_settings/my_settings_page_client.tsx +0 -120
  168. package/src/app/hazo_auth/my_settings/page.tsx +0 -40
  169. package/src/app/hazo_auth/register/page.tsx +0 -36
  170. package/src/app/hazo_auth/register/register_page_client.tsx +0 -81
  171. package/src/app/hazo_auth/reset_password/page.tsx +0 -29
  172. package/src/app/hazo_auth/reset_password/reset_password_page_client.tsx +0 -81
  173. package/src/app/hazo_auth/user_management/page.tsx +0 -14
  174. package/src/app/hazo_auth/user_management/user_management_page_client.tsx +0 -16
  175. package/src/app/hazo_auth/verify_email/page.tsx +0 -24
  176. package/src/app/hazo_auth/verify_email/verify_email_page_client.tsx +0 -60
  177. package/src/app/hazo_connect/api/sqlite/data/route.ts +0 -203
  178. package/src/app/hazo_connect/api/sqlite/schema/route.ts +0 -45
  179. package/src/app/hazo_connect/api/sqlite/tables/route.ts +0 -36
  180. package/src/app/hazo_connect/sqlite_admin/page.tsx +0 -51
  181. package/src/app/hazo_connect/sqlite_admin/sqlite-admin-client.tsx +0 -984
  182. package/src/app/layout.tsx +0 -43
  183. package/src/app/page.tsx +0 -170
  184. package/src/components/index.ts +0 -7
  185. package/src/components/layouts/email_verification/config/email_verification_field_config.ts +0 -86
  186. package/src/components/layouts/email_verification/hooks/use_email_verification.ts +0 -297
  187. package/src/components/layouts/email_verification/index.tsx +0 -297
  188. package/src/components/layouts/forgot_password/config/forgot_password_field_config.ts +0 -58
  189. package/src/components/layouts/forgot_password/hooks/use_forgot_password_form.ts +0 -179
  190. package/src/components/layouts/forgot_password/index.tsx +0 -168
  191. package/src/components/layouts/index.ts +0 -26
  192. package/src/components/layouts/login/config/login_field_config.ts +0 -67
  193. package/src/components/layouts/login/hooks/use_login_form.ts +0 -286
  194. package/src/components/layouts/login/index.tsx +0 -252
  195. package/src/components/layouts/my_settings/components/editable_field.tsx +0 -177
  196. package/src/components/layouts/my_settings/components/password_change_dialog.tsx +0 -301
  197. package/src/components/layouts/my_settings/components/profile_picture_dialog.tsx +0 -385
  198. package/src/components/layouts/my_settings/components/profile_picture_display.tsx +0 -66
  199. package/src/components/layouts/my_settings/components/profile_picture_gravatar_tab.tsx +0 -143
  200. package/src/components/layouts/my_settings/components/profile_picture_library_tab.tsx +0 -311
  201. package/src/components/layouts/my_settings/components/profile_picture_upload_tab.tsx +0 -341
  202. package/src/components/layouts/my_settings/config/my_settings_field_config.ts +0 -61
  203. package/src/components/layouts/my_settings/hooks/use_my_settings.ts +0 -458
  204. package/src/components/layouts/my_settings/index.tsx +0 -351
  205. package/src/components/layouts/register/config/register_field_config.ts +0 -101
  206. package/src/components/layouts/register/hooks/use_register_form.ts +0 -275
  207. package/src/components/layouts/register/index.tsx +0 -226
  208. package/src/components/layouts/reset_password/config/reset_password_field_config.ts +0 -86
  209. package/src/components/layouts/reset_password/hooks/use_reset_password_form.ts +0 -276
  210. package/src/components/layouts/reset_password/index.tsx +0 -294
  211. package/src/components/layouts/shared/components/already_logged_in_guard.tsx +0 -95
  212. package/src/components/layouts/shared/components/auth_page_shell.tsx +0 -36
  213. package/src/components/layouts/shared/components/field_error_message.tsx +0 -29
  214. package/src/components/layouts/shared/components/form_action_buttons.tsx +0 -64
  215. package/src/components/layouts/shared/components/form_field_wrapper.tsx +0 -44
  216. package/src/components/layouts/shared/components/form_header.tsx +0 -36
  217. package/src/components/layouts/shared/components/logout_button.tsx +0 -76
  218. package/src/components/layouts/shared/components/password_field.tsx +0 -72
  219. package/src/components/layouts/shared/components/profile_pic_menu.tsx +0 -321
  220. package/src/components/layouts/shared/components/profile_pic_menu_wrapper.tsx +0 -40
  221. package/src/components/layouts/shared/components/sidebar_layout_wrapper.tsx +0 -214
  222. package/src/components/layouts/shared/components/standalone_layout_wrapper.tsx +0 -53
  223. package/src/components/layouts/shared/components/two_column_auth_layout.tsx +0 -44
  224. package/src/components/layouts/shared/components/unauthorized_guard.tsx +0 -78
  225. package/src/components/layouts/shared/components/visual_panel.tsx +0 -41
  226. package/src/components/layouts/shared/config/layout_customization.ts +0 -95
  227. package/src/components/layouts/shared/data/layout_data_client.ts +0 -19
  228. package/src/components/layouts/shared/hooks/use_auth_status.ts +0 -103
  229. package/src/components/layouts/shared/hooks/use_hazo_auth.ts +0 -158
  230. package/src/components/layouts/shared/index.ts +0 -34
  231. package/src/components/layouts/shared/utils/ip_address.ts +0 -37
  232. package/src/components/layouts/shared/utils/validation.ts +0 -66
  233. package/src/components/layouts/user_management/components/roles_matrix.tsx +0 -607
  234. package/src/components/layouts/user_management/index.tsx +0 -1295
  235. package/src/components/ui/alert-dialog.tsx +0 -141
  236. package/src/components/ui/avatar.tsx +0 -50
  237. package/src/components/ui/button.tsx +0 -57
  238. package/src/components/ui/checkbox.tsx +0 -30
  239. package/src/components/ui/dialog.tsx +0 -122
  240. package/src/components/ui/dropdown-menu.tsx +0 -201
  241. package/src/components/ui/hazo_ui_tooltip.tsx +0 -67
  242. package/src/components/ui/index.ts +0 -22
  243. package/src/components/ui/input.tsx +0 -22
  244. package/src/components/ui/label.tsx +0 -26
  245. package/src/components/ui/separator.tsx +0 -31
  246. package/src/components/ui/sheet.tsx +0 -139
  247. package/src/components/ui/sidebar.tsx +0 -773
  248. package/src/components/ui/skeleton.tsx +0 -15
  249. package/src/components/ui/sonner.tsx +0 -31
  250. package/src/components/ui/switch.tsx +0 -29
  251. package/src/components/ui/table.tsx +0 -120
  252. package/src/components/ui/tabs.tsx +0 -55
  253. package/src/components/ui/tooltip.tsx +0 -32
  254. package/src/components/ui/vertical-tabs.tsx +0 -59
  255. package/src/hooks/use-mobile.tsx +0 -19
  256. package/src/index.ts +0 -7
  257. package/src/lib/already_logged_in_config.server.ts +0 -46
  258. package/src/lib/app_logger.ts +0 -24
  259. package/src/lib/auth/auth_cache.ts +0 -220
  260. package/src/lib/auth/auth_rate_limiter.ts +0 -121
  261. package/src/lib/auth/auth_types.ts +0 -65
  262. package/src/lib/auth/auth_utils.server.ts +0 -196
  263. package/src/lib/auth/hazo_get_auth.server.ts +0 -333
  264. package/src/lib/auth/index.ts +0 -23
  265. package/src/lib/auth/server_auth.ts +0 -88
  266. package/src/lib/auth_utility_config.server.ts +0 -136
  267. package/src/lib/config/config_loader.server.ts +0 -164
  268. package/src/lib/email_verification_config.server.ts +0 -32
  269. package/src/lib/file_types_config.server.ts +0 -25
  270. package/src/lib/forgot_password_config.server.ts +0 -32
  271. package/src/lib/hazo_connect_instance.server.ts +0 -101
  272. package/src/lib/hazo_connect_setup.server.ts +0 -194
  273. package/src/lib/hazo_connect_setup.ts +0 -54
  274. package/src/lib/index.ts +0 -44
  275. package/src/lib/login_config.server.ts +0 -71
  276. package/src/lib/messages_config.server.ts +0 -45
  277. package/src/lib/migrations/apply_migration.ts +0 -105
  278. package/src/lib/my_settings_config.server.ts +0 -135
  279. package/src/lib/password_requirements_config.server.ts +0 -39
  280. package/src/lib/profile_pic_menu_config.server.ts +0 -138
  281. package/src/lib/profile_picture_config.server.ts +0 -56
  282. package/src/lib/register_config.server.ts +0 -73
  283. package/src/lib/reset_password_config.server.ts +0 -75
  284. package/src/lib/services/email_service.ts +0 -581
  285. package/src/lib/services/email_verification_service.ts +0 -270
  286. package/src/lib/services/index.ts +0 -15
  287. package/src/lib/services/login_service.ts +0 -134
  288. package/src/lib/services/password_change_service.ts +0 -154
  289. package/src/lib/services/password_reset_service.ts +0 -405
  290. package/src/lib/services/profile_picture_remove_service.ts +0 -120
  291. package/src/lib/services/profile_picture_service.ts +0 -215
  292. package/src/lib/services/profile_picture_source_mapper.ts +0 -62
  293. package/src/lib/services/registration_service.ts +0 -184
  294. package/src/lib/services/token_service.ts +0 -240
  295. package/src/lib/services/user_profiles_service.ts +0 -143
  296. package/src/lib/services/user_update_service.ts +0 -141
  297. package/src/lib/ui_shell_config.server.ts +0 -73
  298. package/src/lib/ui_sizes_config.server.ts +0 -37
  299. package/src/lib/user_fields_config.server.ts +0 -31
  300. package/src/lib/user_management_config.server.ts +0 -39
  301. package/src/lib/utils/api_route_helpers.ts +0 -60
  302. package/src/lib/utils/error_sanitizer.ts +0 -75
  303. package/src/lib/utils.ts +0 -11
  304. package/src/middleware.ts +0 -94
  305. package/src/routes/index.ts +0 -34
  306. package/src/server/config/config_loader.ts +0 -496
  307. package/src/server/index.ts +0 -38
  308. package/src/server/logging/logger_service.ts +0 -56
  309. package/src/server/routes/root_router.ts +0 -16
  310. package/src/server/server.ts +0 -28
  311. package/src/server/types/app_types.ts +0 -74
  312. package/src/server/types/express.d.ts +0 -16
  313. package/src/stories/email_verification_layout.stories.tsx +0 -137
  314. package/src/stories/forgot_password_layout.stories.tsx +0 -85
  315. package/src/stories/login_layout.stories.tsx +0 -85
  316. package/src/stories/project_overview.stories.tsx +0 -33
  317. package/src/stories/register_layout.stories.tsx +0 -107
  318. package/tailwind.config.ts +0 -77
  319. package/tsconfig.build.json +0 -36
  320. package/tsconfig.json +0 -28
@@ -1,138 +0,0 @@
1
- // file_description: server-only helper to read profile picture menu configuration from hazo_auth_config.ini
2
- // section: imports
3
- import { get_config_value, get_config_boolean, get_config_array } from "./config/config_loader.server";
4
-
5
- // section: types
6
- // Note: These types are also used in client components, but TypeScript types are erased at runtime
7
- // so importing from a server file is safe for type-only imports
8
- export type MenuItemType = "info" | "link" | "separator";
9
-
10
- export type ProfilePicMenuMenuItem = {
11
- type: MenuItemType;
12
- label?: string; // For info and link types
13
- value?: string; // For info type (e.g., user name, email)
14
- href?: string; // For link type
15
- order: number; // Ordering within type group
16
- id: string; // Unique identifier for the item
17
- };
18
-
19
- export type ProfilePicMenuConfig = {
20
- show_single_button: boolean;
21
- sign_up_label: string;
22
- sign_in_label: string;
23
- register_path: string;
24
- login_path: string;
25
- settings_path: string;
26
- logout_path: string;
27
- custom_menu_items: ProfilePicMenuMenuItem[];
28
- };
29
-
30
- // section: helpers
31
- /**
32
- * Parses custom menu items from config string
33
- * Format: "type:label:order" or "type:label:href:order" for links
34
- * Example: "link:My Custom Link:/custom:3"
35
- * @param items_string - Comma-separated string of menu items
36
- * @returns Array of parsed menu items
37
- */
38
- function parse_custom_menu_items(items_string: string[]): ProfilePicMenuMenuItem[] {
39
- const items: ProfilePicMenuMenuItem[] = [];
40
-
41
- items_string.forEach((item_string, index) => {
42
- const parts = item_string.split(":").map((p) => p.trim());
43
-
44
- if (parts.length < 3) {
45
- return; // Invalid format, skip
46
- }
47
-
48
- const type = parts[0] as MenuItemType;
49
- if (type !== "info" && type !== "link" && type !== "separator") {
50
- return; // Invalid type, skip
51
- }
52
-
53
- if (type === "separator") {
54
- const order = parseInt(parts[1] || "1", 10);
55
- items.push({
56
- type: "separator",
57
- order: isNaN(order) ? 1 : order,
58
- id: `custom_separator_${index}`,
59
- });
60
- return;
61
- }
62
-
63
- if (type === "info") {
64
- const label = parts[1] || "";
65
- const value = parts[2] || "";
66
- const order = parseInt(parts[3] || "1", 10);
67
-
68
- if (!label || !value) {
69
- return; // Invalid format, skip
70
- }
71
-
72
- items.push({
73
- type: "info",
74
- label,
75
- value,
76
- order: isNaN(order) ? 1 : order,
77
- id: `custom_info_${index}`,
78
- });
79
- return;
80
- }
81
-
82
- if (type === "link") {
83
- const label = parts[1] || "";
84
- const href = parts[2] || "";
85
- const order = parseInt(parts[3] || "1", 10);
86
-
87
- if (!label || !href) {
88
- return; // Invalid format, skip
89
- }
90
-
91
- items.push({
92
- type: "link",
93
- label,
94
- href,
95
- order: isNaN(order) ? 1 : order,
96
- id: `custom_link_${index}`,
97
- });
98
- }
99
- });
100
-
101
- return items;
102
- }
103
-
104
- /**
105
- * Reads profile picture menu configuration from hazo_auth_config.ini file
106
- * Falls back to defaults if hazo_auth_config.ini is not found or section is missing
107
- * @returns Profile picture menu configuration options
108
- */
109
- export function get_profile_pic_menu_config(): ProfilePicMenuConfig {
110
- const section = "hazo_auth__profile_pic_menu";
111
-
112
- // Read button configuration
113
- const show_single_button = get_config_boolean(section, "show_single_button", false);
114
- const sign_up_label = get_config_value(section, "sign_up_label", "Sign Up");
115
- const sign_in_label = get_config_value(section, "sign_in_label", "Sign In");
116
- const register_path = get_config_value(section, "register_path", "/hazo_auth/register");
117
- const login_path = get_config_value(section, "login_path", "/hazo_auth/login");
118
-
119
- // Read menu paths
120
- const settings_path = get_config_value(section, "settings_path", "/hazo_auth/my_settings");
121
- const logout_path = get_config_value(section, "logout_path", "/api/hazo_auth/logout");
122
-
123
- // Read custom menu items
124
- const custom_items_string = get_config_array(section, "custom_menu_items", []);
125
- const custom_menu_items = parse_custom_menu_items(custom_items_string);
126
-
127
- return {
128
- show_single_button,
129
- sign_up_label,
130
- sign_in_label,
131
- register_path,
132
- login_path,
133
- settings_path,
134
- logout_path,
135
- custom_menu_items,
136
- };
137
- }
138
-
@@ -1,56 +0,0 @@
1
- // file_description: server-only helper to read profile picture configuration from hazo_auth_config.ini
2
- // section: imports
3
- import { get_config_boolean, get_config_value, get_config_number, read_config_section } from "./config/config_loader.server";
4
- import { create_app_logger } from "./app_logger";
5
-
6
- // section: types
7
- export type ProfilePictureConfig = {
8
- allow_photo_upload: boolean;
9
- upload_photo_path?: string;
10
- max_photo_size: number; // in bytes
11
- user_photo_default: boolean;
12
- user_photo_default_priority1: "gravatar" | "library";
13
- user_photo_default_priority2?: "library" | "gravatar";
14
- library_photo_path: string; // relative to public directory
15
- };
16
-
17
- // section: helpers
18
- /**
19
- * Reads profile picture configuration from hazo_auth_config.ini file
20
- * Falls back to defaults if hazo_auth_config.ini is not found or section is missing
21
- * @returns Profile picture configuration options
22
- */
23
- export function get_profile_picture_config(): ProfilePictureConfig {
24
- const logger = create_app_logger();
25
- const section = "hazo_auth__profile_picture";
26
-
27
- // Read configuration with defaults
28
- const allow_photo_upload = get_config_boolean(section, "allow_photo_upload", false);
29
- const upload_photo_path = get_config_value(section, "upload_photo_path", "");
30
- const max_photo_size = get_config_number(section, "max_photo_size", 51200); // Default: 50kb
31
- const user_photo_default = get_config_boolean(section, "user_photo_default", true);
32
- const user_photo_default_priority1 = (get_config_value(section, "user_photo_default_priority1", "gravatar") as "gravatar" | "library");
33
- const priority2_value = get_config_value(section, "user_photo_default_priority2", "");
34
- const user_photo_default_priority2 = priority2_value ? (priority2_value as "library" | "gravatar") : undefined;
35
- const library_photo_path = get_config_value(section, "library_photo_path", "/profile_pictures/library");
36
-
37
- // Validate upload_photo_path if allow_photo_upload is true
38
- if (allow_photo_upload && !upload_photo_path) {
39
- logger.warn("profile_picture_config_validation_failed", {
40
- filename: "profile_picture_config.server.ts",
41
- line_number: 0,
42
- message: "allow_photo_upload is true but upload_photo_path is not set",
43
- });
44
- }
45
-
46
- return {
47
- allow_photo_upload,
48
- upload_photo_path: upload_photo_path || undefined,
49
- max_photo_size,
50
- user_photo_default,
51
- user_photo_default_priority1,
52
- user_photo_default_priority2,
53
- library_photo_path,
54
- };
55
- }
56
-
@@ -1,73 +0,0 @@
1
- // file_description: server-only helper to read register layout configuration from hazo_auth_config.ini
2
- // section: imports
3
- import { get_config_boolean, get_config_value, read_config_section } from "./config/config_loader.server";
4
- import { get_password_requirements_config } from "./password_requirements_config.server";
5
- import { get_already_logged_in_config } from "./already_logged_in_config.server";
6
- import { get_user_fields_config } from "./user_fields_config.server";
7
-
8
- // section: types
9
- export type RegisterConfig = {
10
- showNameField: boolean;
11
- passwordRequirements: {
12
- minimum_length: number;
13
- require_uppercase: boolean;
14
- require_lowercase: boolean;
15
- require_number: boolean;
16
- require_special: boolean;
17
- };
18
- alreadyLoggedInMessage: string;
19
- showLogoutButton: boolean;
20
- showReturnHomeButton: boolean;
21
- returnHomeButtonLabel: string;
22
- returnHomePath: string;
23
- signInPath: string;
24
- signInLabel: string;
25
- };
26
-
27
- // section: helpers
28
- /**
29
- * Reads register layout configuration from hazo_auth_config.ini file
30
- * Falls back to defaults if hazo_auth_config.ini is not found or section is missing
31
- * @returns Register configuration options
32
- */
33
- export function get_register_config(): RegisterConfig {
34
- // Get shared user fields config (preferred) or fall back to register section for backwards compatibility
35
- const userFieldsConfig = get_user_fields_config();
36
- const register_section = read_config_section("hazo_auth__register_layout");
37
-
38
- // Use register section if explicitly set, otherwise use shared config
39
- const showNameField = register_section?.show_name_field !== undefined
40
- ? get_config_boolean("hazo_auth__register_layout", "show_name_field", true)
41
- : userFieldsConfig.show_name_field;
42
-
43
- // Get shared password requirements
44
- const passwordRequirements = get_password_requirements_config();
45
-
46
- // Get shared already logged in config
47
- const alreadyLoggedInConfig = get_already_logged_in_config();
48
-
49
- // Read sign in link configuration
50
- const signInPath = get_config_value(
51
- "hazo_auth__register_layout",
52
- "sign_in_path",
53
- "/hazo_auth/login"
54
- );
55
- const signInLabel = get_config_value(
56
- "hazo_auth__register_layout",
57
- "sign_in_label",
58
- "Sign in"
59
- );
60
-
61
- return {
62
- showNameField,
63
- passwordRequirements,
64
- alreadyLoggedInMessage: alreadyLoggedInConfig.message,
65
- showLogoutButton: alreadyLoggedInConfig.showLogoutButton,
66
- showReturnHomeButton: alreadyLoggedInConfig.showReturnHomeButton,
67
- returnHomeButtonLabel: alreadyLoggedInConfig.returnHomeButtonLabel,
68
- returnHomePath: alreadyLoggedInConfig.returnHomePath,
69
- signInPath,
70
- signInLabel,
71
- };
72
- }
73
-
@@ -1,75 +0,0 @@
1
- // file_description: server-only helper to read reset password layout configuration from hazo_auth_config.ini
2
- // section: imports
3
- import { get_config_value } from "./config/config_loader.server";
4
- import { get_already_logged_in_config } from "./already_logged_in_config.server";
5
- import { get_password_requirements_config } from "./password_requirements_config.server";
6
-
7
- // section: types
8
- export type ResetPasswordConfig = {
9
- errorMessage: string;
10
- successMessage: string;
11
- loginPath: string;
12
- forgotPasswordPath: string;
13
- alreadyLoggedInMessage: string;
14
- showLogoutButton: boolean;
15
- showReturnHomeButton: boolean;
16
- returnHomeButtonLabel: string;
17
- returnHomePath: string;
18
- passwordRequirements: {
19
- minimum_length: number;
20
- require_uppercase: boolean;
21
- require_lowercase: boolean;
22
- require_number: boolean;
23
- require_special: boolean;
24
- };
25
- };
26
-
27
- // section: helpers
28
- /**
29
- * Reads reset password layout configuration from hazo_auth_config.ini file
30
- * Falls back to defaults if hazo_auth_config.ini is not found or section is missing
31
- * @returns Reset password configuration options
32
- */
33
- export function get_reset_password_config(): ResetPasswordConfig {
34
- const section = "hazo_auth__reset_password_layout";
35
-
36
- // Get shared already logged in config
37
- const alreadyLoggedInConfig = get_already_logged_in_config();
38
-
39
- // Read error message (defaults to standard message)
40
- const errorMessage = get_config_value(
41
- section,
42
- "error_message",
43
- "Reset password link invalid or has expired. Please go to Reset Password page to get a new link."
44
- );
45
-
46
- // Read success message (defaults to standard message)
47
- const successMessage = get_config_value(
48
- section,
49
- "success_message",
50
- "Password reset successfully. Redirecting to login..."
51
- );
52
-
53
- // Read login path (defaults to "/hazo_auth/login")
54
- const loginPath = get_config_value(section, "login_path", "/hazo_auth/login");
55
-
56
- // Read forgot password path (defaults to "/hazo_auth/forgot_password")
57
- const forgotPasswordPath = get_config_value(section, "forgot_password_path", "/hazo_auth/forgot_password");
58
-
59
- // Get shared password requirements
60
- const passwordRequirements = get_password_requirements_config();
61
-
62
- return {
63
- errorMessage,
64
- successMessage,
65
- loginPath,
66
- forgotPasswordPath,
67
- alreadyLoggedInMessage: alreadyLoggedInConfig.message,
68
- showLogoutButton: alreadyLoggedInConfig.showLogoutButton,
69
- showReturnHomeButton: alreadyLoggedInConfig.showReturnHomeButton,
70
- returnHomeButtonLabel: alreadyLoggedInConfig.returnHomeButtonLabel,
71
- returnHomePath: alreadyLoggedInConfig.returnHomePath,
72
- passwordRequirements,
73
- };
74
- }
75
-