feat: 添加环境变量配置并优化部署路径

添加开发和生产环境变量文件
更新前端构建命令以使用不同模式
优化部署脚本中的前端部署路径
在认证守卫中添加日志记录
This commit is contained in:
dmy
2026-01-18 15:44:37 +08:00
parent b6a6398864
commit f08c513bbe
6 changed files with 27 additions and 4 deletions

View File

@@ -3,6 +3,7 @@ import {
ExecutionContext,
Injectable,
UnauthorizedException,
Logger,
} from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Request } from 'express';
@@ -10,6 +11,8 @@ import { UsersService } from '../../users/users.service';
@Injectable()
export class AuthGuard implements CanActivate {
private readonly logger = new Logger(AuthGuard.name);
constructor(
private configService: ConfigService,
private usersService: UsersService,
@@ -22,6 +25,8 @@ export class AuthGuard implements CanActivate {
const enableBasicAuth =
this.configService.get<string>('ENABLE_BASIC_AUTH') === 'true';
this.logger.log(`Basic Auth enabled: ${enableBasicAuth}`);
if (!enableBasicAuth) {
// 如果未启用 Basic Auth允许所有访问
return true;
@@ -31,6 +36,7 @@ export class AuthGuard implements CanActivate {
const authHeader = request.headers['authorization'] as string;
if (!authHeader || !authHeader.startsWith('Basic ')) {
this.logger.warn('Missing or invalid Authorization header');
throw new UnauthorizedException('Missing or invalid Authorization header');
}
@@ -42,16 +48,22 @@ export class AuthGuard implements CanActivate {
const [username, password] = credentials.split(':');
if (!username || !password) {
this.logger.warn('Invalid credentials format');
throw new UnauthorizedException('Invalid credentials format');
}
this.logger.log(`Attempting login for user: ${username}`);
// 验证用户
const user = await this.usersService.validateUser(username, password);
if (!user) {
this.logger.warn(`Login failed for user: ${username} - Invalid username or password`);
throw new UnauthorizedException('Invalid username or password');
}
this.logger.log(`User ${username} logged in successfully`);
// 将用户信息附加到请求对象
(request as any).user = user;

View File

@@ -38,7 +38,7 @@ const config = {
const destinations = {
server: '/root/bidding/publish/server',
frontend: '/root/bidding/publish/frontend',
frontend: '/root/bidding/publish/frontend/dist',
src: '/root/bidding/',
};