Enable demo mode features, auto-fill demo credentials, and enhance branding integration

- Added `DEMO_MODE` to backend configuration with relaxed security support for specific demo accounts.
- Updated password validators to allow predefined weak passwords in demo mode.
- Auto-fill login forms with demo credentials via query parameters for improved demo accessibility.
- Introduced demo user creation logic during database initialization if `DEMO_MODE` is enabled.
- Replaced `img` tags with `next/image` for consistent and optimized visuals in branding elements.
- Refined footer, header, and layout components to incorporate improved logo handling.
This commit is contained in:
Felipe Cardoso
2025-11-21 07:42:40 +01:00
parent 0e34cab921
commit a410586cfb
14 changed files with 138 additions and 24 deletions

View File

@@ -6,8 +6,9 @@
'use client';
import { useState } from 'react';
import { useState, useEffect } from 'react';
import { Link } from '@/lib/i18n/routing';
import { useSearchParams } from 'next/navigation';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
@@ -82,6 +83,9 @@ export function LoginForm({
const [serverError, setServerError] = useState<string | null>(null);
const loginMutation = useLogin();
// Get query parameters for demo auto-fill
const searchParams = useSearchParams();
const loginSchema = createLoginSchema((key: string) => {
if (key.startsWith('validation.')) {
return tValidation(key.replace('validation.', ''));
@@ -102,6 +106,15 @@ export function LoginForm({
},
});
// Auto-fill form from query params (for demo mode)
useEffect(() => {
const email = searchParams.get('email');
const password = searchParams.get('password');
if (email) form.setValue('email', email);
if (password) form.setValue('password', password);
}, [searchParams, form]);
const onSubmit = async (data: LoginFormData) => {
try {
// Clear previous errors