hazo_auth 1.4.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/hooks/use-mobile.d.ts.map +1 -1
- package/dist/hooks/use-mobile.js +17 -3
- 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/package.json +12 -17
- 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 -36
- package/tsconfig.json +0 -28
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read profile picture menu configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_value, get_config_boolean, get_config_array } from "./config/config_loader.server";
|
|
4
|
-
|
|
5
|
-
// section: types
|
|
6
|
-
// Note: These types are also used in client components, but TypeScript types are erased at runtime
|
|
7
|
-
// so importing from a server file is safe for type-only imports
|
|
8
|
-
export type MenuItemType = "info" | "link" | "separator";
|
|
9
|
-
|
|
10
|
-
export type ProfilePicMenuMenuItem = {
|
|
11
|
-
type: MenuItemType;
|
|
12
|
-
label?: string; // For info and link types
|
|
13
|
-
value?: string; // For info type (e.g., user name, email)
|
|
14
|
-
href?: string; // For link type
|
|
15
|
-
order: number; // Ordering within type group
|
|
16
|
-
id: string; // Unique identifier for the item
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type ProfilePicMenuConfig = {
|
|
20
|
-
show_single_button: boolean;
|
|
21
|
-
sign_up_label: string;
|
|
22
|
-
sign_in_label: string;
|
|
23
|
-
register_path: string;
|
|
24
|
-
login_path: string;
|
|
25
|
-
settings_path: string;
|
|
26
|
-
logout_path: string;
|
|
27
|
-
custom_menu_items: ProfilePicMenuMenuItem[];
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// section: helpers
|
|
31
|
-
/**
|
|
32
|
-
* Parses custom menu items from config string
|
|
33
|
-
* Format: "type:label:order" or "type:label:href:order" for links
|
|
34
|
-
* Example: "link:My Custom Link:/custom:3"
|
|
35
|
-
* @param items_string - Comma-separated string of menu items
|
|
36
|
-
* @returns Array of parsed menu items
|
|
37
|
-
*/
|
|
38
|
-
function parse_custom_menu_items(items_string: string[]): ProfilePicMenuMenuItem[] {
|
|
39
|
-
const items: ProfilePicMenuMenuItem[] = [];
|
|
40
|
-
|
|
41
|
-
items_string.forEach((item_string, index) => {
|
|
42
|
-
const parts = item_string.split(":").map((p) => p.trim());
|
|
43
|
-
|
|
44
|
-
if (parts.length < 3) {
|
|
45
|
-
return; // Invalid format, skip
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const type = parts[0] as MenuItemType;
|
|
49
|
-
if (type !== "info" && type !== "link" && type !== "separator") {
|
|
50
|
-
return; // Invalid type, skip
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (type === "separator") {
|
|
54
|
-
const order = parseInt(parts[1] || "1", 10);
|
|
55
|
-
items.push({
|
|
56
|
-
type: "separator",
|
|
57
|
-
order: isNaN(order) ? 1 : order,
|
|
58
|
-
id: `custom_separator_${index}`,
|
|
59
|
-
});
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (type === "info") {
|
|
64
|
-
const label = parts[1] || "";
|
|
65
|
-
const value = parts[2] || "";
|
|
66
|
-
const order = parseInt(parts[3] || "1", 10);
|
|
67
|
-
|
|
68
|
-
if (!label || !value) {
|
|
69
|
-
return; // Invalid format, skip
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
items.push({
|
|
73
|
-
type: "info",
|
|
74
|
-
label,
|
|
75
|
-
value,
|
|
76
|
-
order: isNaN(order) ? 1 : order,
|
|
77
|
-
id: `custom_info_${index}`,
|
|
78
|
-
});
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (type === "link") {
|
|
83
|
-
const label = parts[1] || "";
|
|
84
|
-
const href = parts[2] || "";
|
|
85
|
-
const order = parseInt(parts[3] || "1", 10);
|
|
86
|
-
|
|
87
|
-
if (!label || !href) {
|
|
88
|
-
return; // Invalid format, skip
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
items.push({
|
|
92
|
-
type: "link",
|
|
93
|
-
label,
|
|
94
|
-
href,
|
|
95
|
-
order: isNaN(order) ? 1 : order,
|
|
96
|
-
id: `custom_link_${index}`,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
return items;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Reads profile picture menu configuration from hazo_auth_config.ini file
|
|
106
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
107
|
-
* @returns Profile picture menu configuration options
|
|
108
|
-
*/
|
|
109
|
-
export function get_profile_pic_menu_config(): ProfilePicMenuConfig {
|
|
110
|
-
const section = "hazo_auth__profile_pic_menu";
|
|
111
|
-
|
|
112
|
-
// Read button configuration
|
|
113
|
-
const show_single_button = get_config_boolean(section, "show_single_button", false);
|
|
114
|
-
const sign_up_label = get_config_value(section, "sign_up_label", "Sign Up");
|
|
115
|
-
const sign_in_label = get_config_value(section, "sign_in_label", "Sign In");
|
|
116
|
-
const register_path = get_config_value(section, "register_path", "/hazo_auth/register");
|
|
117
|
-
const login_path = get_config_value(section, "login_path", "/hazo_auth/login");
|
|
118
|
-
|
|
119
|
-
// Read menu paths
|
|
120
|
-
const settings_path = get_config_value(section, "settings_path", "/hazo_auth/my_settings");
|
|
121
|
-
const logout_path = get_config_value(section, "logout_path", "/api/hazo_auth/logout");
|
|
122
|
-
|
|
123
|
-
// Read custom menu items
|
|
124
|
-
const custom_items_string = get_config_array(section, "custom_menu_items", []);
|
|
125
|
-
const custom_menu_items = parse_custom_menu_items(custom_items_string);
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
show_single_button,
|
|
129
|
-
sign_up_label,
|
|
130
|
-
sign_in_label,
|
|
131
|
-
register_path,
|
|
132
|
-
login_path,
|
|
133
|
-
settings_path,
|
|
134
|
-
logout_path,
|
|
135
|
-
custom_menu_items,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read profile picture configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_boolean, get_config_value, get_config_number, read_config_section } from "./config/config_loader.server";
|
|
4
|
-
import { create_app_logger } from "./app_logger";
|
|
5
|
-
|
|
6
|
-
// section: types
|
|
7
|
-
export type ProfilePictureConfig = {
|
|
8
|
-
allow_photo_upload: boolean;
|
|
9
|
-
upload_photo_path?: string;
|
|
10
|
-
max_photo_size: number; // in bytes
|
|
11
|
-
user_photo_default: boolean;
|
|
12
|
-
user_photo_default_priority1: "gravatar" | "library";
|
|
13
|
-
user_photo_default_priority2?: "library" | "gravatar";
|
|
14
|
-
library_photo_path: string; // relative to public directory
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// section: helpers
|
|
18
|
-
/**
|
|
19
|
-
* Reads profile picture configuration from hazo_auth_config.ini file
|
|
20
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
21
|
-
* @returns Profile picture configuration options
|
|
22
|
-
*/
|
|
23
|
-
export function get_profile_picture_config(): ProfilePictureConfig {
|
|
24
|
-
const logger = create_app_logger();
|
|
25
|
-
const section = "hazo_auth__profile_picture";
|
|
26
|
-
|
|
27
|
-
// Read configuration with defaults
|
|
28
|
-
const allow_photo_upload = get_config_boolean(section, "allow_photo_upload", false);
|
|
29
|
-
const upload_photo_path = get_config_value(section, "upload_photo_path", "");
|
|
30
|
-
const max_photo_size = get_config_number(section, "max_photo_size", 51200); // Default: 50kb
|
|
31
|
-
const user_photo_default = get_config_boolean(section, "user_photo_default", true);
|
|
32
|
-
const user_photo_default_priority1 = (get_config_value(section, "user_photo_default_priority1", "gravatar") as "gravatar" | "library");
|
|
33
|
-
const priority2_value = get_config_value(section, "user_photo_default_priority2", "");
|
|
34
|
-
const user_photo_default_priority2 = priority2_value ? (priority2_value as "library" | "gravatar") : undefined;
|
|
35
|
-
const library_photo_path = get_config_value(section, "library_photo_path", "/profile_pictures/library");
|
|
36
|
-
|
|
37
|
-
// Validate upload_photo_path if allow_photo_upload is true
|
|
38
|
-
if (allow_photo_upload && !upload_photo_path) {
|
|
39
|
-
logger.warn("profile_picture_config_validation_failed", {
|
|
40
|
-
filename: "profile_picture_config.server.ts",
|
|
41
|
-
line_number: 0,
|
|
42
|
-
message: "allow_photo_upload is true but upload_photo_path is not set",
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
allow_photo_upload,
|
|
48
|
-
upload_photo_path: upload_photo_path || undefined,
|
|
49
|
-
max_photo_size,
|
|
50
|
-
user_photo_default,
|
|
51
|
-
user_photo_default_priority1,
|
|
52
|
-
user_photo_default_priority2,
|
|
53
|
-
library_photo_path,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read register layout configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_boolean, get_config_value, read_config_section } from "./config/config_loader.server";
|
|
4
|
-
import { get_password_requirements_config } from "./password_requirements_config.server";
|
|
5
|
-
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
6
|
-
import { get_user_fields_config } from "./user_fields_config.server";
|
|
7
|
-
|
|
8
|
-
// section: types
|
|
9
|
-
export type RegisterConfig = {
|
|
10
|
-
showNameField: boolean;
|
|
11
|
-
passwordRequirements: {
|
|
12
|
-
minimum_length: number;
|
|
13
|
-
require_uppercase: boolean;
|
|
14
|
-
require_lowercase: boolean;
|
|
15
|
-
require_number: boolean;
|
|
16
|
-
require_special: boolean;
|
|
17
|
-
};
|
|
18
|
-
alreadyLoggedInMessage: string;
|
|
19
|
-
showLogoutButton: boolean;
|
|
20
|
-
showReturnHomeButton: boolean;
|
|
21
|
-
returnHomeButtonLabel: string;
|
|
22
|
-
returnHomePath: string;
|
|
23
|
-
signInPath: string;
|
|
24
|
-
signInLabel: string;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// section: helpers
|
|
28
|
-
/**
|
|
29
|
-
* Reads register layout configuration from hazo_auth_config.ini file
|
|
30
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
31
|
-
* @returns Register configuration options
|
|
32
|
-
*/
|
|
33
|
-
export function get_register_config(): RegisterConfig {
|
|
34
|
-
// Get shared user fields config (preferred) or fall back to register section for backwards compatibility
|
|
35
|
-
const userFieldsConfig = get_user_fields_config();
|
|
36
|
-
const register_section = read_config_section("hazo_auth__register_layout");
|
|
37
|
-
|
|
38
|
-
// Use register section if explicitly set, otherwise use shared config
|
|
39
|
-
const showNameField = register_section?.show_name_field !== undefined
|
|
40
|
-
? get_config_boolean("hazo_auth__register_layout", "show_name_field", true)
|
|
41
|
-
: userFieldsConfig.show_name_field;
|
|
42
|
-
|
|
43
|
-
// Get shared password requirements
|
|
44
|
-
const passwordRequirements = get_password_requirements_config();
|
|
45
|
-
|
|
46
|
-
// Get shared already logged in config
|
|
47
|
-
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
48
|
-
|
|
49
|
-
// Read sign in link configuration
|
|
50
|
-
const signInPath = get_config_value(
|
|
51
|
-
"hazo_auth__register_layout",
|
|
52
|
-
"sign_in_path",
|
|
53
|
-
"/hazo_auth/login"
|
|
54
|
-
);
|
|
55
|
-
const signInLabel = get_config_value(
|
|
56
|
-
"hazo_auth__register_layout",
|
|
57
|
-
"sign_in_label",
|
|
58
|
-
"Sign in"
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
showNameField,
|
|
63
|
-
passwordRequirements,
|
|
64
|
-
alreadyLoggedInMessage: alreadyLoggedInConfig.message,
|
|
65
|
-
showLogoutButton: alreadyLoggedInConfig.showLogoutButton,
|
|
66
|
-
showReturnHomeButton: alreadyLoggedInConfig.showReturnHomeButton,
|
|
67
|
-
returnHomeButtonLabel: alreadyLoggedInConfig.returnHomeButtonLabel,
|
|
68
|
-
returnHomePath: alreadyLoggedInConfig.returnHomePath,
|
|
69
|
-
signInPath,
|
|
70
|
-
signInLabel,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
// file_description: server-only helper to read reset password layout configuration from hazo_auth_config.ini
|
|
2
|
-
// section: imports
|
|
3
|
-
import { get_config_value } from "./config/config_loader.server";
|
|
4
|
-
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
5
|
-
import { get_password_requirements_config } from "./password_requirements_config.server";
|
|
6
|
-
|
|
7
|
-
// section: types
|
|
8
|
-
export type ResetPasswordConfig = {
|
|
9
|
-
errorMessage: string;
|
|
10
|
-
successMessage: string;
|
|
11
|
-
loginPath: string;
|
|
12
|
-
forgotPasswordPath: string;
|
|
13
|
-
alreadyLoggedInMessage: string;
|
|
14
|
-
showLogoutButton: boolean;
|
|
15
|
-
showReturnHomeButton: boolean;
|
|
16
|
-
returnHomeButtonLabel: string;
|
|
17
|
-
returnHomePath: string;
|
|
18
|
-
passwordRequirements: {
|
|
19
|
-
minimum_length: number;
|
|
20
|
-
require_uppercase: boolean;
|
|
21
|
-
require_lowercase: boolean;
|
|
22
|
-
require_number: boolean;
|
|
23
|
-
require_special: boolean;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// section: helpers
|
|
28
|
-
/**
|
|
29
|
-
* Reads reset password layout configuration from hazo_auth_config.ini file
|
|
30
|
-
* Falls back to defaults if hazo_auth_config.ini is not found or section is missing
|
|
31
|
-
* @returns Reset password configuration options
|
|
32
|
-
*/
|
|
33
|
-
export function get_reset_password_config(): ResetPasswordConfig {
|
|
34
|
-
const section = "hazo_auth__reset_password_layout";
|
|
35
|
-
|
|
36
|
-
// Get shared already logged in config
|
|
37
|
-
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
38
|
-
|
|
39
|
-
// Read error message (defaults to standard message)
|
|
40
|
-
const errorMessage = get_config_value(
|
|
41
|
-
section,
|
|
42
|
-
"error_message",
|
|
43
|
-
"Reset password link invalid or has expired. Please go to Reset Password page to get a new link."
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
// Read success message (defaults to standard message)
|
|
47
|
-
const successMessage = get_config_value(
|
|
48
|
-
section,
|
|
49
|
-
"success_message",
|
|
50
|
-
"Password reset successfully. Redirecting to login..."
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
// Read login path (defaults to "/hazo_auth/login")
|
|
54
|
-
const loginPath = get_config_value(section, "login_path", "/hazo_auth/login");
|
|
55
|
-
|
|
56
|
-
// Read forgot password path (defaults to "/hazo_auth/forgot_password")
|
|
57
|
-
const forgotPasswordPath = get_config_value(section, "forgot_password_path", "/hazo_auth/forgot_password");
|
|
58
|
-
|
|
59
|
-
// Get shared password requirements
|
|
60
|
-
const passwordRequirements = get_password_requirements_config();
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
errorMessage,
|
|
64
|
-
successMessage,
|
|
65
|
-
loginPath,
|
|
66
|
-
forgotPasswordPath,
|
|
67
|
-
alreadyLoggedInMessage: alreadyLoggedInConfig.message,
|
|
68
|
-
showLogoutButton: alreadyLoggedInConfig.showLogoutButton,
|
|
69
|
-
showReturnHomeButton: alreadyLoggedInConfig.showReturnHomeButton,
|
|
70
|
-
returnHomeButtonLabel: alreadyLoggedInConfig.returnHomeButtonLabel,
|
|
71
|
-
returnHomePath: alreadyLoggedInConfig.returnHomePath,
|
|
72
|
-
passwordRequirements,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|