tianji/src/server/model/user.ts

62 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-09-02 12:13:50 +00:00
import { prisma } from './_client';
import bcryptjs from 'bcryptjs';
async function hashPassword(password: string) {
return await bcryptjs.hash(password, 10);
}
/**
* Create User
*/
export async function createAdminUser(username: string, password: string) {
const count = await prisma.user.count();
if (count > 0) {
throw new Error('Create Admin User Just Only allow in non people exist');
}
await prisma.user.create({
data: {
username,
password: await hashPassword(password),
role: 'admin',
},
});
}
export async function createUser(username: string, password: string) {
await prisma.user.create({
data: {
username,
password: await hashPassword(password),
role: 'normal',
},
});
}
export async function authUser(username: string, password: string) {
const user = await prisma.user.findFirstOrThrow({
where: {
username,
password: await hashPassword(password),
},
});
return user;
}
2023-09-02 17:01:55 +00:00
export async function findUser(userId: string) {
const user = await prisma.user.findFirst({
where: {
id: userId,
},
select: {
id: true,
username: true,
role: true,
},
});
return user;
}