feat: integrate Cloudinary image upload, Instagram Feed, and fix Next.js warnings
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"use server";
|
||||
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import bcrypt from "bcryptjs";
|
||||
import { signToken, setAuthCookie, removeAuthCookie } from "@/lib/auth";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export async function login(formData: FormData) {
|
||||
try {
|
||||
const email = formData.get("email") as string;
|
||||
const password = formData.get("password") as string;
|
||||
|
||||
if (!email || !password) {
|
||||
return { success: false, error: "Lütfen email ve şifre giriniz." };
|
||||
}
|
||||
|
||||
const admin = await prisma.admin.findUnique({
|
||||
where: { email },
|
||||
});
|
||||
|
||||
if (!admin) {
|
||||
return { success: false, error: "Geçersiz e-posta veya şifre." };
|
||||
}
|
||||
|
||||
const isMatch = await bcrypt.compare(password, admin.password);
|
||||
if (!isMatch) {
|
||||
return { success: false, error: "Geçersiz e-posta veya şifre." };
|
||||
}
|
||||
|
||||
// Başarılı giriş, token oluştur ve cookie'ye kaydet
|
||||
const token = await signToken({ id: admin.id, email: admin.email, name: admin.name });
|
||||
await setAuthCookie(token);
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error("Login error:", error);
|
||||
return { success: false, error: "Giriş yapılırken beklenmeyen bir hata oluştu." };
|
||||
}
|
||||
}
|
||||
|
||||
export async function logout() {
|
||||
await removeAuthCookie();
|
||||
redirect("/admin/login");
|
||||
}
|
||||
Reference in New Issue
Block a user