hazo_auth 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/cli-src/lib/already_logged_in_config.server.ts +1 -1
  2. package/cli-src/lib/app_logger.ts +1 -1
  3. package/cli-src/lib/auth/auth_types.ts +7 -0
  4. package/cli-src/lib/auth/auth_utils.server.ts +2 -2
  5. package/cli-src/lib/auth/dev_lock_validator.edge.ts +171 -0
  6. package/cli-src/lib/auth/hazo_get_auth.server.ts +84 -13
  7. package/cli-src/lib/auth/index.ts +5 -5
  8. package/cli-src/lib/auth/nextauth_config.ts +4 -4
  9. package/cli-src/lib/auth/org_cache.ts +148 -0
  10. package/cli-src/lib/auth/server_auth.ts +2 -2
  11. package/cli-src/lib/auth/session_token_validator.edge.ts +1 -0
  12. package/cli-src/lib/auth_utility_config.server.ts +1 -1
  13. package/cli-src/lib/config/config_loader.server.ts +1 -1
  14. package/cli-src/lib/config/default_config.ts +44 -0
  15. package/cli-src/lib/dev_lock_config.server.ts +148 -0
  16. package/cli-src/lib/email_verification_config.server.ts +3 -3
  17. package/cli-src/lib/file_types_config.server.ts +1 -1
  18. package/cli-src/lib/forgot_password_config.server.ts +3 -3
  19. package/cli-src/lib/hazo_connect_instance.server.ts +2 -2
  20. package/cli-src/lib/hazo_connect_setup.server.ts +2 -2
  21. package/cli-src/lib/index.ts +24 -24
  22. package/cli-src/lib/login_config.server.ts +4 -4
  23. package/cli-src/lib/messages_config.server.ts +1 -1
  24. package/cli-src/lib/multi_tenancy_config.server.ts +94 -0
  25. package/cli-src/lib/my_settings_config.server.ts +7 -7
  26. package/cli-src/lib/oauth_config.server.ts +2 -2
  27. package/cli-src/lib/password_requirements_config.server.ts +2 -2
  28. package/cli-src/lib/profile_pic_menu_config.server.ts +1 -1
  29. package/cli-src/lib/profile_picture_config.server.ts +2 -2
  30. package/cli-src/lib/register_config.server.ts +5 -5
  31. package/cli-src/lib/reset_password_config.server.ts +4 -4
  32. package/cli-src/lib/scope_hierarchy_config.server.ts +2 -2
  33. package/cli-src/lib/services/email_service.ts +2 -2
  34. package/cli-src/lib/services/email_verification_service.ts +3 -3
  35. package/cli-src/lib/services/login_service.ts +3 -3
  36. package/cli-src/lib/services/oauth_service.ts +4 -4
  37. package/cli-src/lib/services/org_service.ts +965 -0
  38. package/cli-src/lib/services/password_change_service.ts +3 -3
  39. package/cli-src/lib/services/password_reset_service.ts +3 -3
  40. package/cli-src/lib/services/profile_picture_remove_service.ts +3 -3
  41. package/cli-src/lib/services/profile_picture_service.ts +5 -5
  42. package/cli-src/lib/services/registration_service.ts +8 -8
  43. package/cli-src/lib/services/scope_labels_service.ts +3 -3
  44. package/cli-src/lib/services/scope_service.ts +2 -2
  45. package/cli-src/lib/services/session_token_service.ts +3 -2
  46. package/cli-src/lib/services/token_service.ts +2 -2
  47. package/cli-src/lib/services/user_profiles_service.ts +4 -4
  48. package/cli-src/lib/services/user_scope_service.ts +3 -3
  49. package/cli-src/lib/services/user_update_service.ts +4 -4
  50. package/cli-src/lib/ui_shell_config.server.ts +1 -1
  51. package/cli-src/lib/ui_sizes_config.server.ts +1 -1
  52. package/cli-src/lib/user_fields_config.server.ts +1 -1
  53. package/cli-src/lib/user_management_config.server.ts +1 -1
  54. package/cli-src/lib/user_profiles_config.server.ts +1 -1
  55. package/cli-src/lib/utils/error_sanitizer.ts +1 -1
  56. package/cli-src/server/types/app_types.ts +74 -0
  57. package/cli-src/server/types/express.d.ts +16 -0
  58. package/dist/components/layouts/dev_lock/index.d.ts +29 -0
  59. package/dist/components/layouts/dev_lock/index.d.ts.map +1 -0
  60. package/dist/components/layouts/dev_lock/index.js +60 -0
  61. package/dist/components/layouts/index.d.ts +2 -0
  62. package/dist/components/layouts/index.d.ts.map +1 -1
  63. package/dist/components/layouts/index.js +1 -0
  64. package/dist/components/layouts/org_management/index.d.ts +26 -0
  65. package/dist/components/layouts/org_management/index.d.ts.map +1 -0
  66. package/dist/components/layouts/org_management/index.js +75 -0
  67. package/dist/components/layouts/user_management/components/org_hierarchy_tab.d.ts +13 -0
  68. package/dist/components/layouts/user_management/components/org_hierarchy_tab.d.ts.map +1 -0
  69. package/dist/components/layouts/user_management/components/org_hierarchy_tab.js +276 -0
  70. package/dist/components/layouts/user_management/index.d.ts +3 -1
  71. package/dist/components/layouts/user_management/index.d.ts.map +1 -1
  72. package/dist/components/layouts/user_management/index.js +10 -4
  73. package/dist/lib/auth/auth_types.d.ts +6 -0
  74. package/dist/lib/auth/auth_types.d.ts.map +1 -1
  75. package/dist/lib/auth/dev_lock_validator.edge.d.ts +38 -0
  76. package/dist/lib/auth/dev_lock_validator.edge.d.ts.map +1 -0
  77. package/dist/lib/auth/dev_lock_validator.edge.js +122 -0
  78. package/dist/lib/auth/hazo_get_auth.server.d.ts.map +1 -1
  79. package/dist/lib/auth/hazo_get_auth.server.js +61 -1
  80. package/dist/lib/auth/org_cache.d.ts +65 -0
  81. package/dist/lib/auth/org_cache.d.ts.map +1 -0
  82. package/dist/lib/auth/org_cache.js +103 -0
  83. package/dist/lib/config/default_config.d.ts +76 -0
  84. package/dist/lib/config/default_config.d.ts.map +1 -1
  85. package/dist/lib/config/default_config.js +42 -0
  86. package/dist/lib/dev_lock_config.server.d.ts +41 -0
  87. package/dist/lib/dev_lock_config.server.d.ts.map +1 -0
  88. package/dist/lib/dev_lock_config.server.js +50 -0
  89. package/dist/lib/multi_tenancy_config.server.d.ts +30 -0
  90. package/dist/lib/multi_tenancy_config.server.d.ts.map +1 -0
  91. package/dist/lib/multi_tenancy_config.server.js +41 -0
  92. package/dist/lib/services/org_service.d.ts +191 -0
  93. package/dist/lib/services/org_service.d.ts.map +1 -0
  94. package/dist/lib/services/org_service.js +746 -0
  95. package/dist/page_components/dev_lock.d.ts +11 -0
  96. package/dist/page_components/dev_lock.d.ts.map +1 -0
  97. package/dist/page_components/dev_lock.js +17 -0
  98. package/dist/page_components/index.d.ts +1 -0
  99. package/dist/page_components/index.d.ts.map +1 -1
  100. package/dist/page_components/index.js +1 -0
  101. package/dist/page_components/org_management.d.ts +27 -0
  102. package/dist/page_components/org_management.d.ts.map +1 -0
  103. package/dist/page_components/org_management.js +18 -0
  104. package/hazo_auth_config.example.ini +30 -0
  105. package/package.json +23 -2
