From 4b33b2dd2460c70d176b961a7f86fb023d10eebe Mon Sep 17 00:00:00 2001 From: Leon Serfaty G Date: Fri, 18 Jul 2025 03:04:53 +0000 Subject: [PATCH] Now I cant login with the changed credentials leon@serfaty.co --- src/app/login/page.tsx | 11 +++++------ src/lib/actions/auth.ts | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 718351a..5ca6b98 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -17,6 +17,7 @@ import { CardTitle, } from '@/components/ui/card'; import { useRouter } from 'next/navigation'; +import { login } from '@/lib/actions/auth'; const loginSchema = z.object({ email: z.string().email({ message: 'Invalid email address.' }), @@ -38,18 +39,16 @@ export default function LoginPage() { const onSubmit = async (data: LoginFormValues) => { try { - // This is a mock login. In a real app, you'd call an authentication service. - console.log('Attempting to log in with:', data.email); - await new Promise(resolve => setTimeout(resolve, 1000)); + const result = await login(data); - if (data.email === 'admin@example.com' && data.password === 'password') { + if (result.success) { toast({ title: 'Login Successful', description: 'Redirecting to your dashboard...', }); router.push('/admin'); } else { - throw new Error('Invalid email or password.'); + throw new Error(result.message); } } catch (error: any) { toast({ @@ -105,7 +104,7 @@ export default function LoginPage() { -

Use admin@example.com and 'password' to sign in.

+

Use your updated credentials to sign in.

diff --git a/src/lib/actions/auth.ts b/src/lib/actions/auth.ts index 527f238..97381e0 100644 --- a/src/lib/actions/auth.ts +++ b/src/lib/actions/auth.ts @@ -2,6 +2,40 @@ 'use server'; import { redirect } from 'next/navigation'; +import { z } from 'zod'; +import db from '@/lib/db'; + +const loginSchema = z.object({ + email: z.string().email(), + password: z.string(), +}); + +export async function login(data: z.infer): Promise<{ success: boolean, message: string }> { + const validatedFields = loginSchema.safeParse(data); + + if (!validatedFields.success) { + return { success: false, message: 'Invalid fields.' }; + } + + const { email, password } = validatedFields.data; + + try { + const stmt = db.prepare('SELECT * FROM users WHERE email = ? AND password = ?'); + const user = stmt.get(email, password); + + if (user) { + // In a real app, you would set a session cookie here. + // For this simulated login, we'll just return success. + return { success: true, message: 'Login successful.' }; + } else { + return { success: false, message: 'Invalid email or password.' }; + } + } catch (error) { + console.error('Login error:', error); + return { success: false, message: 'An internal error occurred.' }; + } +} + export async function logout() { // In a real app with authentication, this would handle signing out the user.