public async Task <ActionResult <UULResponse> > DeleteUser(UserLoginInfoDTO loginInfoDTO) { UULResponse response; try { var userInfoDTO = await AuthenticateUserOrThrow(loginInfoDTO); var user = await UserDao.GetUserByDetailsOrThrow(_context, userInfoDTO.Login, userInfoDTO.ApartmentCode); _context.Users.Remove(user); await _context.SaveChangesAsync(); response = new UULResponse() { Success = true, Message = "Profile was deleted", Data = null }; } catch (AuthException e) { response = Error.AuthFailed.CreateErrorResponse(_logger, "DeleteProfile", e); } catch (UserProfileNotFoundException e) { response = Error.ProfileNotFound.CreateErrorResponse(_logger, "DeleteProfile", e); } catch (Exception e) { response = Error.ProfileDeletionFailed.CreateErrorResponse(_logger, "DeleteProfile", e); } return(response); }
private async Task <UserInfoDTO> AuthenticateUserOrThrow(UserLoginInfoDTO loginInfoDTO) { var stored = await UserDao.GetUserByDetailsOrThrow(_context, loginInfoDTO.Login, loginInfoDTO.ApartmentCode); var saltedAndHashedPwd = SecHelper.SaltAndHashPwd(loginInfoDTO.Pwd, stored.Salt); if (saltedAndHashedPwd != stored.Hash) { throw new AuthException("Wrong credentials"); } return(new UserInfoDTO() { ApartmentCode = loginInfoDTO.ApartmentCode, Login = loginInfoDTO.Login }); }
public async Task <ActionResult <UULResponse> > LoginUser(UserLoginInfoDTO loginInfoDTO) { UULResponse response; try { var userInfoDTO = await AuthenticateUserOrThrow(loginInfoDTO); var tokenString = SecHelper.GenerateJSONWebToken(userInfoDTO.Login, userInfoDTO.ApartmentCode, _config); response = new UULResponse() { Success = true, Message = "Login success", Data = tokenString }; } catch (AuthException e) { response = Error.AuthFailed.CreateErrorResponse(_logger, "Login", e); } catch (Exception e) { response = Error.ProfileLoginFailed.CreateErrorResponse(_logger, "Login", e); } return(response); }
public async Task <UULResponse> LoginAsync(UserLoginInfoDTO loginInfoDTO) { var loginItemJson = new StringContent( JsonSerializer.Serialize(loginInfoDTO, _jsonSerializerOptions), Encoding.UTF8, "application/json"); UULResponse result; try { using var httpResponse = await _httpClient.PostAsync("/api/users/login", loginItemJson); httpResponse.EnsureSuccessStatusCode(); using var httpResponseStream = await httpResponse.Content.ReadAsStreamAsync(); result = await JsonSerializer.DeserializeAsync <UULResponse>(httpResponseStream, _jsonSerializerOptions); } catch (Exception e) { result = new UULResponse() { Success = false, Data = null, Message = e.Message }; } return(result); }