예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }