Initial commit

This commit is contained in:
2025-06-22 00:01:22 +03:00
parent fd70166cf6
commit 033b80bfad
153 changed files with 26874 additions and 1 deletions

View File

@@ -0,0 +1,137 @@
"use client"
import type React from "react"
import { useState, useEffect } 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 ChangePasswordPage() {
const [currentPassword, setCurrentPassword] = useState("")
const [newPassword, setNewPassword] = useState("")
const [confirmPassword, setConfirmPassword] = useState("")
const [error, setError] = useState("")
const [loading, setLoading] = useState(false)
const [user, setUser] = useState<any>(null)
const router = useRouter()
useEffect(() => {
const userData = localStorage.getItem("user")
if (!userData) {
router.push("/login")
return
}
setUser(JSON.parse(userData))
}, [router])
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
setLoading(true)
setError("")
if (newPassword !== confirmPassword) {
setError("הסיסמאות החדשות אינן תואמות")
setLoading(false)
return
}
if (newPassword.length < 6) {
setError("הסיסמה החדשה חייבת להכיל לפחות 6 תווים")
setLoading(false)
return
}
try {
const response = await fetch("/api/auth/change-password", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
nationalId: user.national_id,
currentPassword,
newPassword,
}),
})
const data = await response.json()
if (response.ok) {
// Update user data
const updatedUser = { ...user, must_change_password: false }
localStorage.setItem("user", JSON.stringify(updatedUser))
router.push("/dashboard")
} else {
setError(data.error || "שגיאה בשינוי סיסמה")
}
} catch (err) {
setError("שגיאה בחיבור לשרת")
} finally {
setLoading(false)
}
}
if (!user) return null
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>
{user.must_change_password ? "הסיסמה אופסה או לא שונתה, ויש לשנותה על מנת להמשיך." : "שינוי סיסמה"}
</CardDescription>
</CardHeader>
<CardContent>
<form onSubmit={handleSubmit} className="space-y-4">
<div className="space-y-2">
<Label htmlFor="currentPassword">סיסמה נוכחית</Label>
<Input
id="currentPassword"
type="password"
value={currentPassword}
onChange={(e) => setCurrentPassword(e.target.value)}
placeholder="הזן סיסמה נוכחית"
required
/>
</div>
<div className="space-y-2">
<Label htmlFor="newPassword">סיסמה חדשה</Label>
<Input
id="newPassword"
type="password"
value={newPassword}
onChange={(e) => setNewPassword(e.target.value)}
placeholder="הזן סיסמה חדשה (לפחות 6 תווים)"
required
minLength={6}
/>
</div>
<div className="space-y-2">
<Label htmlFor="confirmPassword">אישור סיסמה חדשה</Label>
<Input
id="confirmPassword"
type="password"
value={confirmPassword}
onChange={(e) => setConfirmPassword(e.target.value)}
placeholder="הזן שוב את הסיסמה החדשה"
required
minLength={6}
/>
</div>
{error && (
<Alert variant="destructive">
<AlertDescription>{error}</AlertDescription>
</Alert>
)}
<Button type="submit" className="w-full" disabled={loading}>
{loading ? "משנה סיסמה..." : "שנה סיסמה"}
</Button>
</form>
</CardContent>
</Card>
</div>
)
}