public async Task <TokenResponseDTO> Register(RegistrationRequestDTO data) { var user = _userRepository .FindByPredicate(u => u.Email == data.Email) .FirstOrDefault(); if (user != null) { throw new EntityAlreadyExistsException("User already exist"); } var newUser = _mapper.Map <ApplicationUser>(data); newUser.Role = "User"; newUser.Password = _hasher.Hash(data.Password); await _userRepository.AddAsync(newUser); var tokenDescriptor = GetTokenDescriptor(newUser); var token = tokenHandler.CreateToken(tokenDescriptor); return(new TokenResponseDTO { Token = tokenHandler.WriteToken(token) }); }
public Task <TokenResponseDTO> Authenticate(RegistrationRequestDTO data) { var user = _userRepository .FindByPredicate(u => u.Email == data.Email && _hasher.Check(u.Password, data.Password)) .FirstOrDefault(); if (user == null) { throw new InvalidAuthenticateException("Wrong login or password"); } var tokenDescriptor = GetTokenDescriptor(user); var token = tokenHandler.CreateToken(tokenDescriptor); return(Task.Run(() => new TokenResponseDTO { Token = tokenHandler.WriteToken(token) })); }