/
vibecoder123
/
GraphProcessorFork
Обзор
Документация
Войти
/
vibecoder123
/
GraphProcessorFork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
GraphProcessorAPI/Controllers/UserController.cs
78 строк
3 KB
Семён Бабушкин
Mocked and tested AuthenticationService.
09 май 2026, 01:02
09 май 2026, 01:02
2361962
Код
Авторство
О чём код?
using GraphProcessorAPI.Models; using GraphProcessorAPI.Services; using GraphProcessorAPI.Data; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; namespace GraphProcessorAPI.Controllers { [Route("api/[controller]")] [ApiController] public class UserController : ControllerBase { private readonly ILogger<UserController> _logger; private readonly ILoginService _loginService; private readonly IRegistrationService _registrationService; private readonly IUserRepository _userRepository; public UserController(ILogger<UserController> logger, ILoginService loginService, IUserRepository userRepository, IRegistrationService registrationService) { _logger = logger; _loginService = loginService; _userRepository = userRepository; _registrationService = registrationService; } [HttpPost("login")] public async Task<IActionResult> Login([FromBody] UserLoginDto userData) { var loginResult = await _loginService.Login(userData.Username, userData.Password); if (!loginResult.IsValid) { _logger.LogError($"Login failed for user {userData.Username}"); return Unauthorized(new { Error = loginResult.ErrorMessage}); } _logger.LogInformation($"User {userData.Username} logged in and received token: {loginResult.TokenString}"); return Ok(new { TokenString = loginResult.TokenString }); } [HttpPost("register")] public async Task<IActionResult> Register([FromBody] UserRegistrationDto userData) { var registerResult = await _registrationService.Register(userData.Username, userData.Password, userData.RepeatPassword, userData.FirstName, userData.LastName, userData.Email, userData.Phone); if (!registerResult.IsValid) { _logger.LogError($"Registration filed"); return Unauthorized(new { Error = registerResult.ErrorMessage }); } _logger.LogInformation($" {userData.Username} registered and recieved token: { registerResult.TokenString } "); return Ok(new { TokenString = registerResult.TokenString }); } [Authorize] [HttpGet("profile")] public async Task<ActionResult> Profile() { string? username = HttpContext.User.Identity?.Name; if (string.IsNullOrEmpty(username)) return Unauthorized(new { Error = "Username does not found in http context" }); var userResult = await _userRepository.GetUserByNameAsync(username); if (!userResult.IsValid) return Unauthorized(new { Error = userResult.ErrorMessage }); var dbUser = userResult.SelectedUser; var userProfile = new UserProfileDto { Username = dbUser.Username, FirstName = dbUser.FirstName, LastName = dbUser.LastName, PhoneNumber = dbUser.Phone, Email = dbUser.Email }; return Ok(userProfile); } } }