@@ -0,0 +1,148 @@
1
+ // file_description: server-only helper to read dev lock configuration from hazo_auth_config.ini
2
+ // section: imports
3
+ import { get_config_value, get_config_boolean, get_config_number } from "./config/config_loader.server.js";
4
+ import { DEFAULT_DEV_LOCK } from "./config/default_config.js";
5
+
6
+ // section: types
7
+ export type DevLockConfig = {
8
+ /** Enable the development lock screen */
9
+ enable: boolean;
10
+ /** Session duration in days */
11
+ session_duration_days: number;
12
+ /** Background color */
13
+ background_color: string;
14
+ /** Logo image path */
15
+ logo_path: string;
16
+ /** Logo width in pixels */
17
+ logo_width: number;
18
+ /** Logo height in pixels */
19
+ logo_height: number;
20
+ /** Application name displayed below logo */
21
+ application_name: string;
22
+ /** Limited access text displayed with lock icon */
23
+ limited_access_text: string;
24
+ /** Password input placeholder text */
25
+ password_placeholder: string;
26
+ /** Submit button text */
27
+ submit_button_text: string;
28
+ /** Error message for incorrect password */
29
+ error_message: string;
30
+ /** Text color for labels */
31
+ text_color: string;
32
+ /** Accent color for button */
33
+ accent_color: string;
34
+ };
35
+
36
+ // section: constants
37
+ const SECTION_NAME = "hazo_auth__dev_lock";
38
+
39
+ // section: helpers
40
+ /**
41
+ * Reads dev lock configuration from hazo_auth_config.ini file
42
+ * Falls back to defaults if hazo_auth_config.ini is not found or section is missing
43
+ * @returns Dev lock configuration options
44
+ */
45
+ export function get_dev_lock_config(): DevLockConfig {
46
+ const enable = get_config_boolean(
47
+ SECTION_NAME,
48
+ "enable",
49
+ DEFAULT_DEV_LOCK.enable
50
+ );
51
+
52
+ const session_duration_days = get_config_number(
53
+ SECTION_NAME,
54
+ "session_duration_days",
55
+ DEFAULT_DEV_LOCK.session_duration_days
56
+ );
57
+
58
+ const background_color = get_config_value(
59
+ SECTION_NAME,
60
+ "background_color",
61
+ DEFAULT_DEV_LOCK.background_color
62
+ );
63
+
64
+ const logo_path = get_config_value(
65
+ SECTION_NAME,
66
+ "logo_path",
67
+ DEFAULT_DEV_LOCK.logo_path
68
+ );
69
+
70
+ const logo_width = get_config_number(
71
+ SECTION_NAME,
72
+ "logo_width",
73
+ DEFAULT_DEV_LOCK.logo_width
74
+ );
75
+
76
+ const logo_height = get_config_number(
77
+ SECTION_NAME,
78
+ "logo_height",
79
+ DEFAULT_DEV_LOCK.logo_height
80
+ );
81
+
82
+ const application_name = get_config_value(
83
+ SECTION_NAME,
84
+ "application_name",
85
+ DEFAULT_DEV_LOCK.application_name
86
+ );
87
+
88
+ const limited_access_text = get_config_value(
89
+ SECTION_NAME,
90
+ "limited_access_text",
91
+ DEFAULT_DEV_LOCK.limited_access_text
92
+ );
93
+
94
+ const password_placeholder = get_config_value(
95
+ SECTION_NAME,
96
+ "password_placeholder",
97
+ DEFAULT_DEV_LOCK.password_placeholder
98
+ );
99
+
100
+ const submit_button_text = get_config_value(
101
+ SECTION_NAME,
102
+ "submit_button_text",
103
+ DEFAULT_DEV_LOCK.submit_button_text
104
+ );
105
+
106
+ const error_message = get_config_value(
107
+ SECTION_NAME,
108
+ "error_message",
109
+ DEFAULT_DEV_LOCK.error_message
110
+ );
111
+
112
+ const text_color = get_config_value(
113
+ SECTION_NAME,
114
+ "text_color",
115
+ DEFAULT_DEV_LOCK.text_color
116
+ );
117
+
118
+ const accent_color = get_config_value(
119
+ SECTION_NAME,
120
+ "accent_color",
121
+ DEFAULT_DEV_LOCK.accent_color
122
+ );
123
+
124
+ return {
125
+ enable,
126
+ session_duration_days,
127
+ background_color,
128
+ logo_path,
129
+ logo_width,
130
+ logo_height,
131
+ application_name,
132
+ limited_access_text,
133
+ password_placeholder,
134
+ submit_button_text,
135
+ error_message,
136
+ text_color,
137
+ accent_color,
138
+ };
139
+ }
140
+
141
+ /**
142
+ * Helper to check if dev lock is enabled in config
143
+ * Note: Also requires HAZO_AUTH_DEV_LOCK_ENABLED env var for actual enforcement
144
+ * @returns true if dev lock is enabled in config
145
+ */
146
+ export function is_dev_lock_enabled(): boolean {
147
+ return get_config_boolean(SECTION_NAME, "enable", DEFAULT_DEV_LOCK.enable);
148
+ }
@@ -1,8 +1,8 @@
1
1
  // file_description: server-only helper to read email verification layout configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_already_logged_in_config } from "./already_logged_in_config.server";
