Skip to content

Commit

Permalink
chore: make serialization error wrappable (#837)
Browse files Browse the repository at this point in the history
  • Loading branch information
aeneasr authored Nov 28, 2024
1 parent 6335f90 commit db74aa7
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
8 changes: 6 additions & 2 deletions errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@ var (
ErrInvalidatedAuthorizeCode = stderr.New("Authorization code has ben invalidated")
// ErrSerializationFailure is an error indicating that the transactional capable storage could not guarantee
// consistency of Update & Delete operations on the same rows between multiple sessions.
ErrSerializationFailure = stderr.New("The request could not be completed due to concurrent access")
ErrUnknownRequest = &RFC6749Error{
ErrSerializationFailure = &RFC6749Error{
ErrorField: errUnknownErrorName,
DescriptionField: "The request could not be completed because another request is competing for the same resource.",
CodeField: http.StatusConflict,
}
ErrUnknownRequest = &RFC6749Error{
ErrorField: errUnknownErrorName,
DescriptionField: "The handler is not responsible for this request.",
CodeField: http.StatusBadRequest,
Expand Down
2 changes: 2 additions & 0 deletions handler/oauth2/flow_refresh.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,12 +221,14 @@ func (c *RefreshTokenGrantHandler) handleRefreshTokenEndpointStorageError(ctx co
if errors.Is(storageErr, fosite.ErrSerializationFailure) {
return errorsx.WithStack(fosite.ErrInvalidRequest.
WithDebugf(storageErr.Error()).
WithWrap(storageErr).
WithHint("Failed to refresh token because of multiple concurrent requests using the same token which is not allowed."))
}

if errors.Is(storageErr, fosite.ErrNotFound) || errors.Is(storageErr, fosite.ErrInactiveToken) {
return errorsx.WithStack(fosite.ErrInvalidRequest.
WithDebugf(storageErr.Error()).
WithWrap(storageErr).
WithHint("Failed to refresh token because of multiple concurrent requests using the same token which is not allowed."))
}

Expand Down

0 comments on commit db74aa7

Please sign in to comment.