bolt.new/app/utils/auth.server.ts

33 lines
832 B
TypeScript

import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken';
import { db } from './db.server';
const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key';
export async function hashPassword(password: string) {
return bcrypt.hash(password, 10);
}
export async function verifyLogin(email: string, password: string) {
const user = await db('users').where({ email }).first();
if (!user) return null;
const isValid = await bcrypt.compare(password, user.password);
if (!isValid) return null;
return user;
}
export function createToken(userId: string) {
return jwt.sign({ userId }, JWT_SECRET, { expiresIn: '30d' });
}
export function verifyToken(token: string) {
try {
const decoded = jwt.verify(token, JWT_SECRET);
return decoded as { userId: string };
} catch (error) {
return null;
}
}