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

main
Last change on this file since dc383dd 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
RevLine 
[e294f7d]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;
[acf690c]9 private readonly IWriterRepository _writerRepository;
[e294f7d]10
[acf690c]11 public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository)
[e294f7d]12 {
13 _userRepository = userRepository;
[acf690c]14 _writerRepository = writerRepository;
[e294f7d]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
[acf690c]36 var writer = new Domain.Entities.Writer { Id = user.Id };
37 await _writerRepository.AddAsync(writer, cancellationToken);
38
[e294f7d]39 return new RegisterResponse(user.Id, user.Username, user.Email);
40 }
41 }
42}
Note: See TracBrowser for help on using the repository browser.