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
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
|
-
|
package/postcss.config.mjs
DELETED
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
|
-
|
package/scripts/init_users.ts
DELETED
|
@@ -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
|
-
|