1drop / shopware-sentry

Sentry plugin for Shopware
MIT License
20 stars 9 forks source link

API NotFoundException Problem #17

Closed larsbo closed 6 years ago

larsbo commented 6 years ago

Wird bei einem API request eine NotFoundException geworfen, kommt es zu einem Fatal error im Sentry plugin:

PHP Fatal error:  Uncaught Error: Call to undefined method Zend_Auth_Adapter_Http::refresh() in [..]/engine/Shopware/Components/Auth.php:164
Stack trace:
#0 [..]/engine/Shopware/Plugins/Default/Backend/Auth/Bootstrap.php(227): Shopware_Components_Auth->refresh()
#1 [..]/custom/plugins/OdSentry/Components/SentryClient.php(66): Shopware_Plugins_Backend_Auth_Bootstrap->checkAuth()
#2 [..]/custom/plugins/OdSentry/OdSentry.php(203): OdSentry\Components\SentryClient->captureException(Object(Shopware\Components\Api\Exception\NotFoundException))
#3 [..]/engine/Library/Enlight/Event/Handler/Default.php(91): OdSentry\OdSentry->onDispatchLoopShutdown(Object(Enlight_Controller_EventArgs))
#4 [..]/shopware/engine/Library/Enlight/Event/EventManager.php(218): Enlight_Event_Handler_Default->ex...

Shopware Version: 5.3.7 OdSentry Version: 1.1.1

htuscher commented 6 years ago

Sowas wie /api/articles/13 und 13 gibts nicht?

larsbo commented 6 years ago

genau, in meinem Fall war /api/variants/[variantNumber]?useNumberAsId=1 Ob es bei allen API endpoints oder nur variants auftritt, kann ich nicht sagen.

htuscher commented 6 years ago

Can confirm.

Plugin deactivated:

{
    "success": false,
    "message": "Variant by number 4242424242 not found"
}

Plugin activated: HTTP 500 with the described error

htuscher commented 6 years ago

Die Ursache ist sehr strange: Im Kontext eines API Requests hat man eine Backend-Authentifizierung, aber die checkAuth versucht immer einen Refresh des AuthAdapters auszuführen.

ABER: nur der AuthAdapter \Enlight_Components_Auth_Adapter_DbTable hat eine refresh Methode, alle anderen nicht und v.a. nicht der \Zend_Auth_Adapter_Http welcher in einem API Request verwendet wird.

Ich bau einen Workaround, aber eigentlich sollte Shopware die Interfaces der Adapter einhalten.