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.
- package/README.md +25 -38
- package/SETUP_CHECKLIST.md +708 -0
- package/dist/app/api/hazo_auth/change_password/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/change_password/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/change_password/route.js +98 -0
- package/dist/app/api/hazo_auth/forgot_password/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/forgot_password/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/forgot_password/route.js +78 -0
- package/dist/app/api/hazo_auth/get_auth/route.d.ts +10 -0
- package/dist/app/api/hazo_auth/get_auth/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/get_auth/route.js +63 -0
- package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts +14 -0
- package/dist/app/api/hazo_auth/invalidate_cache/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/invalidate_cache/route.js +96 -0
- package/dist/app/api/hazo_auth/library_photos/route.d.ts +13 -0
- package/dist/app/api/hazo_auth/library_photos/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/library_photos/route.js +55 -0
- package/dist/app/api/hazo_auth/login/route.d.ts +12 -0
- package/dist/app/api/hazo_auth/login/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/login/route.js +140 -0
- package/dist/app/api/hazo_auth/logout/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/logout/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/logout/route.js +71 -0
- package/dist/app/api/hazo_auth/me/route.d.ts +3 -0
- package/dist/app/api/hazo_auth/me/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/me/route.js +34 -0
- package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts +7 -0
- package/dist/app/api/hazo_auth/profile_picture/[filename]/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/profile_picture/[filename]/route.js +43 -0
- package/dist/app/api/hazo_auth/register/route.d.ts +9 -0
- package/dist/app/api/hazo_auth/register/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/register/route.js +80 -0
- package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/remove_profile_picture/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/remove_profile_picture/route.js +64 -0
- package/dist/app/api/hazo_auth/resend_verification/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/resend_verification/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/resend_verification/route.js +79 -0
- package/dist/app/api/hazo_auth/reset_password/route.d.ts +8 -0
- package/dist/app/api/hazo_auth/reset_password/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/reset_password/route.js +76 -0
- package/dist/app/api/hazo_auth/update_user/route.d.ts +9 -0
- package/dist/app/api/hazo_auth/update_user/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/update_user/route.js +95 -0
- package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts +9 -0
- package/dist/app/api/hazo_auth/upload_profile_picture/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/upload_profile_picture/route.js +204 -0
- package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts +6 -0
- package/dist/app/api/hazo_auth/validate_reset_token/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/validate_reset_token/route.js +58 -0
- package/dist/app/api/hazo_auth/verify_email/route.d.ts +11 -0
- package/dist/app/api/hazo_auth/verify_email/route.d.ts.map +1 -0
- package/dist/app/api/hazo_auth/verify_email/route.js +63 -0
- package/dist/cli/generate.d.ts +2 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +117 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +120 -0
- package/dist/cli/validate.d.ts +15 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +509 -0
- package/dist/components/layouts/email_verification/config/email_verification_field_config.d.ts +2 -2
- package/dist/components/layouts/email_verification/config/email_verification_field_config.d.ts.map +1 -1
- package/dist/components/layouts/email_verification/config/email_verification_field_config.js +1 -1
- package/dist/components/layouts/email_verification/hooks/use_email_verification.d.ts +2 -2
- package/dist/components/layouts/email_verification/hooks/use_email_verification.d.ts.map +1 -1
- package/dist/components/layouts/email_verification/hooks/use_email_verification.js +2 -2
- package/dist/components/layouts/email_verification/index.d.ts +3 -3
- package/dist/components/layouts/email_verification/index.d.ts.map +1 -1
- package/dist/components/layouts/email_verification/index.js +9 -9
- package/dist/components/layouts/forgot_password/config/forgot_password_field_config.d.ts +2 -2
- package/dist/components/layouts/forgot_password/config/forgot_password_field_config.d.ts.map +1 -1
- package/dist/components/layouts/forgot_password/config/forgot_password_field_config.js +1 -1
- package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.d.ts +2 -2
- package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.d.ts.map +1 -1
- package/dist/components/layouts/forgot_password/hooks/use_forgot_password_form.js +2 -2
- package/dist/components/layouts/forgot_password/index.d.ts +2 -2
- package/dist/components/layouts/forgot_password/index.d.ts.map +1 -1
- package/dist/components/layouts/forgot_password/index.js +8 -8
- package/dist/components/layouts/login/config/login_field_config.d.ts +2 -2
- package/dist/components/layouts/login/config/login_field_config.d.ts.map +1 -1
- package/dist/components/layouts/login/config/login_field_config.js +1 -1
- package/dist/components/layouts/login/hooks/use_login_form.d.ts +2 -2
- package/dist/components/layouts/login/hooks/use_login_form.d.ts.map +1 -1
- package/dist/components/layouts/login/hooks/use_login_form.js +4 -4
- package/dist/components/layouts/login/index.d.ts +2 -2
- package/dist/components/layouts/login/index.d.ts.map +1 -1
- package/dist/components/layouts/login/index.js +9 -9
- package/dist/components/layouts/my_settings/components/editable_field.js +3 -3
- package/dist/components/layouts/my_settings/components/password_change_dialog.d.ts +1 -1
- package/dist/components/layouts/my_settings/components/password_change_dialog.d.ts.map +1 -1
- package/dist/components/layouts/my_settings/components/password_change_dialog.js +4 -4
- package/dist/components/layouts/my_settings/components/profile_picture_dialog.js +7 -7
- package/dist/components/layouts/my_settings/components/profile_picture_display.js +1 -1
- package/dist/components/layouts/my_settings/components/profile_picture_gravatar_tab.js +3 -3
- package/dist/components/layouts/my_settings/components/profile_picture_library_tab.js +5 -5
- package/dist/components/layouts/my_settings/components/profile_picture_upload_tab.js +4 -4
- package/dist/components/layouts/my_settings/config/my_settings_field_config.d.ts +1 -1
- package/dist/components/layouts/my_settings/config/my_settings_field_config.d.ts.map +1 -1
- package/dist/components/layouts/my_settings/config/my_settings_field_config.js +1 -1
- package/dist/components/layouts/my_settings/hooks/use_my_settings.d.ts +1 -1
- package/dist/components/layouts/my_settings/hooks/use_my_settings.d.ts.map +1 -1
- package/dist/components/layouts/my_settings/hooks/use_my_settings.js +1 -1
- package/dist/components/layouts/my_settings/index.d.ts +2 -2
- package/dist/components/layouts/my_settings/index.d.ts.map +1 -1
- package/dist/components/layouts/my_settings/index.js +9 -9
- package/dist/components/layouts/register/config/register_field_config.d.ts +2 -2
- package/dist/components/layouts/register/config/register_field_config.d.ts.map +1 -1
- package/dist/components/layouts/register/config/register_field_config.js +1 -1
- package/dist/components/layouts/register/hooks/use_register_form.d.ts +3 -3
- package/dist/components/layouts/register/hooks/use_register_form.d.ts.map +1 -1
- package/dist/components/layouts/register/hooks/use_register_form.js +2 -2
- package/dist/components/layouts/register/index.d.ts +2 -2
- package/dist/components/layouts/register/index.d.ts.map +1 -1
- package/dist/components/layouts/register/index.js +9 -9
- package/dist/components/layouts/reset_password/config/reset_password_field_config.d.ts +2 -2
- package/dist/components/layouts/reset_password/config/reset_password_field_config.d.ts.map +1 -1
- package/dist/components/layouts/reset_password/config/reset_password_field_config.js +1 -1
- package/dist/components/layouts/reset_password/hooks/use_reset_password_form.d.ts +3 -3
- package/dist/components/layouts/reset_password/hooks/use_reset_password_form.d.ts.map +1 -1
- package/dist/components/layouts/reset_password/hooks/use_reset_password_form.js +2 -2
- package/dist/components/layouts/reset_password/index.d.ts +2 -2
- package/dist/components/layouts/reset_password/index.d.ts.map +1 -1
- package/dist/components/layouts/reset_password/index.js +8 -8
- package/dist/components/layouts/shared/components/already_logged_in_guard.js +4 -4
- package/dist/components/layouts/shared/components/auth_page_shell.js +3 -3
- package/dist/components/layouts/shared/components/form_action_buttons.d.ts +1 -1
- package/dist/components/layouts/shared/components/form_action_buttons.d.ts.map +1 -1
- package/dist/components/layouts/shared/components/form_action_buttons.js +1 -1
- package/dist/components/layouts/shared/components/form_field_wrapper.js +2 -2
- package/dist/components/layouts/shared/components/logout_button.js +2 -2
- package/dist/components/layouts/shared/components/password_field.js +3 -3
- package/dist/components/layouts/shared/components/profile_pic_menu.d.ts +1 -1
- package/dist/components/layouts/shared/components/profile_pic_menu.d.ts.map +1 -1
- package/dist/components/layouts/shared/components/profile_pic_menu.js +4 -4
- package/dist/components/layouts/shared/components/profile_pic_menu_wrapper.js +2 -2
- package/dist/components/layouts/shared/components/sidebar_layout_wrapper.js +3 -3
- package/dist/components/layouts/shared/components/standalone_layout_wrapper.js +1 -1
- package/dist/components/layouts/shared/components/two_column_auth_layout.js +1 -1
- package/dist/components/layouts/shared/components/unauthorized_guard.js +2 -2
- package/dist/components/layouts/shared/hooks/use_hazo_auth.d.ts +1 -1
- package/dist/components/layouts/shared/hooks/use_hazo_auth.d.ts.map +1 -1
- package/dist/components/layouts/shared/utils/validation.d.ts +1 -1
- package/dist/components/layouts/shared/utils/validation.d.ts.map +1 -1
- package/dist/components/layouts/user_management/components/roles_matrix.js +7 -7
- package/dist/components/layouts/user_management/index.js +11 -11
- package/dist/components/ui/alert-dialog.js +2 -2
- package/dist/components/ui/avatar.js +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +45 -0
- package/dist/components/ui/checkbox.js +1 -1
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/dropdown-menu.js +1 -1
- package/dist/components/ui/hazo_ui_tooltip.js +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/label.js +1 -1
- package/dist/components/ui/separator.js +1 -1
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/sidebar.d.ts +2 -2
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +8 -8
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/switch.js +1 -1
- package/dist/components/ui/table.js +1 -1
- package/dist/components/ui/tabs.js +1 -1
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/vertical-tabs.js +1 -1
- package/dist/hooks/use-mobile.d.ts.map +1 -1
- package/dist/hooks/use-mobile.js +17 -3
- package/dist/lib/already_logged_in_config.server.js +1 -1
- package/dist/lib/app_logger.js +1 -1
- package/dist/lib/auth/auth_cache.d.ts +1 -1
- package/dist/lib/auth/auth_cache.d.ts.map +1 -1
- package/dist/lib/auth/auth_utils.server.js +2 -2
- package/dist/lib/auth/hazo_get_auth.server.d.ts +1 -1
- package/dist/lib/auth/hazo_get_auth.server.d.ts.map +1 -1
- package/dist/lib/auth/hazo_get_auth.server.js +7 -7
- package/dist/lib/auth/server_auth.js +2 -2
- package/dist/lib/auth_utility_config.server.js +1 -1
- package/dist/lib/config/config_loader.server.js +1 -1
- package/dist/lib/email_verification_config.server.js +1 -1
- package/dist/lib/file_types_config.server.js +1 -1
- package/dist/lib/forgot_password_config.server.js +1 -1
- package/dist/lib/hazo_connect_instance.server.js +2 -2
- package/dist/lib/hazo_connect_setup.server.js +2 -2
- package/dist/lib/login_config.server.js +2 -2
- package/dist/lib/messages_config.server.js +1 -1
- package/dist/lib/my_settings_config.server.js +7 -7
- package/dist/lib/password_requirements_config.server.js +1 -1
- package/dist/lib/profile_pic_menu_config.server.js +1 -1
- package/dist/lib/profile_picture_config.server.js +2 -2
- package/dist/lib/register_config.server.js +4 -4
- package/dist/lib/reset_password_config.server.js +3 -3
- package/dist/lib/services/email_service.js +2 -2
- package/dist/lib/services/email_verification_service.js +3 -3
- package/dist/lib/services/login_service.js +3 -3
- package/dist/lib/services/password_change_service.js +3 -3
- package/dist/lib/services/password_reset_service.js +3 -3
- package/dist/lib/services/profile_picture_remove_service.js +3 -3
- package/dist/lib/services/profile_picture_service.d.ts +1 -1
- package/dist/lib/services/profile_picture_service.d.ts.map +1 -1
- package/dist/lib/services/profile_picture_service.js +5 -5
- package/dist/lib/services/registration_service.js +8 -8
- package/dist/lib/services/token_service.js +2 -2
- package/dist/lib/services/user_profiles_service.js +2 -2
- package/dist/lib/services/user_update_service.d.ts +1 -1
- package/dist/lib/services/user_update_service.d.ts.map +1 -1
- package/dist/lib/services/user_update_service.js +4 -4
- package/dist/lib/ui_shell_config.server.js +1 -1
- package/dist/lib/ui_sizes_config.server.js +1 -1
- package/dist/lib/user_fields_config.server.js +1 -1
- package/dist/lib/user_management_config.server.js +1 -1
- package/dist/lib/utils/error_sanitizer.d.ts +1 -1
- package/dist/lib/utils/error_sanitizer.d.ts.map +1 -1
- package/dist/server/config/config_loader.d.ts +1 -1
- package/dist/server/config/config_loader.d.ts.map +1 -1
- package/dist/server/config/config_loader.js +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/logging/logger_service.d.ts +1 -1
- package/dist/server/logging/logger_service.d.ts.map +1 -1
- package/dist/server/routes/change_password.d.ts +2 -0
- package/dist/server/routes/change_password.d.ts.map +1 -0
- package/dist/server/routes/change_password.js +2 -0
- package/dist/server/routes/forgot_password.d.ts +2 -0
- package/dist/server/routes/forgot_password.d.ts.map +1 -0
- package/dist/server/routes/forgot_password.js +2 -0
- package/dist/server/routes/get_auth.d.ts +2 -0
- package/dist/server/routes/get_auth.d.ts.map +1 -0
- package/dist/server/routes/get_auth.js +2 -0
- package/dist/server/routes/index.d.ts +18 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +24 -0
- package/dist/server/routes/invalidate_cache.d.ts +2 -0
- package/dist/server/routes/invalidate_cache.d.ts.map +1 -0
- package/dist/server/routes/invalidate_cache.js +2 -0
- package/dist/server/routes/library_photos.d.ts +2 -0
- package/dist/server/routes/library_photos.d.ts.map +1 -0
- package/dist/server/routes/library_photos.js +2 -0
- package/dist/server/routes/login.d.ts +2 -0
- package/dist/server/routes/login.d.ts.map +1 -0
- package/dist/server/routes/login.js +2 -0
- package/dist/server/routes/logout.d.ts +2 -0
- package/dist/server/routes/logout.d.ts.map +1 -0
- package/dist/server/routes/logout.js +2 -0
- package/dist/server/routes/me.d.ts +2 -0
- package/dist/server/routes/me.d.ts.map +1 -0
- package/dist/server/routes/me.js +2 -0
- package/dist/server/routes/profile_picture_filename.d.ts +2 -0
- package/dist/server/routes/profile_picture_filename.d.ts.map +1 -0
- package/dist/server/routes/profile_picture_filename.js +3 -0
- package/dist/server/routes/register.d.ts +2 -0
- package/dist/server/routes/register.d.ts.map +1 -0
- package/dist/server/routes/register.js +2 -0
- package/dist/server/routes/remove_profile_picture.d.ts +2 -0
- package/dist/server/routes/remove_profile_picture.d.ts.map +1 -0
- package/dist/server/routes/remove_profile_picture.js +2 -0
- package/dist/server/routes/resend_verification.d.ts +2 -0
- package/dist/server/routes/resend_verification.d.ts.map +1 -0
- package/dist/server/routes/resend_verification.js +2 -0
- package/dist/server/routes/reset_password.d.ts +2 -0
- package/dist/server/routes/reset_password.d.ts.map +1 -0
- package/dist/server/routes/reset_password.js +2 -0
- package/dist/server/routes/update_user.d.ts +2 -0
- package/dist/server/routes/update_user.d.ts.map +1 -0
- package/dist/server/routes/update_user.js +2 -0
- package/dist/server/routes/upload_profile_picture.d.ts +2 -0
- package/dist/server/routes/upload_profile_picture.d.ts.map +1 -0
- package/dist/server/routes/upload_profile_picture.js +2 -0
- package/dist/server/routes/validate_reset_token.d.ts +2 -0
- package/dist/server/routes/validate_reset_token.d.ts.map +1 -0
- package/dist/server/routes/validate_reset_token.js +2 -0
- package/dist/server/routes/verify_email.d.ts +2 -0
- package/dist/server/routes/verify_email.d.ts.map +1 -0
- package/dist/server/routes/verify_email.js +2 -0
- package/dist/server/server.js +2 -2
- package/package.json +14 -115
- package/components.json +0 -22
- package/instrumentation.ts +0 -32
- package/migrations/001_add_token_type_to_refresh_tokens.sql +0 -14
- package/migrations/002_add_name_to_hazo_users.sql +0 -7
- package/migrations/003_add_url_on_logon_to_hazo_users.sql +0 -8
- package/next.config.mjs +0 -67
- package/postcss.config.mjs +0 -8
- package/public/file.svg +0 -1
- package/public/globe.svg +0 -1
- package/public/next.svg +0 -1
- package/public/vercel.svg +0 -1
- package/public/window.svg +0 -1
- package/scripts/apply_migration.ts +0 -118
- package/scripts/init_users.ts +0 -378
- package/src/app/api/hazo_auth/auth/upload_profile_picture/route.ts +0 -268
- package/src/app/api/hazo_auth/change_password/route.ts +0 -132
- package/src/app/api/hazo_auth/forgot_password/route.ts +0 -107
- package/src/app/api/hazo_auth/get_auth/route.ts +0 -89
- package/src/app/api/hazo_auth/invalidate_cache/route.ts +0 -139
- package/src/app/api/hazo_auth/library_photos/route.ts +0 -73
- package/src/app/api/hazo_auth/login/route.ts +0 -181
- package/src/app/api/hazo_auth/logout/route.ts +0 -89
- package/src/app/api/hazo_auth/me/route.ts +0 -47
- package/src/app/api/hazo_auth/profile_picture/[filename]/route.ts +0 -67
- package/src/app/api/hazo_auth/register/route.ts +0 -109
- package/src/app/api/hazo_auth/remove_profile_picture/route.ts +0 -86
- package/src/app/api/hazo_auth/resend_verification/route.ts +0 -108
- package/src/app/api/hazo_auth/reset_password/route.ts +0 -107
- package/src/app/api/hazo_auth/update_user/route.ts +0 -126
- package/src/app/api/hazo_auth/upload_profile_picture/route.ts +0 -268
- package/src/app/api/hazo_auth/user_management/permissions/route.ts +0 -367
- package/src/app/api/hazo_auth/user_management/roles/route.ts +0 -442
- package/src/app/api/hazo_auth/user_management/users/roles/route.ts +0 -367
- package/src/app/api/hazo_auth/user_management/users/route.ts +0 -239
- package/src/app/api/hazo_auth/validate_reset_token/route.ts +0 -83
- package/src/app/api/hazo_auth/verify_email/route.ts +0 -88
- package/src/app/api/migrations/apply/route.ts +0 -91
- package/src/app/favicon.ico +0 -0
- package/src/app/fonts/GeistMonoVF.woff +0 -0
- package/src/app/fonts/GeistVF.woff +0 -0
- package/src/app/globals.css +0 -89
- package/src/app/hazo_auth/forgot_password/forgot_password_page_client.tsx +0 -60
- package/src/app/hazo_auth/forgot_password/page.tsx +0 -24
- package/src/app/hazo_auth/login/login_page_client.tsx +0 -86
- package/src/app/hazo_auth/login/page.tsx +0 -38
- package/src/app/hazo_auth/my_settings/my_settings_page_client.tsx +0 -120
- package/src/app/hazo_auth/my_settings/page.tsx +0 -40
- package/src/app/hazo_auth/register/page.tsx +0 -36
- package/src/app/hazo_auth/register/register_page_client.tsx +0 -81
- package/src/app/hazo_auth/reset_password/page.tsx +0 -29
- package/src/app/hazo_auth/reset_password/reset_password_page_client.tsx +0 -81
- package/src/app/hazo_auth/user_management/page.tsx +0 -14
- package/src/app/hazo_auth/user_management/user_management_page_client.tsx +0 -16
- package/src/app/hazo_auth/verify_email/page.tsx +0 -24
- package/src/app/hazo_auth/verify_email/verify_email_page_client.tsx +0 -60
- package/src/app/hazo_connect/api/sqlite/data/route.ts +0 -203
- package/src/app/hazo_connect/api/sqlite/schema/route.ts +0 -45
- package/src/app/hazo_connect/api/sqlite/tables/route.ts +0 -36
- package/src/app/hazo_connect/sqlite_admin/page.tsx +0 -51
- package/src/app/hazo_connect/sqlite_admin/sqlite-admin-client.tsx +0 -984
- package/src/app/layout.tsx +0 -43
- package/src/app/page.tsx +0 -170
- package/src/components/index.ts +0 -7
- package/src/components/layouts/email_verification/config/email_verification_field_config.ts +0 -86
- package/src/components/layouts/email_verification/hooks/use_email_verification.ts +0 -297
- package/src/components/layouts/email_verification/index.tsx +0 -297
- package/src/components/layouts/forgot_password/config/forgot_password_field_config.ts +0 -58
- package/src/components/layouts/forgot_password/hooks/use_forgot_password_form.ts +0 -179
- package/src/components/layouts/forgot_password/index.tsx +0 -168
- package/src/components/layouts/index.ts +0 -26
- package/src/components/layouts/login/config/login_field_config.ts +0 -67
- package/src/components/layouts/login/hooks/use_login_form.ts +0 -286
- package/src/components/layouts/login/index.tsx +0 -252
- package/src/components/layouts/my_settings/components/editable_field.tsx +0 -177
- package/src/components/layouts/my_settings/components/password_change_dialog.tsx +0 -301
- package/src/components/layouts/my_settings/components/profile_picture_dialog.tsx +0 -385
- package/src/components/layouts/my_settings/components/profile_picture_display.tsx +0 -66
- package/src/components/layouts/my_settings/components/profile_picture_gravatar_tab.tsx +0 -143
- package/src/components/layouts/my_settings/components/profile_picture_library_tab.tsx +0 -311
- package/src/components/layouts/my_settings/components/profile_picture_upload_tab.tsx +0 -341
- package/src/components/layouts/my_settings/config/my_settings_field_config.ts +0 -61
- package/src/components/layouts/my_settings/hooks/use_my_settings.ts +0 -458
- package/src/components/layouts/my_settings/index.tsx +0 -351
- package/src/components/layouts/register/config/register_field_config.ts +0 -101
- package/src/components/layouts/register/hooks/use_register_form.ts +0 -275
- package/src/components/layouts/register/index.tsx +0 -226
- package/src/components/layouts/reset_password/config/reset_password_field_config.ts +0 -86
- package/src/components/layouts/reset_password/hooks/use_reset_password_form.ts +0 -276
- package/src/components/layouts/reset_password/index.tsx +0 -294
- package/src/components/layouts/shared/components/already_logged_in_guard.tsx +0 -95
- package/src/components/layouts/shared/components/auth_page_shell.tsx +0 -36
- package/src/components/layouts/shared/components/field_error_message.tsx +0 -29
- package/src/components/layouts/shared/components/form_action_buttons.tsx +0 -64
- package/src/components/layouts/shared/components/form_field_wrapper.tsx +0 -44
- package/src/components/layouts/shared/components/form_header.tsx +0 -36
- package/src/components/layouts/shared/components/logout_button.tsx +0 -76
- package/src/components/layouts/shared/components/password_field.tsx +0 -72
- package/src/components/layouts/shared/components/profile_pic_menu.tsx +0 -321
- package/src/components/layouts/shared/components/profile_pic_menu_wrapper.tsx +0 -40
- package/src/components/layouts/shared/components/sidebar_layout_wrapper.tsx +0 -214
- package/src/components/layouts/shared/components/standalone_layout_wrapper.tsx +0 -53
- package/src/components/layouts/shared/components/two_column_auth_layout.tsx +0 -44
- package/src/components/layouts/shared/components/unauthorized_guard.tsx +0 -78
- package/src/components/layouts/shared/components/visual_panel.tsx +0 -41
- package/src/components/layouts/shared/config/layout_customization.ts +0 -95
- package/src/components/layouts/shared/data/layout_data_client.ts +0 -19
- package/src/components/layouts/shared/hooks/use_auth_status.ts +0 -103
- package/src/components/layouts/shared/hooks/use_hazo_auth.ts +0 -158
- package/src/components/layouts/shared/index.ts +0 -34
- package/src/components/layouts/shared/utils/ip_address.ts +0 -37
- package/src/components/layouts/shared/utils/validation.ts +0 -66
- package/src/components/layouts/user_management/components/roles_matrix.tsx +0 -607
- package/src/components/layouts/user_management/index.tsx +0 -1295
- package/src/components/ui/alert-dialog.tsx +0 -141
- package/src/components/ui/avatar.tsx +0 -50
- package/src/components/ui/button.tsx +0 -57
- package/src/components/ui/checkbox.tsx +0 -30
- package/src/components/ui/dialog.tsx +0 -122
- package/src/components/ui/dropdown-menu.tsx +0 -201
- package/src/components/ui/hazo_ui_tooltip.tsx +0 -67
- package/src/components/ui/index.ts +0 -22
- package/src/components/ui/input.tsx +0 -22
- package/src/components/ui/label.tsx +0 -26
- package/src/components/ui/separator.tsx +0 -31
- package/src/components/ui/sheet.tsx +0 -139
- package/src/components/ui/sidebar.tsx +0 -773
- package/src/components/ui/skeleton.tsx +0 -15
- package/src/components/ui/sonner.tsx +0 -31
- package/src/components/ui/switch.tsx +0 -29
- package/src/components/ui/table.tsx +0 -120
- package/src/components/ui/tabs.tsx +0 -55
- package/src/components/ui/tooltip.tsx +0 -32
- package/src/components/ui/vertical-tabs.tsx +0 -59
- package/src/hooks/use-mobile.tsx +0 -19
- package/src/index.ts +0 -7
- package/src/lib/already_logged_in_config.server.ts +0 -46
- package/src/lib/app_logger.ts +0 -24
- package/src/lib/auth/auth_cache.ts +0 -220
- package/src/lib/auth/auth_rate_limiter.ts +0 -121
- package/src/lib/auth/auth_types.ts +0 -65
- package/src/lib/auth/auth_utils.server.ts +0 -196
- package/src/lib/auth/hazo_get_auth.server.ts +0 -333
- package/src/lib/auth/index.ts +0 -23
- package/src/lib/auth/server_auth.ts +0 -88
- package/src/lib/auth_utility_config.server.ts +0 -136
- package/src/lib/config/config_loader.server.ts +0 -164
- package/src/lib/email_verification_config.server.ts +0 -32
- package/src/lib/file_types_config.server.ts +0 -25
- package/src/lib/forgot_password_config.server.ts +0 -32
- package/src/lib/hazo_connect_instance.server.ts +0 -101
- package/src/lib/hazo_connect_setup.server.ts +0 -194
- package/src/lib/hazo_connect_setup.ts +0 -54
- package/src/lib/index.ts +0 -44
- package/src/lib/login_config.server.ts +0 -71
- package/src/lib/messages_config.server.ts +0 -45
- package/src/lib/migrations/apply_migration.ts +0 -105
- package/src/lib/my_settings_config.server.ts +0 -135
- package/src/lib/password_requirements_config.server.ts +0 -39
- package/src/lib/profile_pic_menu_config.server.ts +0 -138
- package/src/lib/profile_picture_config.server.ts +0 -56
- package/src/lib/register_config.server.ts +0 -73
- package/src/lib/reset_password_config.server.ts +0 -75
- package/src/lib/services/email_service.ts +0 -581
- package/src/lib/services/email_verification_service.ts +0 -270
- package/src/lib/services/index.ts +0 -15
- package/src/lib/services/login_service.ts +0 -134
- package/src/lib/services/password_change_service.ts +0 -154
- package/src/lib/services/password_reset_service.ts +0 -405
- package/src/lib/services/profile_picture_remove_service.ts +0 -120
- package/src/lib/services/profile_picture_service.ts +0 -215
- package/src/lib/services/profile_picture_source_mapper.ts +0 -62
- package/src/lib/services/registration_service.ts +0 -184
- package/src/lib/services/token_service.ts +0 -240
- package/src/lib/services/user_profiles_service.ts +0 -143
- package/src/lib/services/user_update_service.ts +0 -141
- package/src/lib/ui_shell_config.server.ts +0 -73
- package/src/lib/ui_sizes_config.server.ts +0 -37
- package/src/lib/user_fields_config.server.ts +0 -31
- package/src/lib/user_management_config.server.ts +0 -39
- package/src/lib/utils/api_route_helpers.ts +0 -60
- package/src/lib/utils/error_sanitizer.ts +0 -75
- package/src/lib/utils.ts +0 -11
- package/src/middleware.ts +0 -94
- package/src/routes/index.ts +0 -34
- package/src/server/config/config_loader.ts +0 -496
- package/src/server/index.ts +0 -38
- package/src/server/logging/logger_service.ts +0 -56
- package/src/server/routes/root_router.ts +0 -16
- package/src/server/server.ts +0 -28
- package/src/server/types/app_types.ts +0 -74
- package/src/server/types/express.d.ts +0 -16
- package/src/stories/email_verification_layout.stories.tsx +0 -137
- package/src/stories/forgot_password_layout.stories.tsx +0 -85
- package/src/stories/login_layout.stories.tsx +0 -85
- package/src/stories/project_overview.stories.tsx +0 -33
- package/src/stories/register_layout.stories.tsx +0 -107
- package/tailwind.config.ts +0 -77
- package/tsconfig.build.json +0 -39
- package/tsconfig.json +0 -28
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
// file_description: service for batch retrieval of basic user profile information for chat applications and similar use cases
|
|
2
|
-
// section: imports
|
|
3
|
-
import type { HazoConnectAdapter } from "hazo_connect";
|
|
4
|
-
import { createCrudService } from "hazo_connect/server";
|
|
5
|
-
import { differenceInDays } from "date-fns";
|
|
6
|
-
import { create_app_logger } from "hazo_auth/lib/app_logger";
|
|
7
|
-
import { sanitize_error_for_user } from "hazo_auth/lib/utils/error_sanitizer";
|
|
8
|
-
|
|
9
|
-
// section: types
|
|
10
|
-
/**
|
|
11
|
-
* Basic user profile information returned by get_profiles
|
|
12
|
-
* Contains resolved profile picture URL, email, name, and account age
|
|
13
|
-
*/
|
|
14
|
-
export type UserProfileInfo = {
|
|
15
|
-
user_id: string;
|
|
16
|
-
profile_picture_url: string | null;
|
|
17
|
-
email: string;
|
|
18
|
-
name: string | null;
|
|
19
|
-
days_since_created: number;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Result type for get_profiles function
|
|
24
|
-
* Includes found profiles and list of IDs that were not found
|
|
25
|
-
*/
|
|
26
|
-
export type GetProfilesResult = {
|
|
27
|
-
success: boolean;
|
|
28
|
-
profiles: UserProfileInfo[];
|
|
29
|
-
not_found_ids: string[];
|
|
30
|
-
error?: string;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
// section: helpers
|
|
34
|
-
/**
|
|
35
|
-
* Retrieves basic profile information for multiple users in a single batch call
|
|
36
|
-
* Useful for chat applications and similar use cases where basic user info is needed
|
|
37
|
-
* @param adapter - The hazo_connect adapter instance
|
|
38
|
-
* @param user_ids - Array of user IDs to retrieve profiles for
|
|
39
|
-
* @returns GetProfilesResult with found profiles and list of not found IDs
|
|
40
|
-
*/
|
|
41
|
-
export async function hazo_get_user_profiles(
|
|
42
|
-
adapter: HazoConnectAdapter,
|
|
43
|
-
user_ids: string[],
|
|
44
|
-
): Promise<GetProfilesResult> {
|
|
45
|
-
const logger = create_app_logger();
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
// Handle empty input
|
|
49
|
-
if (!user_ids || user_ids.length === 0) {
|
|
50
|
-
return {
|
|
51
|
-
success: true,
|
|
52
|
-
profiles: [],
|
|
53
|
-
not_found_ids: [],
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Remove duplicates from input
|
|
58
|
-
const unique_user_ids = [...new Set(user_ids)];
|
|
59
|
-
|
|
60
|
-
// Create CRUD service for hazo_users table
|
|
61
|
-
const users_service = createCrudService(adapter, "hazo_users");
|
|
62
|
-
|
|
63
|
-
// Query users by IDs using the 'in' filter
|
|
64
|
-
// PostgREST supports 'in' filter syntax: id=in.(id1,id2,id3)
|
|
65
|
-
const users = await users_service.findBy({
|
|
66
|
-
id: `in.(${unique_user_ids.join(",")})`,
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// Handle case where no users are found
|
|
70
|
-
if (!Array.isArray(users)) {
|
|
71
|
-
logger.warn("hazo_get_user_profiles_unexpected_response", {
|
|
72
|
-
filename: "user_profiles_service.ts",
|
|
73
|
-
line_number: 70,
|
|
74
|
-
message: "Unexpected response format from database query",
|
|
75
|
-
user_ids: unique_user_ids,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
success: true,
|
|
80
|
-
profiles: [],
|
|
81
|
-
not_found_ids: unique_user_ids,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Build set of found user IDs for quick lookup
|
|
86
|
-
const found_user_ids = new Set(users.map((user) => user.id as string));
|
|
87
|
-
|
|
88
|
-
// Determine which user IDs were not found
|
|
89
|
-
const not_found_ids = unique_user_ids.filter((id) => !found_user_ids.has(id));
|
|
90
|
-
|
|
91
|
-
// Transform database records to UserProfileInfo
|
|
92
|
-
const now = new Date();
|
|
93
|
-
const profiles: UserProfileInfo[] = users.map((user) => {
|
|
94
|
-
const created_at = user.created_at as string;
|
|
95
|
-
const created_date = new Date(created_at);
|
|
96
|
-
const days_since_created = differenceInDays(now, created_date);
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
user_id: user.id as string,
|
|
100
|
-
profile_picture_url: (user.profile_picture_url as string) || null,
|
|
101
|
-
email: user.email_address as string,
|
|
102
|
-
name: (user.name as string) || null,
|
|
103
|
-
days_since_created,
|
|
104
|
-
};
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// Log successful retrieval
|
|
108
|
-
logger.info("hazo_get_user_profiles_success", {
|
|
109
|
-
filename: "user_profiles_service.ts",
|
|
110
|
-
line_number: 105,
|
|
111
|
-
message: "Successfully retrieved user profiles",
|
|
112
|
-
requested_count: unique_user_ids.length,
|
|
113
|
-
found_count: profiles.length,
|
|
114
|
-
not_found_count: not_found_ids.length,
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
return {
|
|
118
|
-
success: true,
|
|
119
|
-
profiles,
|
|
120
|
-
not_found_ids,
|
|
121
|
-
};
|
|
122
|
-
} catch (error) {
|
|
123
|
-
const user_friendly_error = sanitize_error_for_user(error, {
|
|
124
|
-
logToConsole: true,
|
|
125
|
-
logToLogger: true,
|
|
126
|
-
logger,
|
|
127
|
-
context: {
|
|
128
|
-
filename: "user_profiles_service.ts",
|
|
129
|
-
line_number: 122,
|
|
130
|
-
operation: "hazo_get_user_profiles",
|
|
131
|
-
user_ids_count: user_ids?.length || 0,
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
success: false,
|
|
137
|
-
profiles: [],
|
|
138
|
-
not_found_ids: [],
|
|
139
|
-
error: user_friendly_error,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
// file_description: service for updating user profile information using hazo_connect
|
|
2
|
-
// section: imports
|
|
3
|
-
import type { HazoConnectAdapter } from "hazo_connect";
|
|
4
|
-
import { createCrudService } from "hazo_connect/server";
|
|
5
|
-
import { map_ui_source_to_db, type ProfilePictureSourceUI } from "hazo_auth/lib/services/profile_picture_source_mapper";
|
|
6
|
-
import { create_app_logger } from "hazo_auth/lib/app_logger";
|
|
7
|
-
import { sanitize_error_for_user } from "hazo_auth/lib/utils/error_sanitizer";
|
|
8
|
-
import { get_filename, get_line_number } from "hazo_auth/lib/utils/api_route_helpers";
|
|
9
|
-
|
|
10
|
-
// section: types
|
|
11
|
-
export type UserUpdateData = {
|
|
12
|
-
name?: string;
|
|
13
|
-
email?: string;
|
|
14
|
-
profile_picture_url?: string;
|
|
15
|
-
profile_source?: ProfilePictureSourceUI;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export type UserUpdateResult = {
|
|
19
|
-
success: boolean;
|
|
20
|
-
email_changed?: boolean;
|
|
21
|
-
error?: string;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// section: helpers
|
|
25
|
-
/**
|
|
26
|
-
* Updates user profile information (name, email)
|
|
27
|
-
* If email is changed, sets email_verified to false
|
|
28
|
-
* @param adapter - The hazo_connect adapter instance
|
|
29
|
-
* @param user_id - The user ID to update
|
|
30
|
-
* @param data - User update data (name, email)
|
|
31
|
-
* @returns User update result with success status, email_changed flag, or error
|
|
32
|
-
*/
|
|
33
|
-
export async function update_user_profile(
|
|
34
|
-
adapter: HazoConnectAdapter,
|
|
35
|
-
user_id: string,
|
|
36
|
-
data: UserUpdateData,
|
|
37
|
-
): Promise<UserUpdateResult> {
|
|
38
|
-
try {
|
|
39
|
-
const { name, email } = data;
|
|
40
|
-
|
|
41
|
-
// Create CRUD service for hazo_users table
|
|
42
|
-
const users_service = createCrudService(adapter, "hazo_users");
|
|
43
|
-
|
|
44
|
-
// Get current user data
|
|
45
|
-
const users = await users_service.findBy({
|
|
46
|
-
id: user_id,
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
if (!Array.isArray(users) || users.length === 0) {
|
|
50
|
-
return {
|
|
51
|
-
success: false,
|
|
52
|
-
error: "User not found",
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const current_user = users[0];
|
|
57
|
-
const current_email = current_user.email_address as string;
|
|
58
|
-
const email_changed = email !== undefined && email !== current_email;
|
|
59
|
-
|
|
60
|
-
// If email is being changed, check if new email already exists
|
|
61
|
-
if (email_changed) {
|
|
62
|
-
const existing_users = await users_service.findBy({
|
|
63
|
-
email_address: email,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
if (Array.isArray(existing_users) && existing_users.length > 0) {
|
|
67
|
-
// Check if it's the same user
|
|
68
|
-
const existing_user = existing_users[0];
|
|
69
|
-
if (existing_user.id !== user_id) {
|
|
70
|
-
return {
|
|
71
|
-
success: false,
|
|
72
|
-
error: "Email address already registered",
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Validate email format
|
|
78
|
-
const email_regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
79
|
-
if (!email_regex.test(email)) {
|
|
80
|
-
return {
|
|
81
|
-
success: false,
|
|
82
|
-
error: "Invalid email address format",
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Prepare update data
|
|
88
|
-
const update_data: Record<string, unknown> = {
|
|
89
|
-
changed_at: new Date().toISOString(),
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
if (name !== undefined) {
|
|
93
|
-
update_data.name = name;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (email !== undefined) {
|
|
97
|
-
update_data.email_address = email;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (data.profile_picture_url !== undefined) {
|
|
101
|
-
update_data.profile_picture_url = data.profile_picture_url;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (data.profile_source !== undefined) {
|
|
105
|
-
// Map UI source value to database enum value
|
|
106
|
-
update_data.profile_source = map_ui_source_to_db(data.profile_source);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// If email changed, set email_verified to false
|
|
110
|
-
if (email_changed) {
|
|
111
|
-
update_data.email_verified = false;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Update user in database
|
|
115
|
-
await users_service.updateById(user_id, update_data);
|
|
116
|
-
|
|
117
|
-
return {
|
|
118
|
-
success: true,
|
|
119
|
-
email_changed,
|
|
120
|
-
};
|
|
121
|
-
} catch (error) {
|
|
122
|
-
const logger = create_app_logger();
|
|
123
|
-
const user_friendly_error = sanitize_error_for_user(error, {
|
|
124
|
-
logToConsole: true,
|
|
125
|
-
logToLogger: true,
|
|
126
|
-
logger,
|
|
127
|
-
context: {
|
|
128
|
-
filename: "user_update_service.ts",
|
|
129
|
-
line_number: get_line_number(),
|
|
130
|
-
user_id,
|
|
131
|
-
operation: "update_user_profile",
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
success: false,
|
|
137
|
-
error: user_friendly_error,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// file_description: load ui shell layout settings from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_value } from "hazo_auth/lib/config/config_loader.server";
|
|
4
|
-
|
|
5
|
-
// section: types
|
|
6
|
-
export type UiShellLayoutMode = "test_sidebar" | "standalone";
|
|
7
|
-
|
|
8
|
-
export type UiShellConfig = {
|
|
9
|
-
layout_mode: UiShellLayoutMode;
|
|
10
|
-
standalone_heading: string;
|
|
11
|
-
standalone_description: string;
|
|
12
|
-
standalone_wrapper_class: string;
|
|
13
|
-
standalone_content_class: string;
|
|
14
|
-
standalone_show_heading: boolean;
|
|
15
|
-
standalone_show_description: boolean;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// section: helpers
|
|
19
|
-
/**
|
|
20
|
-
* Reads ui shell configuration controlling whether pages use the sidebar test shell
|
|
21
|
-
* or a clean standalone wrapper that inherits consumer project styling.
|
|
22
|
-
*/
|
|
23
|
-
export function get_ui_shell_config(): UiShellConfig {
|
|
24
|
-
const section = "hazo_auth__ui_shell";
|
|
25
|
-
|
|
26
|
-
const layoutModeValue = get_config_value(section, "layout_mode", "test_sidebar").toLowerCase();
|
|
27
|
-
const layout_mode: UiShellLayoutMode =
|
|
28
|
-
layoutModeValue === "standalone" ? "standalone" : "test_sidebar";
|
|
29
|
-
|
|
30
|
-
const standalone_heading = get_config_value(
|
|
31
|
-
section,
|
|
32
|
-
"standalone_heading",
|
|
33
|
-
"Welcome to hazo auth"
|
|
34
|
-
);
|
|
35
|
-
const standalone_description = get_config_value(
|
|
36
|
-
section,
|
|
37
|
-
"standalone_description",
|
|
38
|
-
"Reuse the packaged authentication flows while inheriting your existing app shell styles."
|
|
39
|
-
);
|
|
40
|
-
const standalone_wrapper_class = get_config_value(
|
|
41
|
-
section,
|
|
42
|
-
"standalone_wrapper_class",
|
|
43
|
-
"cls_standalone_shell flex min-h-screen w-full items-center justify-center bg-background px-4 py-10"
|
|
44
|
-
);
|
|
45
|
-
const standalone_content_class = get_config_value(
|
|
46
|
-
section,
|
|
47
|
-
"standalone_content_class",
|
|
48
|
-
"cls_standalone_shell_content w-full max-w-5xl shadow-xl rounded-2xl border bg-card"
|
|
49
|
-
);
|
|
50
|
-
const standalone_show_heading = get_config_value(
|
|
51
|
-
section,
|
|
52
|
-
"standalone_show_heading",
|
|
53
|
-
"true"
|
|
54
|
-
).toLowerCase() === "true";
|
|
55
|
-
const standalone_show_description = get_config_value(
|
|
56
|
-
section,
|
|
57
|
-
"standalone_show_description",
|
|
58
|
-
"true"
|
|
59
|
-
).toLowerCase() === "true";
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
layout_mode,
|
|
63
|
-
standalone_heading,
|
|
64
|
-
standalone_description,
|
|
65
|
-
standalone_wrapper_class,
|
|
66
|
-
standalone_content_class,
|
|
67
|
-
standalone_show_heading,
|
|
68
|
-
standalone_show_description,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read UI size configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_number } from "hazo_auth/lib/config/config_loader.server";
|
|
4
|
-
|
|
5
|
-
// section: types
|
|
6
|
-
export type UISizesConfig = {
|
|
7
|
-
gravatar_size: number;
|
|
8
|
-
profile_picture_size: number;
|
|
9
|
-
tooltip_icon_size_default: number;
|
|
10
|
-
tooltip_icon_size_small: number;
|
|
11
|
-
library_photo_grid_columns: number;
|
|
12
|
-
library_photo_preview_size: number;
|
|
13
|
-
image_compression_max_dimension: number;
|
|
14
|
-
upload_file_hard_limit_bytes: number;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// section: helpers
|
|
18
|
-
/**
|
|
19
|
-
* Reads UI size 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 UI sizes configuration options
|
|
22
|
-
*/
|
|
23
|
-
export function get_ui_sizes_config(): UISizesConfig {
|
|
24
|
-
const section = "hazo_auth__ui_sizes";
|
|
25
|
-
|
|
26
|
-
return {
|
|
27
|
-
gravatar_size: get_config_number(section, "gravatar_size", 200),
|
|
28
|
-
profile_picture_size: get_config_number(section, "profile_picture_size", 200),
|
|
29
|
-
tooltip_icon_size_default: get_config_number(section, "tooltip_icon_size_default", 16),
|
|
30
|
-
tooltip_icon_size_small: get_config_number(section, "tooltip_icon_size_small", 14),
|
|
31
|
-
library_photo_grid_columns: get_config_number(section, "library_photo_grid_columns", 4),
|
|
32
|
-
library_photo_preview_size: get_config_number(section, "library_photo_preview_size", 200),
|
|
33
|
-
image_compression_max_dimension: get_config_number(section, "image_compression_max_dimension", 200),
|
|
34
|
-
upload_file_hard_limit_bytes: get_config_number(section, "upload_file_hard_limit_bytes", 10485760), // 10MB
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read shared user fields configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_boolean } from "hazo_auth/lib/config/config_loader.server";
|
|
4
|
-
|
|
5
|
-
// section: types
|
|
6
|
-
export type UserFieldsConfig = {
|
|
7
|
-
show_name_field: boolean;
|
|
8
|
-
show_email_field: boolean;
|
|
9
|
-
show_password_field: boolean;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// section: helpers
|
|
13
|
-
/**
|
|
14
|
-
* Reads shared user fields configuration from hazo_auth_config.ini file
|
|
15
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
16
|
-
* This configuration is used by register and my_settings layouts
|
|
17
|
-
* @returns User fields configuration options
|
|
18
|
-
*/
|
|
19
|
-
export function get_user_fields_config(): UserFieldsConfig {
|
|
20
|
-
// Read field visibility with defaults (all true by default)
|
|
21
|
-
const show_name_field = get_config_boolean("hazo_auth__user_fields", "show_name_field", true);
|
|
22
|
-
const show_email_field = get_config_boolean("hazo_auth__user_fields", "show_email_field", true);
|
|
23
|
-
const show_password_field = get_config_boolean("hazo_auth__user_fields", "show_password_field", true);
|
|
24
|
-
|
|
25
|
-
return {
|
|
26
|
-
show_name_field,
|
|
27
|
-
show_email_field,
|
|
28
|
-
show_password_field,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read user management configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_value, get_config_array, read_config_section } from "hazo_auth/lib/config/config_loader.server";
|
|
4
|
-
|
|
5
|
-
// section: types
|
|
6
|
-
export type UserManagementConfig = {
|
|
7
|
-
application_permission_list_defaults: string[];
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// section: helpers
|
|
11
|
-
/**
|
|
12
|
-
* Reads user management configuration from hazo_auth_config.ini file
|
|
13
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
14
|
-
* @returns User management configuration options
|
|
15
|
-
*/
|
|
16
|
-
export function get_user_management_config(): UserManagementConfig {
|
|
17
|
-
// Try to read from hazo_auth__user_management section first
|
|
18
|
-
const user_management_section = read_config_section("hazo_auth__user_management");
|
|
19
|
-
const permissions_section = read_config_section("permissions");
|
|
20
|
-
|
|
21
|
-
// Try application_permission_list_defaults from user_management section
|
|
22
|
-
let permission_list: string[] = [];
|
|
23
|
-
|
|
24
|
-
if (user_management_section?.application_permission_list_defaults) {
|
|
25
|
-
permission_list = get_config_array(
|
|
26
|
-
"hazo_auth__user_management",
|
|
27
|
-
"application_permission_list_defaults",
|
|
28
|
-
[]
|
|
29
|
-
);
|
|
30
|
-
} else if (permissions_section?.list) {
|
|
31
|
-
// Fallback to permissions section list key
|
|
32
|
-
permission_list = get_config_array("permissions", "list", []);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return {
|
|
36
|
-
application_permission_list_defaults: permission_list,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// file_description: shared helper functions for API routes to get filename and line number
|
|
2
|
-
// section: helpers
|
|
3
|
-
/**
|
|
4
|
-
* Gets the filename from the call stack
|
|
5
|
-
* This is a simplified version that extracts the filename from the error stack
|
|
6
|
-
* @returns Filename or "route.ts" as default
|
|
7
|
-
*/
|
|
8
|
-
export function get_filename(): string {
|
|
9
|
-
try {
|
|
10
|
-
const stack = new Error().stack;
|
|
11
|
-
if (!stack) {
|
|
12
|
-
return "route.ts";
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Parse stack trace to find the caller's file
|
|
16
|
-
const lines = stack.split("\n");
|
|
17
|
-
// Skip Error line and get_filename line, get the actual caller
|
|
18
|
-
for (let i = 2; i < lines.length; i++) {
|
|
19
|
-
const line = lines[i];
|
|
20
|
-
// Match file paths in stack trace (e.g., "at /path/to/file.ts:123:45")
|
|
21
|
-
const match = line.match(/([^/\\]+\.tsx?):(\d+):(\d+)/);
|
|
22
|
-
if (match) {
|
|
23
|
-
return match[1];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return "route.ts";
|
|
27
|
-
} catch {
|
|
28
|
-
return "route.ts";
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Gets the line number from the call stack
|
|
34
|
-
* This is a simplified version that extracts the line number from the error stack
|
|
35
|
-
* @returns Line number or 0
|
|
36
|
-
*/
|
|
37
|
-
export function get_line_number(): number {
|
|
38
|
-
try {
|
|
39
|
-
const stack = new Error().stack;
|
|
40
|
-
if (!stack) {
|
|
41
|
-
return 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Parse stack trace to find the caller's line number
|
|
45
|
-
const lines = stack.split("\n");
|
|
46
|
-
// Skip Error line and get_line_number line, get the actual caller
|
|
47
|
-
for (let i = 2; i < lines.length; i++) {
|
|
48
|
-
const line = lines[i];
|
|
49
|
-
// Match line numbers in stack trace (e.g., "at /path/to/file.ts:123:45")
|
|
50
|
-
const match = line.match(/([^/\\]+\.tsx?):(\d+):(\d+)/);
|
|
51
|
-
if (match) {
|
|
52
|
-
return parseInt(match[2], 10) || 0;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return 0;
|
|
56
|
-
} catch {
|
|
57
|
-
return 0;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
// file_description: utility functions for sanitizing error messages for user display
|
|
2
|
-
// section: imports
|
|
3
|
-
import { create_app_logger } from "hazo_auth/lib/app_logger";
|
|
4
|
-
|
|
5
|
-
// section: constants
|
|
6
|
-
const USER_FRIENDLY_ERROR_MESSAGE = "We are facing some issues in our system, please try again later.";
|
|
7
|
-
|
|
8
|
-
// section: types
|
|
9
|
-
export type ErrorSanitizationOptions = {
|
|
10
|
-
logToConsole?: boolean;
|
|
11
|
-
logToLogger?: boolean;
|
|
12
|
-
logger?: ReturnType<typeof create_app_logger>;
|
|
13
|
-
context?: Record<string, unknown>;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
// section: helpers
|
|
17
|
-
/**
|
|
18
|
-
* Sanitizes error messages for user display
|
|
19
|
-
* Replaces technical error messages with user-friendly ones
|
|
20
|
-
* @param error - The error object or message
|
|
21
|
-
* @param options - Options for logging and context
|
|
22
|
-
* @returns User-friendly error message
|
|
23
|
-
*/
|
|
24
|
-
export function sanitize_error_for_user(
|
|
25
|
-
error: unknown,
|
|
26
|
-
options: ErrorSanitizationOptions = {}
|
|
27
|
-
): string {
|
|
28
|
-
const { logToConsole = true, logToLogger = true, logger, context = {} } = options;
|
|
29
|
-
|
|
30
|
-
// Extract detailed error message
|
|
31
|
-
const detailed_error_message =
|
|
32
|
-
error instanceof Error ? error.message : String(error);
|
|
33
|
-
const error_stack = error instanceof Error ? error.stack : undefined;
|
|
34
|
-
|
|
35
|
-
// Log detailed error to console
|
|
36
|
-
if (logToConsole) {
|
|
37
|
-
console.error("Detailed error:", {
|
|
38
|
-
message: detailed_error_message,
|
|
39
|
-
stack: error_stack,
|
|
40
|
-
...context,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Log detailed error to logger if provided
|
|
45
|
-
if (logToLogger && logger) {
|
|
46
|
-
logger.error("error_occurred", {
|
|
47
|
-
filename: context.filename as string || "unknown",
|
|
48
|
-
line_number: context.line_number as number || 0,
|
|
49
|
-
error_message: detailed_error_message,
|
|
50
|
-
error_stack,
|
|
51
|
-
...context,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Check if error is a PostgREST or database-related error
|
|
56
|
-
const is_database_error =
|
|
57
|
-
detailed_error_message.includes("PostgREST") ||
|
|
58
|
-
detailed_error_message.includes("403 Forbidden") ||
|
|
59
|
-
detailed_error_message.includes("404 Not Found") ||
|
|
60
|
-
detailed_error_message.includes("500 Internal Server Error") ||
|
|
61
|
-
detailed_error_message.includes("database") ||
|
|
62
|
-
detailed_error_message.includes("connection") ||
|
|
63
|
-
detailed_error_message.includes("timeout");
|
|
64
|
-
|
|
65
|
-
// Return user-friendly message for database/API errors
|
|
66
|
-
if (is_database_error) {
|
|
67
|
-
return USER_FRIENDLY_ERROR_MESSAGE;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// For other errors, return the original message (could be user-friendly already)
|
|
71
|
-
// But still log the detailed error
|
|
72
|
-
return detailed_error_message;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
package/src/lib/utils.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// file_description: provide shared utility helpers for the hazo_auth project
|
|
2
|
-
import { clsx, type ClassValue } from "clsx";
|
|
3
|
-
import { twMerge } from "tailwind-merge";
|
|
4
|
-
|
|
5
|
-
// section: tailwind_merge_helper
|
|
6
|
-
export function merge_class_names(...inputs: ClassValue[]) {
|
|
7
|
-
return twMerge(clsx(inputs));
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// section: shadcn_compatibility_helper
|
|
11
|
-
export const cn = (...inputs: ClassValue[]) => merge_class_names(...inputs);
|