public async Task <UserLoginViewModel> Handle(UserRegisterCommand request, CancellationToken cancellationToken) { var userExists = await _userRepository.UserExists(request.Email); if (userExists) { return new UserLoginViewModel { Success = false, Message = "User already exists." } } ; var passwordHash = _hashGenerator.ComputeHash(request.Password); var user = AppUser.Create( firstname: request.FirstName, lastname: request.LastName, email: request.Email, passwordHash: passwordHash); await _userRepository.AddAsync(user); await _unitOfWork.SaveChangesAsync(CancellationToken.None); var accessToken = _tokenGenerator.GenerateToken(user.LastName, user.Email, user.Id); return(new UserLoginViewModel { Success = true, AccessToken = accessToken, User = new UserInfo { FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, UserId = user.Id, Image = user.ProfilePicture ?? _placeholderImageProvider.GetProfileImagePlaceHolder() } }); } }