Files
parakasa/app/(public)/login/page.tsx

100 lines
3.9 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 { useState } from "react"
import { useRouter } from "next/navigation"
import Link from "next/link"
import { supabase } from "@/lib/supabase"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
import { AlertCircle, Loader2 } from "lucide-react"
export default function LoginPage() {
const router = useRouter()
const [email, setEmail] = useState("")
const [password, setPassword] = useState("")
const [loading, setLoading] = useState(false)
const [error, setError] = useState<string | null>(null)
const handleLogin = async (e: React.FormEvent) => {
e.preventDefault()
setLoading(true)
setError(null)
try {
const { error } = await supabase.auth.signInWithPassword({
email,
password,
})
if (error) {
setError(error.message)
return
}
router.push("/")
router.refresh()
} catch (err: any) {
setError("Bir hata oluştu. Lütfen tekrar deneyin.")
} finally {
setLoading(false)
}
}
return (
<div className="flex items-center justify-center min-h-screen bg-slate-50 dark:bg-slate-950 px-4">
<Card className="w-full max-w-md">
<CardHeader className="space-y-1">
<CardTitle className="text-2xl font-bold">Giriş Yap</CardTitle>
<CardDescription>
Hesabınıza erişmek için bilgilerinizi girin
</CardDescription>
</CardHeader>
<CardContent>
<form onSubmit={handleLogin} className="space-y-4">
<div className="space-y-2">
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
placeholder="ornek@sirket.com"
value={email}
onChange={(e) => setEmail(e.target.value)}
required
/>
</div>
<div className="space-y-2">
<Label htmlFor="password">Şifre</Label>
<Input
id="password"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
required
/>
</div>
{error && (
<div className="flex items-center space-x-2 text-sm text-red-600 bg-red-50 p-3 rounded-md">
<AlertCircle className="h-4 w-4" />
<span>{error}</span>
</div>
)}
<Button className="w-full" type="submit" disabled={loading}>
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
Giriş Yap
</Button>
</form>
</CardContent>
<CardFooter className="flex flex-col gap-4 text-center text-sm text-muted-foreground">
<div className="text-center">
</div>
<Link href="/" className="underline underline-offset-4 hover:text-primary">
Ana Sayfaya Dön
</Link>
</CardFooter>
</Card>
</div>
)
}