Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR rewrites our authentication logic to store access tokens and refresh tokens in Redis.
The motivation is to make way fewer calls to Auth0's Management API which has strict rate limits. Previously we would make a call to the Management API every time we needed the GitHub access token as it was not stored locally. Now we only call the Management API when the user logs in.
As a great side effect the portal has now become slightly faster as it makes fewer network calls.
The flow when logging in is now as follows:
When using the tokens we rely on the expiry dates to determine if we should renew the tokens or now. At this point we do not invoke the Github API with credentials and examine the response to determine if we should refresh the credentials. This was left out as I'm unsure it's needed when we can rely on expiry dates. If the user have revoked the tokens there is nothing we can do anyway to renew them.