Compare commits
3 Commits
a8da6a238e
...
a57a906b0a
| Author | SHA1 | Date |
|---|---|---|
|
|
a57a906b0a | |
|
|
7140052c48 | |
|
|
64e38bfae4 |
8
.env
8
.env
|
|
@ -1 +1,9 @@
|
|||
#Прометеус
|
||||
#PROMETHEUS_API=http://192.168.2.34:9090/api/v1
|
||||
|
||||
#Постгресс
|
||||
#DB_HOST=192.168.2.37
|
||||
#DB_PORT=5432
|
||||
#DB_USER=trust
|
||||
#DB_PASSWORD=kaiqolzp2a4aH
|
||||
#DB_NAME=trust-db
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
"test:e2e": "jest --config ./test/jest-e2e.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/axios": "^4.0.0",
|
||||
"@nestjs/axios": "^4.0.0",
|
||||
"@nestjs/common": "^11.0.1",
|
||||
"@nestjs/core": "^11.0.1",
|
||||
"@nestjs/config": "^4.0.0",
|
||||
|
|
@ -28,7 +28,12 @@
|
|||
"axios": "^1.7.9",
|
||||
"reflect-metadata": "^0.2.2",
|
||||
"dotenv": "^16.3.1",
|
||||
"rxjs": "^7.8.1"
|
||||
"rxjs": "^7.8.1",
|
||||
"@nestjs/typeorm": "^11.0.0",
|
||||
"pg": "^8.14.1",
|
||||
"typeorm": "^0.3.21",
|
||||
"bcrypt": "^5.1.1",
|
||||
"@types/bcrypt": "^5.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3.2.0",
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { HttpModule } from '@nestjs/axios';
|
||||
import { PrometheusService } from './prometheus.service';
|
||||
import { MetricsController } from './metrics.controller';
|
||||
import { ConfigModule } from '@nestjs/config';
|
||||
import { AuthModule } from './auth/auth.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
|
|
@ -10,7 +12,20 @@ import { ConfigModule } from '@nestjs/config';
|
|||
isGlobal: true,
|
||||
envFilePath: '.env',
|
||||
}),
|
||||
HttpModule],
|
||||
TypeOrmModule.forRoot({
|
||||
type: 'postgres',
|
||||
host: process.env.DB_HOST,
|
||||
port: parseInt(process.env.DB_PORT || '5432', 10),
|
||||
username: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
database: process.env.DB_NAME,
|
||||
entities: [__dirname + '/**/*.entity{.ts,.js}'],
|
||||
synchronize: false,
|
||||
logging: true,
|
||||
}),
|
||||
HttpModule,
|
||||
AuthModule,
|
||||
],
|
||||
controllers: [MetricsController],
|
||||
providers: [PrometheusService],
|
||||
})
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
import { Controller, Post, Body, UnauthorizedException } from '@nestjs/common';
|
||||
import { AuthService } from './auth.service';
|
||||
|
||||
@Controller('auth')
|
||||
export class AuthController {
|
||||
constructor(private authService: AuthService) { }
|
||||
|
||||
@Post('login')
|
||||
async login(@Body() body: { login: string; password: string }) {
|
||||
const user = await this.authService.validateUser(body.login, body.password);
|
||||
if (!user) {
|
||||
throw new UnauthorizedException('Неверный логин или пароль');
|
||||
}
|
||||
return { success: true, user };
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { AuthService } from './auth.service';
|
||||
import { AuthController } from './auth.controller';
|
||||
import { User } from './user.entity';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([User])],
|
||||
controllers: [AuthController],
|
||||
providers: [AuthService],
|
||||
})
|
||||
export class AuthModule { }
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { User } from './user.entity';
|
||||
|
||||
@Injectable()
|
||||
export class AuthService {
|
||||
constructor(
|
||||
@InjectRepository(User)
|
||||
private usersRepository: Repository<User>,
|
||||
) { }
|
||||
|
||||
async validateUser(login: string, password: string): Promise<any> {
|
||||
console.log(`Проверка пользователя: ${login}, пароль: ${password}`);
|
||||
|
||||
// Ищем пользователя по login
|
||||
const user = await this.usersRepository.findOne({ where: { login } });
|
||||
|
||||
console.log(`Найденный пользователь:`, user);
|
||||
|
||||
// Проверяем, что нашли пользователя и пароль совпадает
|
||||
if (user && user.password === password) {
|
||||
console.log(`Авторизация успешна`);
|
||||
const { password, ...result } = user;
|
||||
return result;
|
||||
}
|
||||
|
||||
console.log(`Ошибка: неверный логин или пароль`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
|
||||
|
||||
@Entity('users')
|
||||
export class User {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number;
|
||||
|
||||
@Column()
|
||||
login: string;
|
||||
|
||||
@Column()
|
||||
password: string;
|
||||
}
|
||||
Loading…
Reference in New Issue