/// <summary> /// Saves the credentials. /// </summary> /// <param name="credentials">Credentials.</param> public void SaveCredentials(KeychainModel credentials) { if (!this.AreCredentialsValid()) { this.DeleteCredentials(); Account account = new Account { Username = credentials.Username }; account.Properties.Add(GrosvenorConstants.Password, credentials.Password); account.Properties.Add(GrosvenorConstants.AccessToken, credentials.AccessToken); account.Properties.Add(GrosvenorConstants.RefreshToken, credentials.RefreshToken); account.Properties.Add(GrosvenorConstants.AccessTokenExpireDate, credentials.AccessTokenExpireDate.ToString()); account.Properties.Add(GrosvenorConstants.UserId, credentials.UserId.ToString()); AccountStore.Create(Forms.Context).Save(account, App.AppName); } }
/// <summary> /// The get Keychain Model. /// </summary> /// <returns>The <see cref="KeychainModel" />.</returns> public KeychainModel GetCredentials() { var account = AccountStore.Create(Forms.Context).FindAccountsForService(App.AppName).FirstOrDefault(); if (account != null) { var credentials = new KeychainModel() { Username = account.Username, Password = account.Properties[GrosvenorConstants.Password], AccessToken = account.Properties[GrosvenorConstants.AccessToken], RefreshToken = account.Properties[GrosvenorConstants.RefreshToken], AccessTokenExpireDate = Convert.ToDateTime(account.Properties[GrosvenorConstants.AccessTokenExpireDate]), UserId = Guid.Parse(account.Properties[GrosvenorConstants.UserId]) }; return(credentials); } else { //something to do with null return(null); } }
public async Task <BaseFacadeResponseModel <LoginResponseModel> > Login(BaseFacadeRequestModelWithContent <LoginRequestModel> model) { var apiRequestModel = Mapper.Map <LoginApiRequestModel>(model.Content); var authResponse = await _authenticationHelperWrapper.GetUserToken(model.Content.Email, model.Content.Password, model.Content.ApplicationUsesRefreshTokens); if (authResponse == null || authResponse.IsError) { //log unsuccessful login attempt var addLogEntryApiRequestModel = new AddLogEntryApiRequestModel { StatusCode = 404, Date = DateTime.Now, Type = "Login attempt", IpAddress = model.Content.IpAddress, Message = "A failed login attempt occurred using the email address " + model.Content.Email }; //Todo: log addLogEntryApiRequestModel if (authResponse != null) { return(new BaseFacadeResponseModel <LoginResponseModel> { //authResponse.Json.GetValue("error_description"); Message = authResponse.Json.GetValue("error_description") .ToString(), //"The username or password entered was incorrect. Please check your details and try again.", StatusCode = System.Net.HttpStatusCode.Unauthorized }); } } var runner = await _authenticationHelperWrapper.TraverseReauth(() => _authApi.Login(authResponse.AccessToken, apiRequestModel), authResponse.RefreshToken); //generic helper that sets up the return object var runnerResponse = await new ApiRunnerResponseHelper().ReturnRunnerResponse(runner, new LoginResponseModel(), new LoginApiResponseModel()); var mappedFacadeResponse = (runnerResponse.FacadeResponseModel as BaseFacadeResponseModel <LoginResponseModel>); mappedFacadeResponse.AccessToken = authResponse.AccessToken; mappedFacadeResponse.RefreshToken = authResponse.RefreshToken ?? string.Empty; //here we need to translate the api content response into the UI response if (runnerResponse.ApiContentResponseModelContent != null) { var apiResponse = (runnerResponse.ApiContentResponseModelContent as LoginApiResponseModel); mappedFacadeResponse.Content = new LoginResponseModel { UserDetails = apiResponse.UserDetails, VerificationToken = apiResponse.VerificationToken, UserId = apiResponse.UserDetails.UserId }; } else { //log unsuccessful login attempt var addLogEntryApiRequestModel = new AddLogEntryApiRequestModel { StatusCode = 404, Date = DateTime.Now, Type = "Login attempt", IpAddress = model.Content.IpAddress, Message = "A failed login attempt occurred using the email address " + model.Content.Email }; //Todo: reinstate this log entry //await _logApi.AddLogEntry(); } var Credentials = new KeychainModel() { Username = model.Content.Email, Password = model.Content.Password, AccessToken = mappedFacadeResponse.AccessToken, RefreshToken = mappedFacadeResponse.RefreshToken, AccessTokenExpireDate = DateTime.Now.AddMinutes(20), UserId = mappedFacadeResponse.Content.UserId }; this.keychainService.SaveCredentials(Credentials); return(mappedFacadeResponse); }
public void SaveCredentials(KeychainModel credentials) { this.model = credentials; }
public void DeleteCredentials() { this.model = null; }