This repository has been archived by the owner on Mar 22, 2021. It is now read-only.
Rescue specific exceptions in Authenticable #133
Merged
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.
Currently,
Knock::Authenticable
rescues all exceptions when trying to decode the JWT and find the user. This is an anti-pattern: if, for whatever reason, either.from_token_payload
or any other piece of the code in therescue
block fails for an unexpected reason, authentication will silently fail.In the best-case scenario, this means that the developer is left to debug a confusing issue without the required context.
In the worst-case scenario, authentication fails and the developer does not know about it (it should be caught by tests, but not all applications are tested properly, as we all know).
This PR changes
Knock::Authenticable#define_current_entity_getter
to only rescueActiveRecord::RecordNotFound
andJWT::DecodeError
, the two errors which should be handled. All other errors will crash the application, as one would expect.I have run the existing test suite against the PR and it passes.