Initial commit: ERP system with advance verification fixes

This commit is contained in:
System Administrator
2026-03-25 23:55:36 +07:00
commit 563ca12d76
5920 changed files with 828689 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { UsersService } from '../users/users.service';
import * as bcrypt from 'bcryptjs';
@Injectable()
export class AuthService {
constructor(
private readonly usersService: UsersService,
private readonly jwtService: JwtService,
) {}
async register(username: string, password: string, name: string, email: string, roleId: string) {
// 检查用户名是否已存在
const existingUser = await this.usersService.findByUsername(username);
if (existingUser) {
throw new Error('Username already exists');
}
// 检查邮箱是否已存在
const existingEmail = await this.usersService.findByEmail(email);
if (existingEmail) {
throw new Error('Email already exists');
}
// 哈希密码
const hashedPassword = await bcrypt.hash(password, 10);
// 创建用户
const user = await this.usersService.create({
username,
password: hashedPassword,
name,
email,
roleId,
});
return user;
}
async login(username: string, password: string) {
// 查找用户
console.log('Login attempt for user:', username);
const user = await this.usersService.findByUsername(username);
console.log('Found user:', user);
if (!user) {
throw new UnauthorizedException('Invalid credentials');
}
// 验证密码
const isPasswordValid = await bcrypt.compare(password, user.password);
console.log('Password valid:', isPasswordValid);
if (!isPasswordValid) {
throw new UnauthorizedException('Invalid credentials');
}
// 生成JWT token
const payload = { sub: user.id, username: user.username, role: user.role.name };
const token = this.jwtService.sign(payload);
const response = {
access_token: token,
user: {
id: user.id,
username: user.username,
name: user.name,
email: user.email,
role: user.role.name,
},
};
console.log('Login response:', response);
return response;
}
}