hazo_auth 4.6.0 → 4.6.2
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/cli-src/lib/config/default_config.ts +4 -4
- package/cli-src/lib/email_verification_config.server.ts +10 -7
- package/cli-src/lib/forgot_password_config.server.ts +10 -7
- package/cli-src/lib/login_config.server.ts +10 -7
- package/cli-src/lib/register_config.server.ts +10 -7
- package/cli-src/lib/reset_password_config.server.ts +10 -7
- package/dist/components/layouts/dev_lock/index.d.ts +1 -1
- package/dist/components/layouts/dev_lock/index.d.ts.map +1 -1
- package/dist/components/layouts/dev_lock/index.js +4 -2
- package/dist/components/layouts/shared/components/auth_navbar.d.ts +1 -1
- package/dist/components/layouts/shared/components/auth_navbar.d.ts.map +1 -1
- package/dist/components/layouts/shared/components/auth_navbar.js +4 -2
- package/dist/components/layouts/shared/components/form_action_buttons.js +3 -3
- package/dist/components/layouts/shared/components/password_field.d.ts.map +1 -1
- package/dist/components/layouts/shared/components/password_field.js +8 -1
- package/dist/lib/config/default_config.d.ts +8 -8
- package/dist/lib/config/default_config.d.ts.map +1 -1
- package/dist/lib/config/default_config.js +4 -4
- package/dist/lib/email_verification_config.server.d.ts +1 -2
- package/dist/lib/email_verification_config.server.d.ts.map +1 -1
- package/dist/lib/email_verification_config.server.js +7 -4
- package/dist/lib/forgot_password_config.server.d.ts +1 -2
- package/dist/lib/forgot_password_config.server.d.ts.map +1 -1
- package/dist/lib/forgot_password_config.server.js +7 -4
- package/dist/lib/login_config.server.d.ts +1 -2
- package/dist/lib/login_config.server.d.ts.map +1 -1
- package/dist/lib/login_config.server.js +7 -4
- package/dist/lib/register_config.server.d.ts +1 -2
- package/dist/lib/register_config.server.d.ts.map +1 -1
- package/dist/lib/register_config.server.js +7 -4
- package/dist/lib/reset_password_config.server.d.ts +1 -2
- package/dist/lib/reset_password_config.server.d.ts.map +1 -1
- package/dist/lib/reset_password_config.server.js +7 -4
- package/hazo_auth_config.example.ini +44 -1
- package/package.json +2 -1
- package/public/hazo_auth/images/forgot_password_default.jpg +0 -0
- package/public/hazo_auth/images/login_default.jpg +0 -0
- package/public/hazo_auth/images/register_default.jpg +0 -0
- package/public/hazo_auth/images/reset_password_default.jpg +0 -0
- package/public/hazo_auth/images/verify_email_default.jpg +0 -0
|
@@ -181,8 +181,8 @@ export const DEFAULT_MULTI_TENANCY = {
|
|
|
181
181
|
export const DEFAULT_NAVBAR = {
|
|
182
182
|
/** Enable navbar on auth pages */
|
|
183
183
|
enable_navbar: true,
|
|
184
|
-
/** Logo image path (
|
|
185
|
-
logo_path: "
|
|
184
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
185
|
+
logo_path: "",
|
|
186
186
|
/** Logo width in pixels */
|
|
187
187
|
logo_width: 32,
|
|
188
188
|
/** Logo height in pixels */
|
|
@@ -219,8 +219,8 @@ export const DEFAULT_DEV_LOCK = {
|
|
|
219
219
|
session_duration_days: 7,
|
|
220
220
|
/** Background color (default: black) */
|
|
221
221
|
background_color: "#000000",
|
|
222
|
-
/** Logo image path (
|
|
223
|
-
logo_path: "
|
|
222
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
223
|
+
logo_path: "",
|
|
224
224
|
/** Logo width in pixels */
|
|
225
225
|
logo_width: 120,
|
|
226
226
|
/** Logo height in pixels */
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
// section: imports
|
|
3
3
|
import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
|
|
4
4
|
import { get_config_value } from "./config/config_loader.server.js";
|
|
5
|
-
import verifyEmailDefaultImage from "../assets/images/verify_email_default.jpg.js";
|
|
6
5
|
|
|
7
|
-
//
|
|
8
|
-
|
|
6
|
+
// Default image path - consuming apps should either:
|
|
7
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
8
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
9
|
+
const DEFAULT_VERIFY_EMAIL_IMAGE_PATH = "/hazo_auth/images/verify_email_default.jpg";
|
|
9
10
|
|
|
11
|
+
// section: types
|
|
10
12
|
export type EmailVerificationConfig = {
|
|
11
13
|
alreadyLoggedInMessage: string;
|
|
12
14
|
showLogoutButton: boolean;
|
|
13
15
|
showReturnHomeButton: boolean;
|
|
14
16
|
returnHomeButtonLabel: string;
|
|
15
17
|
returnHomePath: string;
|
|
16
|
-
imageSrc: string
|
|
18
|
+
imageSrc: string;
|
|
17
19
|
imageAlt: string;
|
|
18
20
|
imageBackgroundColor: string;
|
|
19
21
|
};
|
|
@@ -31,12 +33,13 @@ export function get_email_verification_config(): EmailVerificationConfig {
|
|
|
31
33
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
32
34
|
|
|
33
35
|
// Read image configuration
|
|
34
|
-
// If not set in config, falls back to default image
|
|
36
|
+
// If not set in config, falls back to default path-based image
|
|
37
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
35
38
|
const imageSrc = get_config_value(
|
|
36
39
|
section,
|
|
37
40
|
"image_src",
|
|
38
|
-
|
|
39
|
-
)
|
|
41
|
+
DEFAULT_VERIFY_EMAIL_IMAGE_PATH
|
|
42
|
+
);
|
|
40
43
|
|
|
41
44
|
const imageAlt = get_config_value(
|
|
42
45
|
section,
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
// section: imports
|
|
3
3
|
import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
|
|
4
4
|
import { get_config_value } from "./config/config_loader.server.js";
|
|
5
|
-
import forgotPasswordDefaultImage from "../assets/images/forgot_password_default.jpg.js";
|
|
6
5
|
|
|
7
|
-
//
|
|
8
|
-
|
|
6
|
+
// Default image path - consuming apps should either:
|
|
7
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
8
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
9
|
+
const DEFAULT_FORGOT_PASSWORD_IMAGE_PATH = "/hazo_auth/images/forgot_password_default.jpg";
|
|
9
10
|
|
|
11
|
+
// section: types
|
|
10
12
|
export type ForgotPasswordConfig = {
|
|
11
13
|
alreadyLoggedInMessage: string;
|
|
12
14
|
showLogoutButton: boolean;
|
|
13
15
|
showReturnHomeButton: boolean;
|
|
14
16
|
returnHomeButtonLabel: string;
|
|
15
17
|
returnHomePath: string;
|
|
16
|
-
imageSrc: string
|
|
18
|
+
imageSrc: string;
|
|
17
19
|
imageAlt: string;
|
|
18
20
|
imageBackgroundColor: string;
|
|
19
21
|
};
|
|
@@ -31,12 +33,13 @@ export function get_forgot_password_config(): ForgotPasswordConfig {
|
|
|
31
33
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
32
34
|
|
|
33
35
|
// Read image configuration
|
|
34
|
-
// If not set in config, falls back to default image
|
|
36
|
+
// If not set in config, falls back to default path-based image
|
|
37
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
35
38
|
const imageSrc = get_config_value(
|
|
36
39
|
section,
|
|
37
40
|
"image_src",
|
|
38
|
-
|
|
39
|
-
)
|
|
41
|
+
DEFAULT_FORGOT_PASSWORD_IMAGE_PATH
|
|
42
|
+
);
|
|
40
43
|
|
|
41
44
|
const imageAlt = get_config_value(
|
|
42
45
|
section,
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
import { get_config_value } from "./config/config_loader.server.js";
|
|
4
4
|
import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
|
|
5
5
|
import { get_oauth_config, type OAuthConfig } from "./oauth_config.server.js";
|
|
6
|
-
import loginDefaultImage from "../assets/images/login_default.jpg.js";
|
|
7
6
|
|
|
8
|
-
//
|
|
9
|
-
|
|
7
|
+
// Default image path - consuming apps should either:
|
|
8
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
9
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
10
|
+
const DEFAULT_LOGIN_IMAGE_PATH = "/hazo_auth/images/login_default.jpg";
|
|
10
11
|
|
|
12
|
+
// section: types
|
|
11
13
|
export type LoginConfig = {
|
|
12
14
|
redirectRoute?: string;
|
|
13
15
|
successMessage: string;
|
|
@@ -20,7 +22,7 @@ export type LoginConfig = {
|
|
|
20
22
|
forgotPasswordLabel: string;
|
|
21
23
|
createAccountPath: string;
|
|
22
24
|
createAccountLabel: string;
|
|
23
|
-
imageSrc: string
|
|
25
|
+
imageSrc: string;
|
|
24
26
|
imageAlt: string;
|
|
25
27
|
imageBackgroundColor: string;
|
|
26
28
|
/** OAuth configuration */
|
|
@@ -64,12 +66,13 @@ export function get_login_config(): LoginConfig {
|
|
|
64
66
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
65
67
|
|
|
66
68
|
// Read image configuration
|
|
67
|
-
// If not set in config, falls back to default image
|
|
69
|
+
// If not set in config, falls back to default path-based image
|
|
70
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
68
71
|
const imageSrc = get_config_value(
|
|
69
72
|
section,
|
|
70
73
|
"image_src",
|
|
71
|
-
|
|
72
|
-
)
|
|
74
|
+
DEFAULT_LOGIN_IMAGE_PATH
|
|
75
|
+
);
|
|
73
76
|
|
|
74
77
|
const imageAlt = get_config_value(
|
|
75
78
|
section,
|
|
@@ -4,11 +4,13 @@ import { get_config_boolean, get_config_value, read_config_section } from "./con
|
|
|
4
4
|
import { get_password_requirements_config } from "./password_requirements_config.server.js";
|
|
5
5
|
import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
|
|
6
6
|
import { get_user_fields_config } from "./user_fields_config.server.js";
|
|
7
|
-
import registerDefaultImage from "../assets/images/register_default.jpg.js";
|
|
8
7
|
|
|
9
|
-
//
|
|
10
|
-
|
|
8
|
+
// Default image path - consuming apps should either:
|
|
9
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
10
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
11
|
+
const DEFAULT_REGISTER_IMAGE_PATH = "/hazo_auth/images/register_default.jpg";
|
|
11
12
|
|
|
13
|
+
// section: types
|
|
12
14
|
export type RegisterConfig = {
|
|
13
15
|
showNameField: boolean;
|
|
14
16
|
passwordRequirements: {
|
|
@@ -25,7 +27,7 @@ export type RegisterConfig = {
|
|
|
25
27
|
returnHomePath: string;
|
|
26
28
|
signInPath: string;
|
|
27
29
|
signInLabel: string;
|
|
28
|
-
imageSrc: string
|
|
30
|
+
imageSrc: string;
|
|
29
31
|
imageAlt: string;
|
|
30
32
|
imageBackgroundColor: string;
|
|
31
33
|
};
|
|
@@ -65,12 +67,13 @@ export function get_register_config(): RegisterConfig {
|
|
|
65
67
|
);
|
|
66
68
|
|
|
67
69
|
// Read image configuration
|
|
68
|
-
// If not set in config, falls back to default image
|
|
70
|
+
// If not set in config, falls back to default path-based image
|
|
71
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
69
72
|
const imageSrc = get_config_value(
|
|
70
73
|
"hazo_auth__register_layout",
|
|
71
74
|
"image_src",
|
|
72
|
-
|
|
73
|
-
)
|
|
75
|
+
DEFAULT_REGISTER_IMAGE_PATH
|
|
76
|
+
);
|
|
74
77
|
|
|
75
78
|
const imageAlt = get_config_value(
|
|
76
79
|
"hazo_auth__register_layout",
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
import { get_config_value } from "./config/config_loader.server.js";
|
|
4
4
|
import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
|
|
5
5
|
import { get_password_requirements_config } from "./password_requirements_config.server.js";
|
|
6
|
-
import resetPasswordDefaultImage from "../assets/images/reset_password_default.jpg.js";
|
|
7
6
|
|
|
8
|
-
//
|
|
9
|
-
|
|
7
|
+
// Default image path - consuming apps should either:
|
|
8
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
9
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
10
|
+
const DEFAULT_RESET_PASSWORD_IMAGE_PATH = "/hazo_auth/images/reset_password_default.jpg";
|
|
10
11
|
|
|
12
|
+
// section: types
|
|
11
13
|
export type ResetPasswordConfig = {
|
|
12
14
|
errorMessage: string;
|
|
13
15
|
successMessage: string;
|
|
@@ -25,7 +27,7 @@ export type ResetPasswordConfig = {
|
|
|
25
27
|
require_number: boolean;
|
|
26
28
|
require_special: boolean;
|
|
27
29
|
};
|
|
28
|
-
imageSrc: string
|
|
30
|
+
imageSrc: string;
|
|
29
31
|
imageAlt: string;
|
|
30
32
|
imageBackgroundColor: string;
|
|
31
33
|
};
|
|
@@ -66,12 +68,13 @@ export function get_reset_password_config(): ResetPasswordConfig {
|
|
|
66
68
|
const passwordRequirements = get_password_requirements_config();
|
|
67
69
|
|
|
68
70
|
// Read image configuration
|
|
69
|
-
// If not set in config, falls back to default image
|
|
71
|
+
// If not set in config, falls back to default path-based image
|
|
72
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
70
73
|
const imageSrc = get_config_value(
|
|
71
74
|
section,
|
|
72
75
|
"image_src",
|
|
73
|
-
|
|
74
|
-
)
|
|
76
|
+
DEFAULT_RESET_PASSWORD_IMAGE_PATH
|
|
77
|
+
);
|
|
75
78
|
|
|
76
79
|
const imageAlt = get_config_value(
|
|
77
80
|
section,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type DevLockLayoutProps = {
|
|
2
2
|
/** Background color (default: #000000 - black) */
|
|
3
3
|
background_color?: string;
|
|
4
|
-
/** Logo image path (
|
|
4
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
5
5
|
logo_path?: string;
|
|
6
6
|
/** Logo width in pixels (default: 120) */
|
|
7
7
|
logo_width?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/dev_lock/index.tsx"],"names":[],"mappings":"AAaA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/dev_lock/index.tsx"],"names":[],"mappings":"AAaA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAGF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,gBAA4B,EAC5B,SAAc,EACd,UAAgB,EAChB,WAAiB,EACjB,gBAAqB,EACrB,mBAAsC,EACtC,oBAA8C,EAC9C,kBAA6B,EAC7B,aAAoC,EACpC,UAAsB,EACtB,YAAwB,EACxB,QAAQ,GACT,EAAE,kBAAkB,2CAgJpB;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -10,7 +10,9 @@ import { Input } from "../../ui/input";
|
|
|
10
10
|
import { Button } from "../../ui/button";
|
|
11
11
|
import { Lock, AlertCircle, Loader2 } from "lucide-react";
|
|
12
12
|
// section: component
|
|
13
|
-
export default function DevLockLayout({ background_color = "#000000", logo_path = "
|
|
13
|
+
export default function DevLockLayout({ background_color = "#000000", logo_path = "", logo_width = 120, logo_height = 120, application_name = "", limited_access_text = "Limited Access", password_placeholder = "Enter access password", submit_button_text = "Unlock", error_message = "Incorrect password", text_color = "#ffffff", accent_color = "#3b82f6", onUnlock, }) {
|
|
14
|
+
// Only show logo if logo_path is configured (non-empty)
|
|
15
|
+
const showLogo = logo_path !== "";
|
|
14
16
|
const [password, setPassword] = useState("");
|
|
15
17
|
const [error, setError] = useState(null);
|
|
16
18
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -52,7 +54,7 @@ export default function DevLockLayout({ background_color = "#000000", logo_path
|
|
|
52
54
|
setError(null);
|
|
53
55
|
}
|
|
54
56
|
}, [error]);
|
|
55
|
-
return (_jsx("div", { className: "cls_dev_lock_layout min-h-screen flex flex-col items-center justify-center p-4", style: { backgroundColor: background_color }, children: _jsxs("div", { className: "cls_dev_lock_container flex flex-col items-center gap-6 max-w-sm w-full", children: [_jsx("div", { className: "cls_dev_lock_logo", children: _jsx(Image, { src: logo_path, alt: "Application logo", width: logo_width, height: logo_height, className: "object-contain", priority: true }) }), application_name && (_jsx("h1", { className: "cls_dev_lock_app_name text-2xl font-bold text-center", style: { color: text_color }, children: application_name })), _jsxs("div", { className: "cls_dev_lock_header flex items-center gap-2", children: [_jsx(Lock, { className: "w-5 h-5", style: { color: text_color } }), _jsx("span", { className: "cls_dev_lock_text text-sm font-medium uppercase tracking-wider", style: { color: text_color, opacity: 0.8 }, children: limited_access_text })] }), _jsxs("form", { onSubmit: handleSubmit, className: "cls_dev_lock_form flex flex-col gap-4 w-full", children: [_jsx("div", { className: "cls_dev_lock_input_wrapper relative", children: _jsx(Input, { type: "password", value: password, onChange: handlePasswordChange, placeholder: password_placeholder, className: "cls_dev_lock_input h-12 bg-white/10 border-white/20 text-white placeholder:text-white/50 focus:border-white/40 focus:ring-white/20", disabled: isLoading, autoFocus: true, autoComplete: "current-password" }) }), error && (_jsxs("div", { className: "cls_dev_lock_error flex items-center gap-2 text-sm", style: { color: "#ef4444" }, children: [_jsx(AlertCircle, { className: "w-4 h-4 flex-shrink-0" }), _jsx("span", { children: error })] })), _jsx(Button, { type: "submit", className: "cls_dev_lock_button h-12 font-medium transition-colors", style: {
|
|
57
|
+
return (_jsx("div", { className: "cls_dev_lock_layout min-h-screen flex flex-col items-center justify-center p-4", style: { backgroundColor: background_color }, children: _jsxs("div", { className: "cls_dev_lock_container flex flex-col items-center gap-6 max-w-sm w-full", children: [showLogo && (_jsx("div", { className: "cls_dev_lock_logo", children: _jsx(Image, { src: logo_path, alt: "Application logo", width: logo_width, height: logo_height, className: "object-contain", priority: true }) })), application_name && (_jsx("h1", { className: "cls_dev_lock_app_name text-2xl font-bold text-center", style: { color: text_color }, children: application_name })), _jsxs("div", { className: "cls_dev_lock_header flex items-center gap-2", children: [_jsx(Lock, { className: "w-5 h-5", style: { color: text_color } }), _jsx("span", { className: "cls_dev_lock_text text-sm font-medium uppercase tracking-wider", style: { color: text_color, opacity: 0.8 }, children: limited_access_text })] }), _jsxs("form", { onSubmit: handleSubmit, className: "cls_dev_lock_form flex flex-col gap-4 w-full", children: [_jsx("div", { className: "cls_dev_lock_input_wrapper relative", children: _jsx(Input, { type: "password", value: password, onChange: handlePasswordChange, placeholder: password_placeholder, className: "cls_dev_lock_input h-12 bg-white/10 border-white/20 text-white placeholder:text-white/50 focus:border-white/40 focus:ring-white/20", disabled: isLoading, autoFocus: true, autoComplete: "current-password" }) }), error && (_jsxs("div", { className: "cls_dev_lock_error flex items-center gap-2 text-sm", style: { color: "#ef4444" }, children: [_jsx(AlertCircle, { className: "w-4 h-4 flex-shrink-0" }), _jsx("span", { children: error })] })), _jsx(Button, { type: "submit", className: "cls_dev_lock_button h-12 font-medium transition-colors", style: {
|
|
56
58
|
backgroundColor: accent_color,
|
|
57
59
|
color: "#ffffff",
|
|
58
60
|
}, disabled: isLoading || !password, children: isLoading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "w-4 h-4 animate-spin mr-2" }), "Verifying..."] })) : (submit_button_text) })] })] }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth_navbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/auth_navbar.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,eAAe,GAAG;IAC5B,
|
|
1
|
+
{"version":3,"file":"auth_navbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/auth_navbar.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,eAAe,GAAG;IAC5B,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,wBAAgB,UAAU,CAAC,EACzB,SAAc,EACd,UAAe,EACf,WAAgB,EAChB,YAAiB,EACjB,SAAe,EACf,UAAmB,EACnB,cAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,MAAW,EACX,SAAS,GACV,EAAE,eAAe,2CAuDjB"}
|
|
@@ -8,7 +8,9 @@ import Image from "next/image";
|
|
|
8
8
|
import { Home } from "lucide-react";
|
|
9
9
|
import { cn } from "../../../../lib/utils";
|
|
10
10
|
// section: component
|
|
11
|
-
export function AuthNavbar({ logo_path = "
|
|
11
|
+
export function AuthNavbar({ logo_path = "", logo_width = 32, logo_height = 32, company_name = "", home_path = "/", home_label = "Home", show_home_link = true, background_color, text_color, height = 64, className, }) {
|
|
12
|
+
// Only show logo if logo_path is configured (non-empty)
|
|
13
|
+
const showLogo = logo_path !== "";
|
|
12
14
|
const navStyle = Object.assign(Object.assign({ height: `${height}px` }, (background_color && { backgroundColor: background_color })), (text_color && { color: text_color }));
|
|
13
|
-
return (_jsxs("nav", { className: cn("cls_auth_navbar flex w-full items-center justify-between border-b border-border/40 bg-background/95 px-4 backdrop-blur supports-[backdrop-filter]:bg-background/60", className), style: navStyle, "aria-label": "Authentication page navigation", children: [_jsx("div", { className: "cls_auth_navbar_brand flex items-center gap-3", children: _jsxs(Link, { href: home_path, className: "cls_auth_navbar_logo_link flex items-center gap-3", children: [_jsx(Image, { src: logo_path, alt: company_name ? `${company_name} logo` : "Logo", width: logo_width, height: logo_height, className: "cls_auth_navbar_logo object-contain" }), company_name && (_jsx("span", { className: "cls_auth_navbar_company_name text-lg font-semibold text-foreground", children: company_name }))] }) }), show_home_link && (_jsx("div", { className: "cls_auth_navbar_links flex items-center gap-4", children: _jsxs(Link, { href: home_path, className: "cls_auth_navbar_home_link flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground", "aria-label": `Navigate to ${home_label}`, children: [_jsx(Home, { className: "h-4 w-4", "aria-hidden": "true" }), _jsx("span", { children: home_label })] }) }))] }));
|
|
15
|
+
return (_jsxs("nav", { className: cn("cls_auth_navbar flex w-full items-center justify-between border-b border-border/40 bg-background/95 px-4 backdrop-blur supports-[backdrop-filter]:bg-background/60", className), style: navStyle, "aria-label": "Authentication page navigation", children: [_jsx("div", { className: "cls_auth_navbar_brand flex items-center gap-3", children: (showLogo || company_name) && (_jsxs(Link, { href: home_path, className: "cls_auth_navbar_logo_link flex items-center gap-3", children: [showLogo && (_jsx(Image, { src: logo_path, alt: company_name ? `${company_name} logo` : "Logo", width: logo_width, height: logo_height, className: "cls_auth_navbar_logo object-contain" })), company_name && (_jsx("span", { className: "cls_auth_navbar_company_name text-lg font-semibold text-foreground", children: company_name }))] })) }), show_home_link && (_jsx("div", { className: "cls_auth_navbar_links flex items-center gap-4", children: _jsxs(Link, { href: home_path, className: "cls_auth_navbar_home_link flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground", "aria-label": `Navigate to ${home_label}`, children: [_jsx(Home, { className: "h-4 w-4", "aria-hidden": "true" }), _jsx("span", { children: home_label })] }) }))] }));
|
|
14
16
|
}
|
|
@@ -5,11 +5,11 @@ import { CircleCheckBig, CircleX } from "lucide-react";
|
|
|
5
5
|
import { Button } from "../../../ui/button";
|
|
6
6
|
// section: component
|
|
7
7
|
export function FormActionButtons({ submitLabel, cancelLabel, buttonPalette, isSubmitDisabled, onCancel, submitAriaLabel = "Submit form", cancelAriaLabel = "Cancel form", className, }) {
|
|
8
|
-
return (_jsxs("div", { className: `cls_form_action_buttons mt-2 flex items-center justify-end gap-4 ${className !== null && className !== void 0 ? className : ""}`, children: [_jsxs(Button, { type: "submit", disabled: isSubmitDisabled, className: "cls_form_action_submit_button flex items-center gap-2", "aria-label": submitAriaLabel, style: {
|
|
8
|
+
return (_jsxs("div", { className: `cls_form_action_buttons mt-2 flex flex-wrap items-center justify-end gap-4 ${className !== null && className !== void 0 ? className : ""}`, children: [_jsxs(Button, { type: "submit", disabled: isSubmitDisabled, className: "cls_form_action_submit_button flex shrink-0 items-center gap-2", "aria-label": submitAriaLabel, style: {
|
|
9
9
|
backgroundColor: buttonPalette.submitBackground,
|
|
10
10
|
color: buttonPalette.submitText,
|
|
11
|
-
}, children: [_jsx(CircleCheckBig, { className: "h-4 w-4", "aria-hidden": "true" }), _jsx("span", { children: submitLabel })] }), _jsxs(Button, { type: "button", variant: "outline", onClick: onCancel, className: "cls_form_action_cancel_button flex items-center gap-2", "aria-label": cancelAriaLabel, style: {
|
|
11
|
+
}, children: [_jsx(CircleCheckBig, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }), _jsx("span", { children: submitLabel })] }), _jsxs(Button, { type: "button", variant: "outline", onClick: onCancel, className: "cls_form_action_cancel_button flex shrink-0 items-center gap-2", "aria-label": cancelAriaLabel, style: {
|
|
12
12
|
borderColor: buttonPalette.cancelBorder,
|
|
13
13
|
color: buttonPalette.cancelText,
|
|
14
|
-
}, children: [_jsx(CircleX, { className: "h-4 w-4", "aria-hidden": "true" }), _jsx("span", { children: cancelLabel })] })] }));
|
|
14
|
+
}, children: [_jsx(CircleX, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }), _jsx("span", { children: cancelLabel })] })] }));
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password_field.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/password_field.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAClC,CAAC;AAGF,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,kBAAkB,EAClB,YAAY,GACb,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"password_field.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/password_field.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAClC,CAAC;AAGF,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,kBAAkB,EAClB,YAAY,GACb,EAAE,kBAAkB,2CA6CpB"}
|
|
@@ -9,5 +9,12 @@ import { Input } from "../../../ui/input";
|
|
|
9
9
|
import { FieldErrorMessage } from "./field_error_message";
|
|
10
10
|
// section: component
|
|
11
11
|
export function PasswordField({ inputId, ariaLabel, value, placeholder, autoComplete, isVisible, onChange, onToggleVisibility, errorMessage, }) {
|
|
12
|
-
return (_jsxs("div", { className: "cls_password_field_wrapper", children: [_jsxs("div", { className: "relative", children: [_jsx(Input, { id: inputId, type: isVisible ? "text" : "password", value: value, onChange: (event) => onChange(event.target.value), autoComplete: autoComplete, placeholder: placeholder, "aria-label": ariaLabel, className: "cls_password_field_input pr-11" }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": `${isVisible ? "Hide" : "Show"} ${ariaLabel.toLowerCase()}`, onClick: onToggleVisibility, className: "cls_password_field_toggle absolute inset-y-0 right-1 my-auto h-8 w-8 text-muted-foreground hover:bg-transparent hover:text-foreground",
|
|
12
|
+
return (_jsxs("div", { className: "cls_password_field_wrapper", children: [_jsxs("div", { className: "cls_password_field_container relative", style: { position: "relative" }, children: [_jsx(Input, { id: inputId, type: isVisible ? "text" : "password", value: value, onChange: (event) => onChange(event.target.value), autoComplete: autoComplete, placeholder: placeholder, "aria-label": ariaLabel, className: "cls_password_field_input pr-11", style: { paddingRight: "2.75rem" } }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": `${isVisible ? "Hide" : "Show"} ${ariaLabel.toLowerCase()}`, onClick: onToggleVisibility, className: "cls_password_field_toggle absolute inset-y-0 right-1 my-auto h-8 w-8 text-muted-foreground hover:bg-transparent hover:text-foreground", style: {
|
|
13
|
+
position: "absolute",
|
|
14
|
+
top: "50%",
|
|
15
|
+
right: "0.25rem",
|
|
16
|
+
transform: "translateY(-50%)",
|
|
17
|
+
height: "2rem",
|
|
18
|
+
width: "2rem",
|
|
19
|
+
}, children: isVisible ? (_jsx(EyeOff, { className: "h-4 w-4", "aria-hidden": "true" })) : (_jsx(Eye, { className: "h-4 w-4", "aria-hidden": "true" })) })] }), errorMessage ? (_jsx("div", { className: "mt-1 min-h-0", children: _jsx(FieldErrorMessage, { message: errorMessage }) })) : null] }));
|
|
13
20
|
}
|
|
@@ -136,8 +136,8 @@ export declare const DEFAULT_MULTI_TENANCY: {
|
|
|
136
136
|
export declare const DEFAULT_NAVBAR: {
|
|
137
137
|
/** Enable navbar on auth pages */
|
|
138
138
|
readonly enable_navbar: true;
|
|
139
|
-
/** Logo image path (
|
|
140
|
-
readonly logo_path: "
|
|
139
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
140
|
+
readonly logo_path: "";
|
|
141
141
|
/** Logo width in pixels */
|
|
142
142
|
readonly logo_width: 32;
|
|
143
143
|
/** Logo height in pixels */
|
|
@@ -170,8 +170,8 @@ export declare const DEFAULT_DEV_LOCK: {
|
|
|
170
170
|
readonly session_duration_days: 7;
|
|
171
171
|
/** Background color (default: black) */
|
|
172
172
|
readonly background_color: "#000000";
|
|
173
|
-
/** Logo image path (
|
|
174
|
-
readonly logo_path: "
|
|
173
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
174
|
+
readonly logo_path: "";
|
|
175
175
|
/** Logo width in pixels */
|
|
176
176
|
readonly logo_width: 120;
|
|
177
177
|
/** Logo height in pixels */
|
|
@@ -328,8 +328,8 @@ export declare const HAZO_AUTH_DEFAULTS: {
|
|
|
328
328
|
readonly session_duration_days: 7;
|
|
329
329
|
/** Background color (default: black) */
|
|
330
330
|
readonly background_color: "#000000";
|
|
331
|
-
/** Logo image path (
|
|
332
|
-
readonly logo_path: "
|
|
331
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
332
|
+
readonly logo_path: "";
|
|
333
333
|
/** Logo width in pixels */
|
|
334
334
|
readonly logo_width: 120;
|
|
335
335
|
/** Logo height in pixels */
|
|
@@ -362,8 +362,8 @@ export declare const HAZO_AUTH_DEFAULTS: {
|
|
|
362
362
|
readonly navbar: {
|
|
363
363
|
/** Enable navbar on auth pages */
|
|
364
364
|
readonly enable_navbar: true;
|
|
365
|
-
/** Logo image path (
|
|
366
|
-
readonly logo_path: "
|
|
365
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
366
|
+
readonly logo_path: "";
|
|
367
367
|
/** Logo width in pixels */
|
|
368
368
|
readonly logo_width: 32;
|
|
369
369
|
/** Logo height in pixels */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default_config.d.ts","sourceRoot":"","sources":["../../../src/lib/config/default_config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B;;;;;;CAMhC,CAAC;AAGX,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAGX,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAGX,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAGX,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAGX,eAAO,MAAM,yBAAyB;;;;;;CAM5B,CAAC;AAGX,eAAO,MAAM,aAAa;4BACI,MAAM,GAAG,SAAS;;;;;;CAMtC,CAAC;AAGX,eAAO,MAAM,gBAAgB;4BACC,MAAM,GAAG,SAAS;;;;;CAKtC,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAGX,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAGX,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAGX,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAGX,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAGX,eAAO,MAAM,gBAAgB;0BACE,YAAY,GAAG,cAAc;;;;;CAKlD,CAAC;AAGX,eAAO,MAAM,wBAAwB;;;;;;;;CAQ3B,CAAC;AAGX,eAAO,MAAM,iBAAiB;;CAEpB,CAAC;AAGX,eAAO,MAAM,aAAa;IACxB,kHAAkH;;IAElH,8CAA8C;;IAE9C,iGAAiG;;IAEjG,kDAAkD;;IAElD,0EAA0E;;CAElE,CAAC;AAGX,eAAO,MAAM,qBAAqB;IAChC,oDAAoD;;IAEpD,yDAAyD;;IAEzD,mDAAmD;;IAEnD,0DAA0D;;CAElD,CAAC;AAGX,eAAO,MAAM,cAAc;IACzB,kCAAkC;;IAElC,
|
|
1
|
+
{"version":3,"file":"default_config.d.ts","sourceRoot":"","sources":["../../../src/lib/config/default_config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B;;;;;;CAMhC,CAAC;AAGX,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAGX,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAGX,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAGX,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAGX,eAAO,MAAM,yBAAyB;;;;;;CAM5B,CAAC;AAGX,eAAO,MAAM,aAAa;4BACI,MAAM,GAAG,SAAS;;;;;;CAMtC,CAAC;AAGX,eAAO,MAAM,gBAAgB;4BACC,MAAM,GAAG,SAAS;;;;;CAKtC,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAGX,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAGX,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAGX,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAGX,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAGX,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAGX,eAAO,MAAM,gBAAgB;0BACE,YAAY,GAAG,cAAc;;;;;CAKlD,CAAC;AAGX,eAAO,MAAM,wBAAwB;;;;;;;;CAQ3B,CAAC;AAGX,eAAO,MAAM,iBAAiB;;CAEpB,CAAC;AAGX,eAAO,MAAM,aAAa;IACxB,kHAAkH;;IAElH,8CAA8C;;IAE9C,iGAAiG;;IAEjG,kDAAkD;;IAElD,0EAA0E;;CAElE,CAAC;AAGX,eAAO,MAAM,qBAAqB;IAChC,oDAAoD;;IAEpD,yDAAyD;;IAEzD,mDAAmD;;IAEnD,0DAA0D;;CAElD,CAAC;AAGX,eAAO,MAAM,cAAc;IACzB,kCAAkC;;IAElC,iEAAiE;;IAEjE,2BAA2B;;IAE3B,4BAA4B;;IAE5B,sDAAsD;;IAEtD,qBAAqB;;IAErB,sBAAsB;;IAEtB,qBAAqB;;IAErB,4DAA4D;;IAE5D,0CAA0C;;IAE1C,8BAA8B;;CAEtB,CAAC;AAGX,eAAO,MAAM,kBAAkB;IAC7B,iDAAiD;;IAEjD,2DAA2D;;CAEnD,CAAC;AAGX,eAAO,MAAM,gBAAgB;IAC3B,4FAA4F;;IAE5F,+BAA+B;;IAE/B,wCAAwC;;IAExC,iEAAiE;;IAEjE,2BAA2B;;IAE3B,4BAA4B;;IAE5B,4CAA4C;;IAE5C,mDAAmD;;IAEnD,sCAAsC;;IAEtC,yBAAyB;;IAEzB,2CAA2C;;IAE3C,6CAA6C;;IAE7C,8CAA8C;;CAEtC,CAAC;AAGX;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCArLD,MAAM,GAAG,SAAS;;;;;;;;gCAUlB,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAqDjB,YAAY,GAAG,cAAc;;;;;;;;;;;;;;;;;;;QAyB1D,kHAAkH;;QAElH,8CAA8C;;QAE9C,iGAAiG;;QAEjG,kDAAkD;;QAElD,0EAA0E;;;;QAoD1E,4FAA4F;;QAE5F,+BAA+B;;QAE/B,wCAAwC;;QAExC,iEAAiE;;QAEjE,2BAA2B;;QAE3B,4BAA4B;;QAE5B,4CAA4C;;QAE5C,mDAAmD;;QAEnD,sCAAsC;;QAEtC,yBAAyB;;QAEzB,2CAA2C;;QAE3C,6CAA6C;;QAE7C,8CAA8C;;;;QAtE9C,oDAAoD;;QAEpD,yDAAyD;;QAEzD,mDAAmD;;QAEnD,0DAA0D;;;;QAM1D,kCAAkC;;QAElC,iEAAiE;;QAEjE,2BAA2B;;QAE3B,4BAA4B;;QAE5B,sDAAsD;;QAEtD,qBAAqB;;QAErB,sBAAsB;;QAEtB,qBAAqB;;QAErB,4DAA4D;;QAE5D,0CAA0C;;QAE1C,8BAA8B;;;;QAM9B,iDAAiD;;QAEjD,2DAA2D;;;CA+DnD,CAAC;AAGX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,kBAAkB,CAAC"}
|
|
@@ -160,8 +160,8 @@ export const DEFAULT_MULTI_TENANCY = {
|
|
|
160
160
|
export const DEFAULT_NAVBAR = {
|
|
161
161
|
/** Enable navbar on auth pages */
|
|
162
162
|
enable_navbar: true,
|
|
163
|
-
/** Logo image path (
|
|
164
|
-
logo_path: "
|
|
163
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
164
|
+
logo_path: "",
|
|
165
165
|
/** Logo width in pixels */
|
|
166
166
|
logo_width: 32,
|
|
167
167
|
/** Logo height in pixels */
|
|
@@ -196,8 +196,8 @@ export const DEFAULT_DEV_LOCK = {
|
|
|
196
196
|
session_duration_days: 7,
|
|
197
197
|
/** Background color (default: black) */
|
|
198
198
|
background_color: "#000000",
|
|
199
|
-
/** Logo image path (
|
|
200
|
-
logo_path: "
|
|
199
|
+
/** Logo image path (empty = no logo shown, configure to show) */
|
|
200
|
+
logo_path: "",
|
|
201
201
|
/** Logo width in pixels */
|
|
202
202
|
logo_width: 120,
|
|
203
203
|
/** Logo height in pixels */
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { StaticImageData } from "next/image";
|
|
2
1
|
export type EmailVerificationConfig = {
|
|
3
2
|
alreadyLoggedInMessage: string;
|
|
4
3
|
showLogoutButton: boolean;
|
|
5
4
|
showReturnHomeButton: boolean;
|
|
6
5
|
returnHomeButtonLabel: string;
|
|
7
6
|
returnHomePath: string;
|
|
8
|
-
imageSrc: string
|
|
7
|
+
imageSrc: string;
|
|
9
8
|
imageAlt: string;
|
|
10
9
|
imageBackgroundColor: string;
|
|
11
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email_verification_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/email_verification_config.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email_verification_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/email_verification_config.server.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,uBAAuB,GAAG;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,uBAAuB,CAoCvE"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
// section: imports
|
|
3
3
|
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
4
4
|
import { get_config_value } from "./config/config_loader.server";
|
|
5
|
-
|
|
5
|
+
// Default image path - consuming apps should either:
|
|
6
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
7
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
8
|
+
const DEFAULT_VERIFY_EMAIL_IMAGE_PATH = "/hazo_auth/images/verify_email_default.jpg";
|
|
6
9
|
// section: helpers
|
|
7
10
|
/**
|
|
8
11
|
* Reads email verification layout configuration from hazo_auth_config.ini file
|
|
@@ -14,9 +17,9 @@ export function get_email_verification_config() {
|
|
|
14
17
|
// Get shared already logged in config
|
|
15
18
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
16
19
|
// Read image configuration
|
|
17
|
-
// If not set in config, falls back to default image
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
// If not set in config, falls back to default path-based image
|
|
21
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
22
|
+
const imageSrc = get_config_value(section, "image_src", DEFAULT_VERIFY_EMAIL_IMAGE_PATH);
|
|
20
23
|
const imageAlt = get_config_value(section, "image_alt", "Email verification illustration");
|
|
21
24
|
const imageBackgroundColor = get_config_value(section, "image_background_color", "#f1f5f9");
|
|
22
25
|
return {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { StaticImageData } from "next/image";
|
|
2
1
|
export type ForgotPasswordConfig = {
|
|
3
2
|
alreadyLoggedInMessage: string;
|
|
4
3
|
showLogoutButton: boolean;
|
|
5
4
|
showReturnHomeButton: boolean;
|
|
6
5
|
returnHomeButtonLabel: string;
|
|
7
6
|
returnHomePath: string;
|
|
8
|
-
imageSrc: string
|
|
7
|
+
imageSrc: string;
|
|
9
8
|
imageAlt: string;
|
|
10
9
|
imageBackgroundColor: string;
|
|
11
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot_password_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/forgot_password_config.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"forgot_password_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/forgot_password_config.server.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CAoCjE"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
// section: imports
|
|
3
3
|
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
4
4
|
import { get_config_value } from "./config/config_loader.server";
|
|
5
|
-
|
|
5
|
+
// Default image path - consuming apps should either:
|
|
6
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
7
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
8
|
+
const DEFAULT_FORGOT_PASSWORD_IMAGE_PATH = "/hazo_auth/images/forgot_password_default.jpg";
|
|
6
9
|
// section: helpers
|
|
7
10
|
/**
|
|
8
11
|
* Reads forgot password layout configuration from hazo_auth_config.ini file
|
|
@@ -14,9 +17,9 @@ export function get_forgot_password_config() {
|
|
|
14
17
|
// Get shared already logged in config
|
|
15
18
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
16
19
|
// Read image configuration
|
|
17
|
-
// If not set in config, falls back to default image
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
// If not set in config, falls back to default path-based image
|
|
21
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
22
|
+
const imageSrc = get_config_value(section, "image_src", DEFAULT_FORGOT_PASSWORD_IMAGE_PATH);
|
|
20
23
|
const imageAlt = get_config_value(section, "image_alt", "Password recovery illustration");
|
|
21
24
|
const imageBackgroundColor = get_config_value(section, "image_background_color", "#f1f5f9");
|
|
22
25
|
return {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type OAuthConfig } from "./oauth_config.server";
|
|
2
|
-
import type { StaticImageData } from "next/image";
|
|
3
2
|
export type LoginConfig = {
|
|
4
3
|
redirectRoute?: string;
|
|
5
4
|
successMessage: string;
|
|
@@ -12,7 +11,7 @@ export type LoginConfig = {
|
|
|
12
11
|
forgotPasswordLabel: string;
|
|
13
12
|
createAccountPath: string;
|
|
14
13
|
createAccountLabel: string;
|
|
15
|
-
imageSrc: string
|
|
14
|
+
imageSrc: string;
|
|
16
15
|
imageAlt: string;
|
|
17
16
|
imageBackgroundColor: string;
|
|
18
17
|
/** OAuth configuration */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/login_config.server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"login_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/login_config.server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQ3E,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAsE9C"}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
import { get_config_value } from "./config/config_loader.server";
|
|
4
4
|
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
5
5
|
import { get_oauth_config } from "./oauth_config.server";
|
|
6
|
-
|
|
6
|
+
// Default image path - consuming apps should either:
|
|
7
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
8
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
9
|
+
const DEFAULT_LOGIN_IMAGE_PATH = "/hazo_auth/images/login_default.jpg";
|
|
7
10
|
// section: helpers
|
|
8
11
|
/**
|
|
9
12
|
* Reads login layout configuration from hazo_auth_config.ini file
|
|
@@ -24,9 +27,9 @@ export function get_login_config() {
|
|
|
24
27
|
// Get shared already logged in config
|
|
25
28
|
const alreadyLoggedInConfig = get_already_logged_in_config();
|
|
26
29
|
// Read image configuration
|
|
27
|
-
// If not set in config, falls back to default image
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
// If not set in config, falls back to default path-based image
|
|
31
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
32
|
+
const imageSrc = get_config_value(section, "image_src", DEFAULT_LOGIN_IMAGE_PATH);
|
|
30
33
|
const imageAlt = get_config_value(section, "image_alt", "Secure login illustration");
|
|
31
34
|
const imageBackgroundColor = get_config_value(section, "image_background_color", "#f1f5f9");
|
|
32
35
|
// Get OAuth configuration
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { StaticImageData } from "next/image";
|
|
2
1
|
export type RegisterConfig = {
|
|
3
2
|
showNameField: boolean;
|
|
4
3
|
passwordRequirements: {
|
|
@@ -15,7 +14,7 @@ export type RegisterConfig = {
|
|
|
15
14
|
returnHomePath: string;
|
|
16
15
|
signInPath: string;
|
|
17
16
|
signInLabel: string;
|
|
18
|
-
imageSrc: string
|
|
17
|
+
imageSrc: string;
|
|
19
18
|
imageAlt: string;
|
|
20
19
|
imageBackgroundColor: string;
|
|
21
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/register_config.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/register_config.server.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CA8DpD"}
|
|
@@ -4,7 +4,10 @@ import { get_config_boolean, get_config_value, read_config_section } from "./con
|
|
|
4
4
|
import { get_password_requirements_config } from "./password_requirements_config.server";
|
|
5
5
|
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
6
6
|
import { get_user_fields_config } from "./user_fields_config.server";
|
|
7
|
-
|
|
7
|
+
// Default image path - consuming apps should either:
|
|
8
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
9
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
10
|
+
const DEFAULT_REGISTER_IMAGE_PATH = "/hazo_auth/images/register_default.jpg";
|
|
8
11
|
// section: helpers
|
|
9
12
|
/**
|
|
10
13
|
* Reads register layout configuration from hazo_auth_config.ini file
|
|
@@ -27,9 +30,9 @@ export function get_register_config() {
|
|
|
27
30
|
const signInPath = get_config_value("hazo_auth__register_layout", "sign_in_path", "/hazo_auth/login");
|
|
28
31
|
const signInLabel = get_config_value("hazo_auth__register_layout", "sign_in_label", "Sign in");
|
|
29
32
|
// Read image configuration
|
|
30
|
-
// If not set in config, falls back to default image
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
// If not set in config, falls back to default path-based image
|
|
34
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
35
|
+
const imageSrc = get_config_value("hazo_auth__register_layout", "image_src", DEFAULT_REGISTER_IMAGE_PATH);
|
|
33
36
|
const imageAlt = get_config_value("hazo_auth__register_layout", "image_alt", "Modern building representing user registration");
|
|
34
37
|
const imageBackgroundColor = get_config_value("hazo_auth__register_layout", "image_background_color", "#e2e8f0");
|
|
35
38
|
return {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { StaticImageData } from "next/image";
|
|
2
1
|
export type ResetPasswordConfig = {
|
|
3
2
|
errorMessage: string;
|
|
4
3
|
successMessage: string;
|
|
@@ -16,7 +15,7 @@ export type ResetPasswordConfig = {
|
|
|
16
15
|
require_number: boolean;
|
|
17
16
|
require_special: boolean;
|
|
18
17
|
};
|
|
19
|
-
imageSrc: string
|
|
18
|
+
imageSrc: string;
|
|
20
19
|
imageAlt: string;
|
|
21
20
|
imageBackgroundColor: string;
|
|
22
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset_password_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/reset_password_config.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reset_password_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/reset_password_config.server.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAgE/D"}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
import { get_config_value } from "./config/config_loader.server";
|
|
4
4
|
import { get_already_logged_in_config } from "./already_logged_in_config.server";
|
|
5
5
|
import { get_password_requirements_config } from "./password_requirements_config.server";
|
|
6
|
-
|
|
6
|
+
// Default image path - consuming apps should either:
|
|
7
|
+
// 1. Configure their own image_src in hazo_auth_config.ini
|
|
8
|
+
// 2. Copy the default images from node_modules/hazo_auth/public/hazo_auth/images/ to their public folder
|
|
9
|
+
const DEFAULT_RESET_PASSWORD_IMAGE_PATH = "/hazo_auth/images/reset_password_default.jpg";
|
|
7
10
|
// section: helpers
|
|
8
11
|
/**
|
|
9
12
|
* Reads reset password layout configuration from hazo_auth_config.ini file
|
|
@@ -25,9 +28,9 @@ export function get_reset_password_config() {
|
|
|
25
28
|
// Get shared password requirements
|
|
26
29
|
const passwordRequirements = get_password_requirements_config();
|
|
27
30
|
// Read image configuration
|
|
28
|
-
// If not set in config, falls back to default image
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
// If not set in config, falls back to default path-based image
|
|
32
|
+
// Consuming apps should copy images to public/hazo_auth/images/ or configure their own image_src
|
|
33
|
+
const imageSrc = get_config_value(section, "image_src", DEFAULT_RESET_PASSWORD_IMAGE_PATH);
|
|
31
34
|
const imageAlt = get_config_value(section, "image_alt", "Reset password illustration");
|
|
32
35
|
const imageBackgroundColor = get_config_value(section, "image_background_color", "#f1f5f9");
|
|
33
36
|
return {
|
|
@@ -68,7 +68,8 @@ enable_admin_ui = true
|
|
|
68
68
|
|
|
69
69
|
[hazo_auth__register_layout]
|
|
70
70
|
# Image configuration
|
|
71
|
-
#
|
|
71
|
+
# Default: /hazo_auth/images/register_default.jpg (copy from node_modules/hazo_auth/public/hazo_auth)
|
|
72
|
+
# image_src = /hazo_auth/images/register_default.jpg
|
|
72
73
|
# image_alt = Illustration of a globe representing secure authentication workflows
|
|
73
74
|
# image_background_color = #e2e8f0
|
|
74
75
|
|
|
@@ -607,3 +608,45 @@ application_permission_list_defaults = admin_user_management,admin_role_manageme
|
|
|
607
608
|
# - PATCH /api/hazo_auth/org_management/orgs - Update organization
|
|
608
609
|
# - DELETE /api/hazo_auth/org_management/orgs?org_id=... - Soft delete (deactivate)
|
|
609
610
|
|
|
611
|
+
[hazo_auth__navbar]
|
|
612
|
+
# Navbar configuration for authentication pages (standalone layout mode only)
|
|
613
|
+
# The navbar appears at the top of auth pages when enabled
|
|
614
|
+
|
|
615
|
+
# Enable navbar on auth pages (true/false, default: true)
|
|
616
|
+
# enable_navbar = true
|
|
617
|
+
|
|
618
|
+
# Logo image path (empty = no logo shown)
|
|
619
|
+
# To show a logo, place an image in your public folder and set the path
|
|
620
|
+
# Example: logo_path = /logo.png
|
|
621
|
+
# logo_path =
|
|
622
|
+
|
|
623
|
+
# Logo dimensions in pixels (default: 32x32)
|
|
624
|
+
# logo_width = 32
|
|
625
|
+
# logo_height = 32
|
|
626
|
+
|
|
627
|
+
# Company/application name displayed next to logo (default: empty)
|
|
628
|
+
# company_name = My Company
|
|
629
|
+
|
|
630
|
+
# Home link configuration
|
|
631
|
+
# home_path = /
|
|
632
|
+
# home_label = Home
|
|
633
|
+
# show_home_link = true
|
|
634
|
+
|
|
635
|
+
# Styling (empty = inherit from theme)
|
|
636
|
+
# background_color =
|
|
637
|
+
# text_color =
|
|
638
|
+
# height = 64
|
|
639
|
+
|
|
640
|
+
# ============================================
|
|
641
|
+
# IMPORTANT: Default Images for Auth Pages
|
|
642
|
+
# ============================================
|
|
643
|
+
# The default images for login, register, forgot_password, reset_password,
|
|
644
|
+
# and verify_email pages are served from: /hazo_auth/images/
|
|
645
|
+
#
|
|
646
|
+
# To use these defaults, copy the images from the package to your public folder:
|
|
647
|
+
# cp -r node_modules/hazo_auth/public/hazo_auth public/
|
|
648
|
+
#
|
|
649
|
+
# Or configure your own images in the respective layout sections:
|
|
650
|
+
# [hazo_auth__login_layout]
|
|
651
|
+
# image_src = /your-custom-image.jpg
|
|
652
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_auth",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.2",
|
|
4
4
|
"description": "Zero-config authentication UI components for Next.js with RBAC, OAuth, multi-tenancy, and hierarchical scopes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|
|
@@ -167,6 +167,7 @@
|
|
|
167
167
|
"bin/**/*",
|
|
168
168
|
"cli-src/**/*",
|
|
169
169
|
"public/profile_pictures/library/**/*",
|
|
170
|
+
"public/hazo_auth/images/**/*",
|
|
170
171
|
"hazo_auth_config.example.ini",
|
|
171
172
|
"hazo_notify_config.example.ini",
|
|
172
173
|
"README.md",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|