Compare commits

...

2 Commits

Author SHA1 Message Date
yourname
d2ab3d7bba feat(auth): 添加默认管理员账户创建功能
- 实现ensureAdminExists方法,确保admin用户存在
- 登录时检查管理员账户,不存在则自动创建默认管理员
- 添加管理员默认账号密码配置(admin/admin123)

♻️ refactor(auth): 优化日志记录方式

- 引入debug模块替代console.error进行日志记录
- 创建专用logger对象区分不同级别日志
- 替换登录错误处理中的console.error为logger.error

🔧 chore(auth): 添加必要的类型导入和常量定义

- 导入DisabledStatus类型用于用户状态管理
- 定义ADMIN_USERNAME和ADMIN_PASSWORD常量
2025-07-10 23:40:45 +00:00
yourname
cf0509ccd3 📝 docs(logging): update logging examples to show direct usage pattern
- 修改前后端日志示例,移除集中式logger对象
- 展示在使用处直接引入debug并定义命名空间的方式
- 添加具体的日志使用示例代码
- 简化日志使用流程,避免额外的工具类依赖
2025-07-10 23:37:58 +00:00
2 changed files with 55 additions and 15 deletions

View File

@@ -29,28 +29,34 @@ k8s:deployment:create # K8S-部署-创建
### 前端示例
```typescript
// src/client/utils/logger.ts
// 在需要使用日志的文件中直接引入debug
import debug from 'debug';
export const logger = {
error: debug('frontend:error'),
api: debug('frontend:api'),
auth: debug('frontend:auth'),
ui: debug('frontend:ui')
};
// 按需定义命名空间
const errorLogger = debug('frontend:error');
const apiLogger = debug('frontend:api');
const authLogger = debug('frontend:auth');
const uiLogger = debug('frontend:ui');
// 使用示例
errorLogger('用户登录失败: %s', error.message);
apiLogger('API请求: %s', url);
```
### 后端示例
```typescript
// src/server/utils/logger.ts
// 在需要使用日志的文件中直接引入debug
import debug from 'debug';
export const logger = {
error: debug('backend:error'),
api: debug('backend:api'),
db: debug('backend:db'),
middleware: debug('backend:middleware')
};
// 按需定义命名空间
const errorLogger = debug('backend:error');
const apiLogger = debug('backend:api');
const dbLogger = debug('backend:db');
const middlewareLogger = debug('backend:middleware');
// 使用示例
errorLogger('数据库连接失败: %s', error.message);
dbLogger('查询执行: %s', sql);
```
## 5. 最佳实践

View File

@@ -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;
}
}