Files
mamad-app/app/login/page.tsx
2025-06-23 03:55:43 +03:00

101 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client"
import type React from "react"
import { useState } from "react"
import { useRouter } from "next/navigation"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Alert, AlertDescription } from "@/components/ui/alert"
export default function LoginPage() {
const [nationalId, setNationalId] = useState("")
const [password, setPassword] = useState("")
const [error, setError] = useState("")
const [loading, setLoading] = useState(false)
const router = useRouter()
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
setLoading(true)
setError("")
try {
const response = await fetch("/api/auth/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ nationalId, password }),
})
const data = await response.json()
if (response.ok) {
localStorage.setItem("user", JSON.stringify(data.user))
// Check if user must change password
if (data.user.must_change_password) {
router.push("/change-password")
} else {
router.push("/dashboard")
}
} else {
setError(data.error || "שגיאה בהתחברות")
}
} catch (err) {
setError("שגיאה בחיבור לשרת")
} finally {
setLoading(false)
}
}
return (
<div className="min-h-screen flex items-center justify-center bg-gray-50" dir="rtl">
<Card className="w-full max-w-md">
<CardHeader className="text-center">
<CardTitle className="text-2xl font-bold">התחברות לממ"ד</CardTitle>
<CardDescription>יש להזדהות על מנת להמשיך.</CardDescription>
</CardHeader>
<CardContent>
<form onSubmit={handleSubmit} className="space-y-4">
<div className="space-y-2">
<Label htmlFor="nationalId">מזהה משתמש</Label>
<Input
id="nationalId"
type="text"
value={nationalId}
onChange={(e) => setNationalId(e.target.value)}
placeholder="9 ספרות"
maxLength={9}
required
className="text-right"
dir="rtl"
/>
</div>
<div className="space-y-2">
<Label htmlFor="password">סיסמה</Label>
<Input
id="password"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
placeholder="הזינו סיסמה"
required
/>
</div>
{error && (
<Alert variant="destructive">
<AlertDescription>{error}</AlertDescription>
</Alert>
)}
<Button type="submit" className="w-full" disabled={loading}>
{loading ? "מתחבר..." : "התחברו"}
</Button>
</form>
</CardContent>
</Card>
</div>
)
}