source: ChapterX.Application/Auth/LoginHandler.cs@ e294f7d

main
Last change on this file since e294f7d was e294f7d, checked in by kikisrbinoska <srbinoskakristina07@…>, 4 months ago

Added JWT authentication

  • Property mode set to 100644
File size: 1.1 KB
RevLine 
[e294f7d]1using ChapterX.Domain.Repositories;
2using MediatR;
3
4namespace ChapterX.Application.Auth
5{
6 public class LoginHandler : IRequestHandler<LoginRequest, LoginResponse>
7 {
8 private readonly IUserRepository _userRepository;
9 private readonly IJwtTokenService _jwtTokenService;
10
11 public LoginHandler(IUserRepository userRepository, IJwtTokenService jwtTokenService)
12 {
13 _userRepository = userRepository;
14 _jwtTokenService = jwtTokenService;
15 }
16
17 public async Task<LoginResponse> Handle(LoginRequest request, CancellationToken cancellationToken)
18 {
19 var user = await _userRepository.GetByEmailAsync(request.Email, cancellationToken)
20 ?? throw new UnauthorizedAccessException("Invalid email or password.");
21
22 if (!BCrypt.Net.BCrypt.Verify(request.Password, user.Password))
23 throw new UnauthorizedAccessException("Invalid email or password.");
24
25 var token = _jwtTokenService.GenerateToken(user);
26
27 return new LoginResponse(token, user.Id, user.Username, user.Email);
28 }
29 }
30}
Note: See TracBrowser for help on using the repository browser.