Removed the long-lived JWT token in favor of new middleware #11024
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 resolves a potential security issue with overly-long-lived temporary cookie-based API tokens.
Since this messes around with auth, we should test it much more thoroughly than I have. We should test that API routes still work with API keys, and that API routes also work with regular Laravel session tokens. We will need to be extra careful to blow out any cookies we might have, as those are still valid tokens.
The approach originally was that I wanted to make a generic 'any' Middleware which could take a comma-separated list of other middleware names, and if any of them pass, then the middleware continues. That didn't work because I couldn't get the middleware resolver to work quite right.
So I backed off and instead hardcoded the two middlewares that we wanted 'any' of - 'auth' and 'auth:api'. It seems to work fine like that.
As a couple of fun side effects - we will end up sending fewer cookies with much less bytes this way. Helps to save the environment! :) And it's much easier to open up an API endpoint in your browser - so long as you're logged in, you see the JSON output right there and most browsers will 'pretty-print' it for you.