From d2ab3d7bba10ef40077b7f9b1973392aebec9e02 Mon Sep 17 00:00:00 2001 From: yourname Date: Thu, 10 Jul 2025 23:40:45 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(auth):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=AE=A1=E7=90=86=E5=91=98=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现ensureAdminExists方法,确保admin用户存在 - 登录时检查管理员账户,不存在则自动创建默认管理员 - 添加管理员默认账号密码配置(admin/admin123) ♻️ refactor(auth): 优化日志记录方式 - 引入debug模块替代console.error进行日志记录 - 创建专用logger对象区分不同级别日志 - 替换登录错误处理中的console.error为logger.error 🔧 chore(auth): 添加必要的类型导入和常量定义 - 导入DisabledStatus类型用于用户状态管理 - 定义ADMIN_USERNAME和ADMIN_PASSWORD常量 --- src/server/modules/auth/auth.service.ts | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/server/modules/auth/auth.service.ts b/src/server/modules/auth/auth.service.ts index 0e4bf1e..3b0a677 100644 --- a/src/server/modules/auth/auth.service.ts +++ b/src/server/modules/auth/auth.service.ts @@ -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 { + 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; } }