/
Extrap
/
Network_technologies_Project
Обзор
Документация
Войти
/
Extrap
/
Network_technologies_Project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Project/Controllers/AuthController.cs
60 строк
2 KB
Extrap
Решил трабл с отправкой тренировки
20 дек 2025, 18:48
20 дек 2025, 18:48
77f5498
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Mvc; using Project.Interfaces; using Project.Models; using Project.Models.DTOs; using Project.Services; namespace Project.Controllers { [ApiController] [Route("api/[controller]")] public class AuthController(IUserRepository userRepository, JwtService jwtService) : ControllerBase { private readonly IUserRepository _userRepository = userRepository; private readonly JwtService _jwtService = jwtService; [HttpPost("register")] public async Task<IActionResult> Register([FromBody] RegisterRequest request) { // Проверка на существование пользователя var existingUser = await _userRepository.GetByEmailAsync(request.Email); if (existingUser != null) return BadRequest("User with this email already exists"); // Хеширование пароля var (passwordHash, passwordSalt) = PasswordService.HashPassword(request.Password); // Создание пользователя var user = await _userRepository.CreateAsync(request, passwordHash, passwordSalt); return Ok(new { message = "User registered successfully" }); } [HttpPost("login")] public async Task<IActionResult> Login([FromBody] AuthRequest request) { var user = await _userRepository.GetByEmailAsync(request.Email); if (user == null) return Unauthorized("Invalid email or password"); // Проверка пароля var isPasswordValid = PasswordService.VerifyPassword( request.Password, user.PasswordHash, user.PasswordSalt); if (!isPasswordValid) return Unauthorized("Invalid email or password"); // Генерация JWT токена var token = _jwtService.GenerateToken(user.Id, user.Email); var expiration = DateTime.Now.AddHours(1); return Ok(new AuthResponse { UserId = user.Id, Email = user.Email, Token = token, Expiration = expiration }); } } }