source: ChapterX.Application/Auth/RegisterHandler.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.2 KB
Line 
1using ChapterX.Domain.Repositories;
2using MediatR;
3
4namespace ChapterX.Application.Auth
5{
6 public class RegisterHandler : IRequestHandler<RegisterRequest, RegisterResponse>
7 {
8 private readonly IUserRepository _userRepository;
9
10 public RegisterHandler(IUserRepository userRepository)
11 {
12 _userRepository = userRepository;
13 }
14
15 public async Task<RegisterResponse> Handle(RegisterRequest request, CancellationToken cancellationToken)
16 {
17 var existing = await _userRepository.GetByEmailAsync(request.Email, cancellationToken);
18 if (existing != null)
19 throw new InvalidOperationException("Email already in use.");
20
21 var user = new Domain.Entities.User
22 {
23 Username = request.Username,
24 Email = request.Email,
25 Name = request.Name,
26 Surname = request.Surname,
27 Password = BCrypt.Net.BCrypt.HashPassword(request.Password),
28 CreatedAt = DateTime.UtcNow,
29 UpdatedAt = DateTime.UtcNow
30 };
31
32 await _userRepository.AddAsync(user, cancellationToken);
33
34 return new RegisterResponse(user.Id, user.Username, user.Email);
35 }
36 }
37}
Note: See TracBrowser for help on using the repository browser.