hazo_auth 5.1.40 → 5.3.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 +46 -0
- package/cli-src/lib/auth/ensure_anon_id.server.ts +88 -0
- package/cli-src/lib/auth/index.ts +3 -0
- package/cli-src/lib/cookies_config.edge.ts +1 -0
- package/cli-src/lib/cookies_config.server.ts +1 -0
- package/cli-src/lib/hazo_connect_setup.server.ts +0 -8
- package/cli-src/lib/services/email_service.ts +136 -289
- package/cli-src/lib/services/email_template_manifest.ts +104 -0
- package/cli-src/lib/services/email_templates/email_verification.html +18 -0
- package/cli-src/lib/services/email_templates/email_verification.txt +9 -0
- package/cli-src/lib/services/email_templates/forgot_password.html +18 -0
- package/cli-src/lib/services/email_templates/forgot_password.txt +9 -0
- package/cli-src/lib/services/email_templates/password_changed.html +14 -0
- package/cli-src/lib/services/email_templates/password_changed.txt +9 -0
- package/cli-src/lib/services/session_token_service.ts +2 -2
- package/cli-src/lib/ui_shell_config.server.ts +6 -2
- package/dist/components/layouts/login/index.d.ts +16 -3
- package/dist/components/layouts/login/index.d.ts.map +1 -1
- package/dist/components/layouts/login/index.js +49 -5
- package/dist/components/layouts/register/index.d.ts +7 -3
- package/dist/components/layouts/register/index.d.ts.map +1 -1
- package/dist/components/layouts/register/index.js +36 -3
- package/dist/components/layouts/shared/components/floating_home_link.d.ts +20 -0
- package/dist/components/layouts/shared/components/floating_home_link.d.ts.map +1 -0
- package/dist/components/layouts/shared/components/floating_home_link.js +29 -0
- package/dist/components/layouts/shared/components/profile_pic_menu.d.ts +8 -0
- package/dist/components/layouts/shared/components/profile_pic_menu.d.ts.map +1 -1
- package/dist/components/layouts/shared/components/profile_pic_menu.js +18 -8
- package/dist/components/layouts/shared/index.d.ts +2 -0
- package/dist/components/layouts/shared/index.d.ts.map +1 -1
- package/dist/components/layouts/shared/index.js +1 -0
- package/dist/lib/auth/ensure_anon_id.server.d.ts +21 -0
- package/dist/lib/auth/ensure_anon_id.server.d.ts.map +1 -0
- package/dist/lib/auth/ensure_anon_id.server.js +73 -0
- package/dist/lib/auth/index.d.ts +1 -0
- package/dist/lib/auth/index.d.ts.map +1 -1
- package/dist/lib/auth/index.js +2 -0
- package/dist/lib/cookies_config.edge.d.ts +1 -0
- package/dist/lib/cookies_config.edge.d.ts.map +1 -1
- package/dist/lib/cookies_config.edge.js +1 -0
- package/dist/lib/cookies_config.server.d.ts +1 -0
- package/dist/lib/cookies_config.server.d.ts.map +1 -1
- package/dist/lib/cookies_config.server.js +1 -0
- package/dist/lib/hazo_connect_setup.server.d.ts.map +1 -1
- package/dist/lib/hazo_connect_setup.server.js +0 -8
- package/dist/lib/services/email_service.d.ts +17 -4
- package/dist/lib/services/email_service.d.ts.map +1 -1
- package/dist/lib/services/email_service.js +93 -221
- package/dist/lib/services/email_template_manifest.d.ts +11 -0
- package/dist/lib/services/email_template_manifest.d.ts.map +1 -0
- package/dist/lib/services/email_template_manifest.js +95 -0
- package/dist/lib/services/email_templates/email_verification.html +18 -0
- package/dist/lib/services/email_templates/email_verification.txt +9 -0
- package/dist/lib/services/email_templates/forgot_password.html +18 -0
- package/dist/lib/services/email_templates/forgot_password.txt +9 -0
- package/dist/lib/services/email_templates/password_changed.html +14 -0
- package/dist/lib/services/email_templates/password_changed.txt +9 -0
- package/dist/lib/services/session_token_service.js +2 -2
- package/dist/lib/ui_shell_config.server.d.ts.map +1 -1
- package/dist/lib/ui_shell_config.server.js +6 -2
- package/dist/server/routes/oauth_google_callback.d.ts.map +1 -1
- package/dist/server/routes/oauth_google_callback.js +33 -6
- package/dist/server-lib.d.ts +1 -0
- package/dist/server-lib.d.ts.map +1 -1
- package/dist/server-lib.js +1 -0
- package/dist/server_pages/login.d.ts +13 -1
- package/dist/server_pages/login.d.ts.map +1 -1
- package/dist/server_pages/login.js +25 -9
- package/dist/server_pages/login_client_wrapper.d.ts +6 -4
- package/dist/server_pages/login_client_wrapper.d.ts.map +1 -1
- package/dist/server_pages/login_client_wrapper.js +2 -2
- package/dist/server_pages/register.d.ts +7 -1
- package/dist/server_pages/register.d.ts.map +1 -1
- package/dist/server_pages/register.js +18 -9
- package/dist/server_pages/register_client_wrapper.d.ts +6 -4
- package/dist/server_pages/register_client_wrapper.d.ts.map +1 -1
- package/dist/server_pages/register_client_wrapper.js +2 -2
- package/package.json +26 -20
- package/cli-src/assets/images/new_firm_default.jpg +0 -0
- package/cli-src/lib/auth/org_cache.ts +0 -148
- package/cli-src/lib/index.ts +0 -48
- package/cli-src/lib/services/org_service.ts +0 -965
- package/cli-src/lib/services/scope_labels_service.ts +0 -348
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
// file_description: LRU cache implementation for organization lookups with TTL and size limits
|
|
2
|
-
// section: types
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Cached organization info for hazo_get_auth
|
|
6
|
-
*/
|
|
7
|
-
export type OrgCacheEntry = {
|
|
8
|
-
org_id: string;
|
|
9
|
-
org_name: string;
|
|
10
|
-
parent_org_id: string | null;
|
|
11
|
-
parent_org_name: string | null;
|
|
12
|
-
root_org_id: string | null;
|
|
13
|
-
root_org_name: string | null;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Internal cache entry with metadata
|
|
18
|
-
*/
|
|
19
|
-
type CacheItem = {
|
|
20
|
-
entry: OrgCacheEntry;
|
|
21
|
-
timestamp: number; // Unix timestamp in milliseconds
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* LRU cache implementation for organization lookups
|
|
26
|
-
* Uses Map to maintain insertion order for LRU eviction
|
|
27
|
-
*/
|
|
28
|
-
class OrgCache {
|
|
29
|
-
private cache: Map<string, CacheItem>;
|
|
30
|
-
private max_size: number;
|
|
31
|
-
private ttl_ms: number;
|
|
32
|
-
|
|
33
|
-
constructor(max_size: number, ttl_minutes: number) {
|
|
34
|
-
this.cache = new Map();
|
|
35
|
-
this.max_size = max_size;
|
|
36
|
-
this.ttl_ms = ttl_minutes * 60 * 1000;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Gets a cache entry for an organization
|
|
41
|
-
* Returns undefined if not found or expired
|
|
42
|
-
* @param org_id - Organization ID to look up
|
|
43
|
-
* @returns Cache entry or undefined
|
|
44
|
-
*/
|
|
45
|
-
get(org_id: string): OrgCacheEntry | undefined {
|
|
46
|
-
const item = this.cache.get(org_id);
|
|
47
|
-
|
|
48
|
-
if (!item) {
|
|
49
|
-
return undefined;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const now = Date.now();
|
|
53
|
-
const age = now - item.timestamp;
|
|
54
|
-
|
|
55
|
-
// Check if entry is expired (TTL)
|
|
56
|
-
if (age > this.ttl_ms) {
|
|
57
|
-
this.cache.delete(org_id);
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Move to end (most recently used)
|
|
62
|
-
this.cache.delete(org_id);
|
|
63
|
-
this.cache.set(org_id, item);
|
|
64
|
-
|
|
65
|
-
return item.entry;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Sets a cache entry for an organization
|
|
70
|
-
* Evicts least recently used entries if cache is full
|
|
71
|
-
* @param org_id - Organization ID
|
|
72
|
-
* @param entry - Organization cache entry
|
|
73
|
-
*/
|
|
74
|
-
set(org_id: string, entry: OrgCacheEntry): void {
|
|
75
|
-
// Evict LRU entries if cache is full
|
|
76
|
-
while (this.cache.size >= this.max_size) {
|
|
77
|
-
const first_key = this.cache.keys().next().value;
|
|
78
|
-
if (first_key) {
|
|
79
|
-
this.cache.delete(first_key);
|
|
80
|
-
} else {
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const item: CacheItem = {
|
|
86
|
-
entry,
|
|
87
|
-
timestamp: Date.now(),
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
this.cache.set(org_id, item);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Invalidates cache for a specific organization
|
|
95
|
-
* @param org_id - Organization ID to invalidate
|
|
96
|
-
*/
|
|
97
|
-
invalidate(org_id: string): void {
|
|
98
|
-
this.cache.delete(org_id);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Invalidates all cache entries
|
|
103
|
-
*/
|
|
104
|
-
invalidate_all(): void {
|
|
105
|
-
this.cache.clear();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Gets cache statistics
|
|
110
|
-
* @returns Object with cache size and max size
|
|
111
|
-
*/
|
|
112
|
-
get_stats(): {
|
|
113
|
-
size: number;
|
|
114
|
-
max_size: number;
|
|
115
|
-
} {
|
|
116
|
-
return {
|
|
117
|
-
size: this.cache.size,
|
|
118
|
-
max_size: this.max_size,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// section: singleton
|
|
124
|
-
// Global org cache instance (initialized with defaults, will be configured on first use)
|
|
125
|
-
let org_cache_instance: OrgCache | null = null;
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Gets or creates the global org cache instance
|
|
129
|
-
* @param max_size - Maximum cache size (default: 1000)
|
|
130
|
-
* @param ttl_minutes - TTL in minutes (default: 15)
|
|
131
|
-
* @returns Org cache instance
|
|
132
|
-
*/
|
|
133
|
-
export function get_org_cache(
|
|
134
|
-
max_size: number = 1000,
|
|
135
|
-
ttl_minutes: number = 15,
|
|
136
|
-
): OrgCache {
|
|
137
|
-
if (!org_cache_instance) {
|
|
138
|
-
org_cache_instance = new OrgCache(max_size, ttl_minutes);
|
|
139
|
-
}
|
|
140
|
-
return org_cache_instance;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Resets the global org cache instance (useful for testing)
|
|
145
|
-
*/
|
|
146
|
-
export function reset_org_cache(): void {
|
|
147
|
-
org_cache_instance = null;
|
|
148
|
-
}
|
package/cli-src/lib/index.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// file_description: barrel export for lib utilities
|
|
2
|
-
// section: auth_exports
|
|
3
|
-
export * from "./auth/index.js";
|
|
4
|
-
|
|
5
|
-
// section: service_exports
|
|
6
|
-
export * from "./services/index.js";
|
|
7
|
-
|
|
8
|
-
// section: utility_exports
|
|
9
|
-
export { cn, merge_class_names } from "./utils.js";
|
|
10
|
-
|
|
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.js";
|
|
13
|
-
|
|
14
|
-
// section: hazo_connect_exports
|
|
15
|
-
export { create_sqlite_hazo_connect } from "./hazo_connect_setup.js";
|
|
16
|
-
export { get_hazo_connect_instance } from "./hazo_connect_instance.server.js";
|
|
17
|
-
|
|
18
|
-
// section: logger_exports
|
|
19
|
-
export { create_app_logger } from "./app_logger.js";
|
|
20
|
-
|
|
21
|
-
// section: config_server_exports
|
|
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
|
-
export type { OAuthConfig } from "./oauth_config.server";
|
|
41
|
-
export { get_branding_config, is_branding_enabled, is_allowed_logo_format, get_max_logo_size_bytes } from "./branding_config.server.js";
|
|
42
|
-
export type { FirmBrandingConfig } from "./branding_config.server";
|
|
43
|
-
|
|
44
|
-
// section: util_exports
|
|
45
|
-
export { sanitize_error_for_user } from "./utils/error_sanitizer.js";
|
|
46
|
-
export type { ErrorSanitizationOptions } from "./utils/error_sanitizer";
|
|
47
|
-
export * from "./utils/api_route_helpers.js";
|
|
48
|
-
|