# sLogout() &amp; Shopware\_Modules\_Admin\_Logout\_Start -kein Aufruf

**URL:** <https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [4. Juli 2014 um 09:21 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137 "2014-07-04T09:21:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [4. Juli 2014 um 09:21 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137/1 "2014-07-04T09:21:58Z")

</div>

Hallo Community, beim Logout wird die Funktion sLogout() der Core-Klasse sAdmin nicht aufgerufen. Und als Folge: es wird in meinem Plugin die fürs Event PluginShopware\_Modules\_Admin\_Logout\_Start registrierte Funktion auch nicht ausgeführt. Welche Funktionen/Events sind denn dafür zuständig? Bei mir läuft Shopware 4.2.3. Auch bei der jungfräulichen 4.2.3 Installation sehe ich, dass die sLogout() gar nicht aufgerufen wird.

---

<div class="post-metadata">

**Author:** ![steinsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b487fb/32.png) [@steinsoftware](https://forum.shopware.com/u/steinsoftware)\
**Post date:** [4. Juli 2014 um 11:22 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137/2 "2014-07-04T11:22:10Z")

</div>

Ja ich hatte da beim Logout auch das Problem, das da meine Funktion nicht aufgerufen wurde. Ich habe das Problem dann irgendwie umschifft. Ich weiß ja nicht was du vorhast aber ich ich habe das so gelöst, dass ich mir bei den user\_attributes die letzte Session gespeichert habe und mich dann bei einem anderen sinnvollen event eingeklinkt habe oder alternativ ein before-Hook (z.B. Login XD) in welchem ich dann kucke ob die aktuelle Shopware-\>session mit der gespeicherten übereinstimmt. Falls nicht dann wird die Funktion ausgeführt. Keine Ahnung was du vorhast und ob diese Lösung bei dir dann auch funktioniert…

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [4. Juli 2014 um 13:20 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137/3 "2014-07-04T13:20:17Z")

</div>

Ich möchte bei den ausgeloggten Benutzern den Warenkorb leeren. Alles ist schon programmiert, man muss nur beim Logout das aufrufen. Deswegen ist die Frage: wenn nicht mit der sLogout(), dann wo passiert das Ausloggen? Überall wird Shopware\_Modules\_Admin\_Logout\_Start erwähnt, was richtig ausschaut, aber gar nicht aufgerufen wird.

---

<div class="post-metadata">

**Author:** ![steinsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b487fb/32.png) [@steinsoftware](https://forum.shopware.com/u/steinsoftware)\
**Post date:** [4. Juli 2014 um 16:27 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137/4 "2014-07-04T16:27:40Z")

</div>

Würde dann ja mit meinem Workaround nicht funktionieren. Der Vollständigkeithalber hier trotzdem meine Methode. Vl. hilfts ja jemand anderem… Bootstrap.php: in der install(): `$this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend', 'onPostDispatchFrontend'); //oder anderes Event oder Hook Shopware()-\>Models()-\>addAttribute( 's\_user\_attributes', 'steinsoftware', 'lastSession', 'TEXT', true ); Shopware()-\>Models()-\>generateAttributeModels(array( 's\_user\_attributes' ));` in der uninstall(): `Shopware()-\>Models()-\>removeAttribute( 's\_user\_attributes', 'steinsoftware', 'lastSession' ); Shopware()-\>Models()-\>generateAttributeModels(array('s\_user\_attributes'));` zusätzliche Methode: `public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { if( Shopware()-\>Modules()-\>Admin()-\>sCheckUser() ){ $theIdOfUser = Shopware()-\>Session()-\>sUserId; $actSession = Shopware()-\>SessionID(); $sql\_lastSession = "SELECT steinsoftware\_lastSession FROM s\_user\_attributes WHERE userID=$theIdOfUser"; $lastSession = Shopware()-\>Db()-\>fetchOne($sql\_lastSession); if ($actSession != $lastSession) { //TODO Funktion ausführen } } }` Ist zwar bischen unschön, weil hier auf den Kunden nicht mit der API zugegriffen wird, aber soll ja auch übersichtlich bleiben.

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [4. Juli 2014 um 16:30 UTC](https://forum.shopware.com/t/slogout-amp-shopware-modules-admin-logout-start-kein-aufruf/21137/5 "2014-07-04T16:30:28Z")

</div>

Ich habe meine Funktion an das andere Event angehängt, an das Enlight\_Controller\_Action\_PostDispatch. Und dort die Action abgefragt:`if(in\_array($args-\>getRequest()-\>getActionName(), array('ajax\_logout', 'logout'))) { // Hier meine Operationen (man kann Session bzw. Benutzer abfragen) }`
