✨ feat(auth): 添加默认管理员账户创建功能
- 实现ensureAdminExists方法,确保admin用户存在 - 登录时检查管理员账户,不存在则自动创建默认管理员 - 添加管理员默认账号密码配置(admin/admin123) ♻️ refactor(auth): 优化日志记录方式 - 引入debug模块替代console.error进行日志记录 - 创建专用logger对象区分不同级别日志 - 替换登录错误处理中的console.error为logger.error 🔧 chore(auth): 添加必要的类型导入和常量定义 - 导入DisabledStatus类型用于用户状态管理 - 定义ADMIN_USERNAME和ADMIN_PASSWORD常量
This commit is contained in:
@@ -1,9 +1,18 @@
|
||||
import jwt from 'jsonwebtoken';
|
||||
import { UserService } from '../users/user.service';
|
||||
import { UserEntity as User } from '../users/user.entity';
|
||||
import { DisabledStatus } from '@/share/types';
|
||||
import debug from 'debug';
|
||||
|
||||
const logger = {
|
||||
info: debug('backend:auth:info'),
|
||||
error: debug('backend:auth:error')
|
||||
}
|
||||
|
||||
const JWT_SECRET = 'your-secret-key'; // 生产环境应使用环境变量
|
||||
const JWT_EXPIRES_IN = '7d'; // 7天有效期
|
||||
const ADMIN_USERNAME = 'admin';
|
||||
const ADMIN_PASSWORD = 'admin123';
|
||||
|
||||
export class AuthService {
|
||||
private userService: UserService;
|
||||
@@ -12,8 +21,33 @@ export class AuthService {
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
async ensureAdminExists(): Promise<User> {
|
||||
try {
|
||||
let admin = await this.userService.getUserByUsername(ADMIN_USERNAME);
|
||||
if (!admin) {
|
||||
logger.info('Admin user not found, creating default admin account');
|
||||
admin = await this.userService.createUser({
|
||||
username: ADMIN_USERNAME,
|
||||
password: ADMIN_PASSWORD,
|
||||
nickname: '系统管理员',
|
||||
isDisabled: DisabledStatus.ENABLED
|
||||
});
|
||||
logger.info('Default admin account created successfully');
|
||||
}
|
||||
return admin;
|
||||
} catch (error) {
|
||||
logger.error('Failed to ensure admin account exists:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async login(username: string, password: string): Promise<{ token: string; user: User }> {
|
||||
try {
|
||||
// 确保admin用户存在
|
||||
if (username === ADMIN_USERNAME) {
|
||||
await this.ensureAdminExists();
|
||||
}
|
||||
|
||||
const user = await this.userService.getUserByUsername(username);
|
||||
if (!user) {
|
||||
throw new Error('User not found');
|
||||
@@ -27,7 +61,7 @@ export class AuthService {
|
||||
const token = this.generateToken(user);
|
||||
return { token, user };
|
||||
} catch (error) {
|
||||
console.error('Login error:', error);
|
||||
logger.error('Login error:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user