34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import bcrypt from 'bcryptjs';
|
|
import BetterSqlite3 from 'better-sqlite3';
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody(event);
|
|
const { username, password } = body;
|
|
|
|
// 检查用户名是否已存在
|
|
const userDB = BetterSqlite3('./userData/db/user.db');
|
|
const existingUser = userDB.prepare('SELECT * FROM user WHERE username = ?').get(username);
|
|
if (existingUser) {
|
|
userDB.close();
|
|
throw createError({ statusCode: 400, statusMessage: 'Username already exists' });
|
|
}
|
|
|
|
// 哈希密码
|
|
// const salt = getKey().substring(0, 10);
|
|
// const hashedPassword = bcrypt.hashSync(password, salt);
|
|
const hashedPassword = password
|
|
|
|
// 插入新用户
|
|
const createTime = Date.now();
|
|
const lastLoginTime = createTime;
|
|
const stmt = userDB.prepare('INSERT INTO user (username, password, createTime, lastLoginTime) VALUES (?, ?, ?, ?)');
|
|
const result = stmt.run(username, hashedPassword, createTime, lastLoginTime);
|
|
|
|
// 生成 JWT
|
|
const userId = result.lastInsertRowid as number;
|
|
const token = createToken(userId);
|
|
|
|
userDB.close();
|
|
|
|
return { token, expiresIn: Date.now() + 168 * 60 * 60 * 1000 };
|
|
}); |