source: ChapterX.Application/Auth/RegisterHandler.cs@ acf690c

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

Added fixes for the login,stories management and reading lists

  • Property mode set to 100644
File size: 1.5 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 private readonly IWriterRepository _writerRepository;
10
11 public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository)
12 {
13 _userRepository = userRepository;
14 _writerRepository = writerRepository;
15 }
16
17 public async Task<RegisterResponse> Handle(RegisterRequest request, CancellationToken cancellationToken)
18 {
19 var existing = await _userRepository.GetByEmailAsync(request.Email, cancellationToken);
20 if (existing != null)
21 throw new InvalidOperationException("Email already in use.");
22
23 var user = new Domain.Entities.User
24 {
25 Username = request.Username,
26 Email = request.Email,
27 Name = request.Name,
28 Surname = request.Surname,
29 Password = BCrypt.Net.BCrypt.HashPassword(request.Password),
30 CreatedAt = DateTime.UtcNow,
31 UpdatedAt = DateTime.UtcNow
32 };
33
34 await _userRepository.AddAsync(user, cancellationToken);
35
36 var writer = new Domain.Entities.Writer { Id = user.Id };
37 await _writerRepository.AddAsync(writer, cancellationToken);
38
39 return new RegisterResponse(user.Id, user.Username, user.Email);
40 }
41 }
42}
Note: See TracBrowser for help on using the repository browser.