public OperationResponse RefreshAuthentication(FunzaAuthenticationSettings settings) { var result = new OperationResponse(); if (!this.ValidAuthenticationToken(settings)) { var authenticationResult = this.FunzaAuthenticateCommand.Execute(settings); result.AddResponse(authenticationResult); if (result.IsSucceed) { settings.TokenSettings = authenticationResult.Bag; } } return(result); }
private bool ValidAuthenticationToken(FunzaAuthenticationSettings settings) { if (settings.TokenSettings == null) { return(false); } var expirationDate = settings.TokenSettings.Expires; if (expirationDate > DateTime.Now.AddHours(-3)) { return(false); } return(true); }
public OperationResponse <TokenSettings> Execute(FunzaAuthenticationSettings settings) { var result = new OperationResponse <TokenSettings>(); var authenticateResult = this.Repository.Authenticate(settings.AuthenticationURL, settings.AuthenticationUserName, settings.AuthenticationPassword); result.AddResponse(authenticateResult); if (result.IsSucceed && authenticateResult.Bag != null) { FunzaAuthenticateCommandOutputDTO tempDTO = null; try { // Trying another authentication format // Local hosting tempDTO = new FunzaAuthenticateCommandOutputDTO { AccessToken = authenticateResult.Bag["access_token"].ToString(), TokenType = authenticateResult.Bag["token_type"].ToString(), ExpiresIn = authenticateResult.Bag["expires_in"].ToString(), UserName = authenticateResult.Bag["userName"].ToString(), Issued = authenticateResult.Bag[".issued"].ToString(), Expires = authenticateResult.Bag[".expires"].ToString(), }; } catch (Exception ex) { // Trying another authentication format // AzureHost tempDTO = new FunzaAuthenticateCommandOutputDTO { AccessToken = authenticateResult.Bag["accessToken"].ToString(), EncryptedAccessToken = authenticateResult.Bag["encryptedAccessToken"].ToString(), ExpiresIn = authenticateResult.Bag["expireInSeconds"].ToString(), UserId = authenticateResult.Bag["userId"].ToString(), }; } result.Bag = new TokenSettings { AccessToken = tempDTO.AccessToken, TokenType = tempDTO.TokenType, UserName = tempDTO.UserName, Issued = tempDTO.Issued, }; if (TimeSpan.TryParse(tempDTO.ExpiresIn, out TimeSpan tempExpiresIn)) { result.Bag.ExpiresIn = tempExpiresIn; } if (DateTime.TryParse(tempDTO.Expires, out DateTime tempExpires)) { result.Bag.Expires = tempExpires; } else if (result.Bag.ExpiresIn.HasValue) { if (result.Bag.ExpiresIn.Value.TotalDays > 1) { result.Bag.Expires = DateTime.UtcNow.AddDays(1); } else { result.Bag.Expires = DateTime.UtcNow.AddSeconds(result.Bag.ExpiresIn.Value.TotalSeconds); } } } return(result); }