initial version of the app
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
import bcrypt from 'bcryptjs';
|
||||
import { db } from '@/lib/db';
|
||||
import { users } from '@/lib/db/schema';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import { generateId } from '@/lib/utils';
|
||||
|
||||
export async function hashPassword(password: string): Promise<string> {
|
||||
return bcrypt.hash(password, 12);
|
||||
}
|
||||
|
||||
export async function verifyPassword(password: string, hashedPassword: string): Promise<boolean> {
|
||||
return bcrypt.compare(password, hashedPassword);
|
||||
}
|
||||
|
||||
export async function createUser(data: {
|
||||
email: string;
|
||||
name: string;
|
||||
surname: string;
|
||||
password: string;
|
||||
role?: 'user' | 'admin';
|
||||
}) {
|
||||
const hashedPassword = await hashPassword(data.password);
|
||||
const now = new Date();
|
||||
|
||||
const newUser = {
|
||||
id: generateId(),
|
||||
email: data.email.toLowerCase(),
|
||||
name: data.name,
|
||||
surname: data.surname,
|
||||
password: hashedPassword,
|
||||
role: data.role || 'user',
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
};
|
||||
|
||||
const [user] = await db.insert(users).values(newUser).returning();
|
||||
return user;
|
||||
}
|
||||
|
||||
export async function getUserByEmail(email: string) {
|
||||
const [user] = await db.select().from(users).where(eq(users.email, email.toLowerCase()));
|
||||
return user;
|
||||
}
|
||||
|
||||
export async function getUserById(id: string) {
|
||||
const [user] = await db.select().from(users).where(eq(users.id, id));
|
||||
return user;
|
||||
}
|
||||
Reference in New Issue
Block a user