public async Task <Models.LoginResult> TokenPostTwoFactorAsync(TwoFactorProviderType type, string token, bool remember, string email, string masterPasswordHash, SymmetricCryptoKey key) { var result = new Models.LoginResult(); var request = new TokenRequest { Remember = remember, Email = email.Trim().ToLower(), MasterPasswordHash = masterPasswordHash, Token = token, Provider = type, Device = new DeviceRequest(_appIdService, _deviceInfoService) }; var response = await _connectApiRepository.PostTokenAsync(request); if (!response.Succeeded) { result.Success = false; result.ErrorMessage = response.Errors.FirstOrDefault()?.Message; return(result); } result.Success = true; await ProcessLoginSuccessAsync(key, response.Result); return(result); }
public void OnCompleted(GraphResponse response) { if (response?.JSONObject == null) { _completionSource?.TrySetResult(new Models.LoginResult { LoginState = LoginState.Canceled }); } else { _loginResult = new Models.LoginResult { FirstName = Profile.CurrentProfile.FirstName, LastName = Profile.CurrentProfile.LastName, Email = response.JSONObject.Has("email") ? response.JSONObject.GetString("email") : string.Empty, ImageUrl = response.JSONObject.GetJSONObject("picture")?.GetJSONObject("data")?.GetString("url"), Token = AccessToken.CurrentAccessToken.Token, UserId = AccessToken.CurrentAccessToken.UserId, ExpireAt = Utils.FromMsDateTime(AccessToken.CurrentAccessToken?.Expires?.Time), LoginState = LoginState.Success }; _completionSource?.TrySetResult(_loginResult); } }