4
- import { get_config_value } from "./config/config_loader.server";
5
- import verifyEmailDefaultImage from "../assets/images/verify_email_default.jpg";
3
+ import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
4
+ import { get_config_value } from "./config/config_loader.server.js";
5
+ import verifyEmailDefaultImage from "../assets/images/verify_email_default.jpg.js";
6
6
 
7
7
  // section: types
8
8
  import type { StaticImageData } from "next/image";
@@ -1,6 +1,6 @@
1
1
  // file_description: server-only helper to read file type configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_array } from "./config/config_loader.server";
3
+ import { get_config_array } from "./config/config_loader.server.js";
4
4
 
5
5
  // section: types
6
6
  export type FileTypesConfig = {
@@ -1,8 +1,8 @@
1
1
  // file_description: server-only helper to read forgot password layout configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_already_logged_in_config } from "./already_logged_in_config.server";
4
- import { get_config_value } from "./config/config_loader.server";
5
- import forgotPasswordDefaultImage from "../assets/images/forgot_password_default.jpg";
3
+ import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
4
+ import { get_config_value } from "./config/config_loader.server.js";
5
+ import forgotPasswordDefaultImage from "../assets/images/forgot_password_default.jpg.js";
6
6
 
7
7
  // section: types
8
8
  import type { StaticImageData } from "next/image";
@@ -5,9 +5,9 @@
5
5
  // section: imports
6
6
  import type { HazoConnectAdapter } from "hazo_connect";
7
7
  import { getHazoConnectSingleton } from "hazo_connect/nextjs/setup";
8
- import { create_sqlite_hazo_connect_server, get_hazo_connect_config_options } from "./hazo_connect_setup.server";
8
+ import { create_sqlite_hazo_connect_server, get_hazo_connect_config_options } from "./hazo_connect_setup.server.js";
9
9
  import { initializeAdminService, getSqliteAdminService } from "hazo_connect/server";
10
- import { create_app_logger } from "./app_logger";
10
+ import { create_app_logger } from "./app_logger.js";
11
11
 
12
12
  // section: singleton_state
13
13
  let hazoConnectInstance: HazoConnectAdapter | null = null;
@@ -6,8 +6,8 @@ import { createHazoConnect } from "hazo_connect/server";
6
6
  import { HazoConfig } from "hazo_config/dist/lib";
7
7
  import path from "path";
8
8
  import fs from "fs";
9
- import { create_app_logger } from "./app_logger";
10
- import { read_config_section } from "./config/config_loader.server";
9
+ import { create_app_logger } from "./app_logger.js";
10
+ import { read_config_section } from "./config/config_loader.server.js";
11
11
 
12
12
  // section: helpers
13
13
  /**
@@ -6,41 +6,41 @@ export * from "./auth/index";
6
6
  export * from "./services/index";
7
7
 
8
8
  // section: utility_exports
9
- export { cn, merge_class_names } from "./utils";
9
+ export { cn, merge_class_names } from "./utils.js";
10
10
 
11
11
  // section: config_exports
12
- export { get_config_value, get_config_number, get_config_boolean, get_config_array, read_config_section } from "./config/config_loader.server";
12
+ export { get_config_value, get_config_number, get_config_boolean, get_config_array, read_config_section } from "./config/config_loader.server.js";
13
13
 
14
14
  // section: hazo_connect_exports
15
- export { create_sqlite_hazo_connect } from "./hazo_connect_setup";
16
- export { get_hazo_connect_instance } from "./hazo_connect_instance.server";
15
+ export { create_sqlite_hazo_connect } from "./hazo_connect_setup.js";
16
+ export { get_hazo_connect_instance } from "./hazo_connect_instance.server.js";
17
17
 
18
18
  // section: logger_exports
19
- export { create_app_logger } from "./app_logger";
19
+ export { create_app_logger } from "./app_logger.js";
20
20
 
21
21
  // section: config_server_exports
22
- export { get_login_config } from "./login_config.server";
23
- export { get_register_config } from "./register_config.server";
24
- export { get_forgot_password_config } from "./forgot_password_config.server";
25
- export { get_reset_password_config } from "./reset_password_config.server";
26
- export { get_email_verification_config } from "./email_verification_config.server";
27
- export { get_my_settings_config } from "./my_settings_config.server";
28
- export { get_user_management_config } from "./user_management_config.server";
29
- export { get_profile_picture_config } from "./profile_picture_config.server";
30
- export { get_profile_pic_menu_config } from "./profile_pic_menu_config.server";
31
- export { get_already_logged_in_config } from "./already_logged_in_config.server";
32
- export { get_ui_shell_config } from "./ui_shell_config.server";
33
- export { get_ui_sizes_config } from "./ui_sizes_config.server";
34
- export { get_auth_utility_config } from "./auth_utility_config.server";
35
- export { get_password_requirements_config } from "./password_requirements_config.server";
36
- export { get_messages_config } from "./messages_config.server";
37
- export { get_user_fields_config } from "./user_fields_config.server";
38
- export { get_file_types_config } from "./file_types_config.server";
39
- export { get_oauth_config, is_google_oauth_enabled, is_email_password_enabled } from "./oauth_config.server";
22
+ export { get_login_config } from "./login_config.server.js";
23
+ export { get_register_config } from "./register_config.server.js";
24
+ export { get_forgot_password_config } from "./forgot_password_config.server.js";
25
+ export { get_reset_password_config } from "./reset_password_config.server.js";
26
+ export { get_email_verification_config } from "./email_verification_config.server.js";
27
+ export { get_my_settings_config } from "./my_settings_config.server.js";
28
+ export { get_user_management_config } from "./user_management_config.server.js";
29
+ export { get_profile_picture_config } from "./profile_picture_config.server.js";
30
+ export { get_profile_pic_menu_config } from "./profile_pic_menu_config.server.js";
31
+ export { get_already_logged_in_config } from "./already_logged_in_config.server.js";
32
+ export { get_ui_shell_config } from "./ui_shell_config.server.js";
33
+ export { get_ui_sizes_config } from "./ui_sizes_config.server.js";
34
+ export { get_auth_utility_config } from "./auth_utility_config.server.js";
35
+ export { get_password_requirements_config } from "./password_requirements_config.server.js";
36
+ export { get_messages_config } from "./messages_config.server.js";
37
+ export { get_user_fields_config } from "./user_fields_config.server.js";
38
+ export { get_file_types_config } from "./file_types_config.server.js";
39
+ export { get_oauth_config, is_google_oauth_enabled, is_email_password_enabled } from "./oauth_config.server.js";
40
40
  export type { OAuthConfig } from "./oauth_config.server";
41
41
 
42
42
  // section: util_exports
43
- export { sanitize_error_for_user } from "./utils/error_sanitizer";
43
+ export { sanitize_error_for_user } from "./utils/error_sanitizer.js";
44
44
  export type { ErrorSanitizationOptions } from "./utils/error_sanitizer";
45
45
  export * from "./utils/api_route_helpers";
46
46
 
@@ -1,9 +1,9 @@
1
1
  // file_description: server-only helper to read login layout configuration from hazo_auth_config.ini
2
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_oauth_config, type OAuthConfig } from "./oauth_config.server";
6
- import loginDefaultImage from "../assets/images/login_default.jpg";
3
+ import { get_config_value } from "./config/config_loader.server.js";
4
+ import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
5
+ import { get_oauth_config, type OAuthConfig } from "./oauth_config.server.js";
6
+ import loginDefaultImage from "../assets/images/login_default.jpg.js";
7
7
 
8
8
  // section: types
9
9
  import type { StaticImageData } from "next/image";
@@ -1,6 +1,6 @@
1
1
  // file_description: server-only helper to read user-facing messages from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_value } from "./config/config_loader.server";
3
+ import { get_config_value } from "./config/config_loader.server.js";
4
4
 
5
5
  // section: types
6
6
  export type MessagesConfig = {
@@ -0,0 +1,94 @@
1
+ // file_description: server-only helper to read multi-tenancy configuration from hazo_auth_config.ini
2
+ // section: imports
3
+ import {
4
+ get_config_value,
5
+ get_config_number,
6
+ get_config_boolean,
7
+ } from "./config/config_loader.server.js";
8
+ import { DEFAULT_MULTI_TENANCY } from "./config/default_config.js";
9
+
10
+ // section: types
11
+
12
+ /**
13
+ * Multi-tenancy configuration options
14
+ */
15
+ export type MultiTenancyConfig = {
16
+ /** Whether multi-tenancy is enabled (default: false) */
17
+ enable_multi_tenancy: boolean;
18
+ /** Cache TTL in minutes for org lookups (default: 15) */
19
+ org_cache_ttl_minutes: number;
20
+ /** Maximum entries in org cache (default: 1000) */
21
+ org_cache_max_entries: number;
22
+ /** Default user limit per organization (0 = unlimited) */
23
+ default_user_limit: number;
24
+ };
25
+
26
+ // section: constants
27
+
28
+ const SECTION_NAME = "hazo_auth__multi_tenancy";
29
+
30
+ // section: helpers
31
+
32
+ /**
33
+ * Reads multi-tenancy configuration from hazo_auth_config.ini file
34
+ * Falls back to defaults if config file is not found or section is missing
35
+ * @returns Multi-tenancy configuration options
36
+ */
37
+ export function get_multi_tenancy_config(): MultiTenancyConfig {
38
+ // Core multi-tenancy enablement
39
+ const enable_multi_tenancy = get_config_boolean(
40
+ SECTION_NAME,
41
+ "enable_multi_tenancy",
42
+ DEFAULT_MULTI_TENANCY.enable_multi_tenancy,
43
+ );
44
+
45
+ // Cache settings
46
+ const org_cache_ttl_minutes = get_config_number(
47
+ SECTION_NAME,
48
+ "org_cache_ttl_minutes",
49
+ DEFAULT_MULTI_TENANCY.org_cache_ttl_minutes,
50
+ );
51
+ const org_cache_max_entries = get_config_number(
52
+ SECTION_NAME,
53
+ "org_cache_max_entries",
54
+ DEFAULT_MULTI_TENANCY.org_cache_max_entries,
55
+ );
56
+
57
+ // Default user limit
58
+ const default_user_limit = get_config_number(
59
+ SECTION_NAME,
60
+ "default_user_limit",
61
+ DEFAULT_MULTI_TENANCY.default_user_limit,
62
+ );
63
+
64
+ return {
65
+ enable_multi_tenancy,
66
+ org_cache_ttl_minutes,
67
+ org_cache_max_entries,
68
+ default_user_limit,
69
+ };
70
+ }
71
+
72
+ /**
73
+ * Checks if multi-tenancy is enabled in the configuration
74
+ * Convenience function for quick checks
75
+ */
76
+ export function is_multi_tenancy_enabled(): boolean {
77
+ return get_config_boolean(
78
+ SECTION_NAME,
79
+ "enable_multi_tenancy",
80
+ DEFAULT_MULTI_TENANCY.enable_multi_tenancy,
81
+ );
82
+ }
83
+
84
+ /**
85
+ * Gets the default user limit from config
86
+ * Returns 0 if not configured (unlimited)
87
+ */
88
+ export function get_default_user_limit(): number {
89
+ return get_config_number(
90
+ SECTION_NAME,
91
+ "default_user_limit",
92
+ DEFAULT_MULTI_TENANCY.default_user_limit,
93
+ );
94
+ }
@@ -1,12 +1,12 @@
1
1
  // file_description: server-only helper to read my settings layout configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_value } from "./config/config_loader.server";
4
- import { get_user_fields_config } from "./user_fields_config.server";
5
- import { get_password_requirements_config } from "./password_requirements_config.server";
6
- import { get_profile_picture_config } from "./profile_picture_config.server";
7
- import { get_messages_config } from "./messages_config.server";
8
- import { get_ui_sizes_config } from "./ui_sizes_config.server";
9
- import { get_file_types_config } from "./file_types_config.server";
3
+ import { get_config_value } from "./config/config_loader.server.js";
4
+ import { get_user_fields_config } from "./user_fields_config.server.js";
5
+ import { get_password_requirements_config } from "./password_requirements_config.server.js";
6
+ import { get_profile_picture_config } from "./profile_picture_config.server.js";
7
+ import { get_messages_config } from "./messages_config.server.js";
8
+ import { get_ui_sizes_config } from "./ui_sizes_config.server.js";
9
+ import { get_file_types_config } from "./file_types_config.server.js";
10
10
 
11
11
  // section: types
12
12
  export type MySettingsConfig = {
@@ -1,7 +1,7 @@
1
1
  // file_description: server-only helper to read OAuth configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_value, get_config_boolean } from "./config/config_loader.server";
4
- import { DEFAULT_OAUTH } from "./config/default_config";
3
+ import { get_config_value, get_config_boolean } from "./config/config_loader.server.js";
4
+ import { DEFAULT_OAUTH } from "./config/default_config.js";
5
5
 
6
6
  // section: types
7
7
  export type OAuthConfig = {
@@ -1,7 +1,7 @@
1
1
  // file_description: server-only helper to read shared password requirements configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_number, get_config_boolean } from "./config/config_loader.server";
4
- import { DEFAULT_PASSWORD_REQUIREMENTS } from "./config/default_config";
3
+ import { get_config_number, get_config_boolean } from "./config/config_loader.server.js";
4
+ import { DEFAULT_PASSWORD_REQUIREMENTS } from "./config/default_config.js";
5
5
 
6
6
  // section: types
7
7
  export type PasswordRequirementsConfig = {
@@ -1,6 +1,6 @@
1
1
  // file_description: server-only helper to read profile picture menu configuration from hazo_auth_config.ini
2
2
  // section: imports
3
- import { get_config_value, get_config_boolean, get_config_array } from "./config/config_loader.server";
3
+ import { get_config_value, get_config_boolean, get_config_array } from "./config/config_loader.server.js";
4
4
 
5
5
  // section: types
6
6
  // Note: These types are also used in client components, but TypeScript types are erased at runtime
@@ -1,7 +1,7 @@
1
1
  // file_description: server-only helper to read profile picture configuration from hazo_auth_config.ini
2
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";
3
+ import { get_config_boolean, get_config_value, get_config_number, read_config_section } from "./config/config_loader.server.js";
4
+ import { create_app_logger } from "./app_logger.js";
5
5
 
6
6
  // section: types
7
7
  export type ProfilePictureConfig = {
@@ -1,10 +1,10 @@
1
1
  // file_description: server-only helper to read register layout configuration from hazo_auth_config.ini
2
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
- import registerDefaultImage from "../assets/images/register_default.jpg";
3
+ import { get_config_boolean, get_config_value, read_config_section } from "./config/config_loader.server.js";
4
+ import { get_password_requirements_config } from "./password_requirements_config.server.js";
5
+ import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
6
+ import { get_user_fields_config } from "./user_fields_config.server.js";
7
+ import registerDefaultImage from "../assets/images/register_default.jpg.js";
8
8
 
9
9
  // section: types
10
10
  import type { StaticImageData } from "next/image";
@@ -1,9 +1,9 @@
1
1
  // file_description: server-only helper to read reset password layout configuration from hazo_auth_config.ini
2
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
- import resetPasswordDefaultImage from "../assets/images/reset_password_default.jpg";
3
+ import { get_config_value } from "./config/config_loader.server.js";
4
+ import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
5
+ import { get_password_requirements_config } from "./password_requirements_config.server.js";
6
+ import resetPasswordDefaultImage from "../assets/images/reset_password_default.jpg.js";
7
7
 
8
8
  // section: types
9
9
  import type { StaticImageData } from "next/image";
@@ -5,9 +5,9 @@ import {
5
5
  get_config_number,
6
6
  get_config_boolean,
7
7
  get_config_array,
8
- } from "./config/config_loader.server";
8
+ } from "./config/config_loader.server.js";
9
9
  import type { ScopeLevel } from "./services/scope_service";
10
- import { SCOPE_LEVELS } from "./services/scope_service";
10
+ import { SCOPE_LEVELS } from "./services/scope_service.js";
11
11
 
12
12
  // section: types
13
13
 
@@ -2,8 +2,8 @@
2
2
  // section: imports
3
3
  import fs from "fs";
4
4
  import path from "path";
5
- import { create_app_logger } from "../app_logger";
6
- import { read_config_section } from "../config/config_loader.server";
5
+ import { create_app_logger } from "../app_logger.js";
6
+ import { read_config_section } from "../config/config_loader.server.js";
7
7
  import type { EmailerConfig, SendEmailOptions } from "hazo_notify";
8
8
 
9
9
  // section: types
@@ -3,9 +3,9 @@
3
3
  import type { HazoConnectAdapter } from "hazo_connect";
4
4
  import { createCrudService } from "hazo_connect/server";
5
5
  import argon2 from "argon2";
6
- import { create_token } from "./token_service";
7
- import { send_template_email } from "./email_service";
8
- import { create_app_logger } from "../app_logger";
6
+ import { create_token } from "./token_service.js";
7
+ import { send_template_email } from "./email_service.js";
8
+ import { create_app_logger } from "../app_logger.js";
9
9
 
10
10
  // section: types
11
11
  export type EmailVerificationTokenData = {
@@ -3,9 +3,9 @@
3
3
  import type { HazoConnectAdapter } from "hazo_connect";
4
4
  import { createCrudService } from "hazo_connect/server";
5
5
  import argon2 from "argon2";
6
- import { create_app_logger } from "../app_logger";
7
- import { sanitize_error_for_user } from "../utils/error_sanitizer";
8
- import { get_filename, get_line_number } from "../utils/api_route_helpers";
6
+ import { create_app_logger } from "../app_logger.js";
7
+ import { sanitize_error_for_user } from "../utils/error_sanitizer.js";
8
+ import { get_filename, get_line_number } from "../utils/api_route_helpers.js";
9
9
 
10
10
  // section: types
11
11
  export type LoginData = {
@@ -3,10 +3,10 @@
3
3
  import type { HazoConnectAdapter } from "hazo_connect";
4
4
  import { createCrudService } from "hazo_connect/server";
5
5
  import { randomUUID } from "crypto";
6
- import { create_app_logger } from "../app_logger";
7
- import { sanitize_error_for_user } from "../utils/error_sanitizer";
8
- import { get_line_number } from "../utils/api_route_helpers";
9
- import { get_oauth_config } from "../oauth_config.server";
6
+ import { create_app_logger } from "../app_logger.js";
7
+ import { sanitize_error_for_user } from "../utils/error_sanitizer.js";
8
+ import { get_line_number } from "../utils/api_route_helpers.js";
9
+ import { get_oauth_config } from "../oauth_config.server.js";
10
10
 
11
11
  // section: types
12
12
  export type GoogleOAuthData = {