Yvonne Priscilla
update login and redirect
e394370
// components/LoginForm.tsx
'use client';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
export function LoginForm() {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const [isLoading, setIsLoading] = useState(false);
const router = useRouter()
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
setError('');
setIsLoading(true);
console.log('πŸ”΅ [Form] Submitting login...');
try {
const response = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ username, password }),
});
console.log('πŸ”΅ [Form] Response status:', response.status);
const data = await response.json();
if (!response.ok) {
console.log('πŸ”΅ [Form] Login failed:', data.message);
setError(data.message || 'Login failed');
setIsLoading(false);
return;
}
console.log('πŸ”΅ [Form] Login successful!');
console.log('πŸ”΅ [Form] User data:', data);
// Use window.location for a full page reload to ensure cookie is loaded
console.log('πŸ”΅ [Form] Redirecting to /recruitment...');
// window.location.href = '/recruitment';
router.push("/recruitment")
} catch (err) {
console.error('πŸ”΅ [Form] Error:', err);
setError('Something went wrong. Please try again.');
setIsLoading(false);
}
};
return (
<form onSubmit={handleSubmit} className="space-y-6">
{error && (
<div className="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-md text-sm">
{error}
</div>
)}
<div>
<label htmlFor="username" className="block text-sm font-medium text-gray-700">
Username
</label>
<input
id="username"
type="text"
value={username}
onChange={(e) => setUsername(e.target.value)}
required
disabled={isLoading}
className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
/>
</div>
<div>
<label htmlFor="password" className="block text-sm font-medium text-gray-700">
Password
</label>
<input
id="password"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
required
disabled={isLoading}
className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
/>
</div>
<button
type="submit"
disabled={isLoading}
className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed"
>
{isLoading ? 'Signing in...' : 'Sign in'}
</button>
</form>
);
}