import crypto from "crypto"; import jwt from "jsonwebtoken"; import { User } from "../../../models/User"; import { LoginResult, LoginInput } from "./types"; export const login = async (input: LoginInput): Promise => { const { mail, password } = input; const user = await User.findOne({ mail }); if (!user) { return { statusCode: 404, success: false, message: "Kullanıcı bulunamadı", code: 404, }; } const hashedPassword = crypto.createHash("md5").update(password).digest("hex"); if (user.password !== hashedPassword) { return { statusCode: 401, success: false, message: "Hatalı şifre", code: 401, }; } if (!user.isMailVerified) { return { statusCode: 403, success: false, message: "Lütfen email adresinizi doğrulayın", code: 403, payload: { isMailVerified: user.isMailVerified, mail: user.mail, }, }; } const accessToken = jwt.sign( { userId: user._id }, process.env.JWT_SECRET as string, { expiresIn: "4h" } ); const refreshToken = jwt.sign( { userId: user._id }, process.env.JWT_REFRESH_SECRET as string || process.env.JWT_SECRET as string, { expiresIn: "30d" } ); user.refreshToken = refreshToken; await user.save(); return { statusCode: 200, success: true, message: "Giriş başarılı", code: 200, payload: { accessToken, refreshToken, user: { userID: user._id.toString(), mail: user.mail, firstName: user.firstName, lastName: user.lastName, fullName: user.fullName, phoneNumber: user.phoneNumber, companyName: user.companyName, }, }, }; }; export default login;