public UserAuthTokenStatusModel GetAuthTokenStatus(int userId, int repositoryId)
{
UserAuthTokenStatusModel authTokenStatus = new UserAuthTokenStatusModel();
Repository repository = this.repositoryDetails.GetRepositoryById(repositoryId);
if (string.Compare(repository.BaseRepository.Name, BaseRepositoryEnum.SkyDrive.ToString(), StringComparison.InvariantCultureIgnoreCase) != 0)
{
authTokenStatus.RedirectionRequired = false;
return authTokenStatus;
}
else if ((bool)repository.IsImpersonating)
{
authTokenStatus.RedirectionRequired = false;
return authTokenStatus;
}
else
{
AuthToken authToken = this.GetUserAuthToken(userId, repositoryId);
if (authToken == null)
{
authTokenStatus.RedirectionRequired = true;
}
else if (string.IsNullOrEmpty(authToken.AccessToken) && string.IsNullOrEmpty(authToken.RefreshToken))
{
authTokenStatus.RedirectionRequired = true;
}
else if (string.IsNullOrEmpty(authToken.RefreshToken) && authToken.TokenExpiresOn <= DateTime.UtcNow.AddMinutes(1))
{
authTokenStatus.RedirectionRequired = true;
}
}
return authTokenStatus;
}