/
viktorphp
/
back-socket
Обзор
Документация
Войти
/
viktorphp
/
back-socket
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/auth/local.strategy.ts
30 строк
2 KB
Viktorphp84
release/D-24.001.00: update message for create user error
17 дек 2024, 21:51
17 дек 2024, 21:51
ca44037
Код
Авторство
О чём код?
import { Strategy, IStrategyOptions } from 'passport-local'; import { PassportStrategy } from '@nestjs/passport'; import { Injectable, UnauthorizedException } from '@nestjs/common'; import { AuthService } from 'src/services/auth/auth.service'; import { isValidEmail } from 'src/utils'; // Стратегия аутентификации, используемая для входа в систему с помощью email и пароля @Injectable() // Декоратор, который делает класс LocalStrategy доступным для внедрения зависимостей export class LocalStrategy extends PassportStrategy(Strategy) { // Внедряется сервис AuthService, который будет использоваться для аутентификации пользователя constructor(private authService: AuthService) { // Оператор satisfies проверяет соответствие типу, но не приводит к нему явно, как это делает as. Это более безопасный способ типизации. super({ usernameField: 'login' } satisfies IStrategyOptions); // Указывается, что вместо стандартного usernameField используется email либо login } // Метод, который будет вызываться для аутентификации пользователя async validate(login: string, password: string): Promise<any> { // Если похоже на email, но формат неверный if (login.includes('@') && !isValidEmail(login)) { throw new UnauthorizedException('Неверный формат email'); } const user = await this.authService.validateUserByLogin(login, password); if (!user) { // Если пользователь не найден, выбрасывается исключение UnauthorizedException throw new UnauthorizedException('Неверный логин или пароль'); } return user; // Возвращает найденного пользователя } }