Advertisement
Guest User

Untitled

a guest
May 23rd, 2025
16
0
13 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.99 KB | None | 0 0
  1. // Domain
  2. public record User(Guid Id, string Name, string Password, DateTime CreatedAt);
  3.  
  4. // Public API
  5. public record UserViewModel(Guid Id, string Name);
  6. public record LoginViewModel(string Name, string Password);
  7.  
  8. public record LoginRequest(string Name, string Password, IPAddress IP, string UserAgent);
  9. public record RequestInfo(IPAddress IP, string UserAgent);
  10.  
  11. [ApiController]
  12. [Route("users")]
  13. public class UserController : ControllerBase
  14. {
  15.     private readonly ILogger<UserController> _logger;
  16.     private readonly UserService _userService;
  17.  
  18.     public UserController(ILogger<UserController> logger, UserService userService)
  19.     {
  20.         _logger = logger;
  21.         _userService = userService;
  22.     }
  23.  
  24.     [HttpPost("login")]
  25.     public async Task<UserViewModel> Login([FromBody] LoginViewModel viewModel)
  26.     {
  27.         IPAddress ip = Request.HttpContext.Connection.RemoteIpAddress!;
  28.         string userAgent = HttpContext.Request.Headers[HeaderNames.UserAgent].ToString();
  29.  
  30.         // Вариант 1
  31.         LoginRequest request = new LoginRequest(viewModel.Name, viewModel.Password, ip, userAgent);
  32.         UserViewModel userV1 = await _userService.Login(request);
  33.  
  34.         // Вариант 2
  35.         RequestInfo info = new RequestInfo(ip, userAgent);
  36.         UserViewModel userV2 = await _userService.Login(viewModel, info);
  37.  
  38.         return userV1;
  39.     }
  40. }
  41.  
  42. public class UserService
  43. {
  44.     // Вариант 1
  45.     public async Task<UserViewModel> Login(LoginRequest request)
  46.     {
  47.         User user = new User(Guid.CreateVersion7(), request.Name, request.Password, DateTime.UtcNow);
  48.         return await Task.FromResult(new UserViewModel(user.Id, user.Name));
  49.     }
  50.  
  51.     // Вариант 2
  52.     public async Task<UserViewModel> Login(LoginViewModel viewModel, RequestInfo info)
  53.     {
  54.         User user = new User(Guid.CreateVersion7(), viewModel.Name, viewModel.Password, DateTime.UtcNow);
  55.         return await Task.FromResult(new UserViewModel(user.Id, user.Name));
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement