OW::getUser() immer mit 500 Error | Forum

devKommunikatisten Aug 17 '17
Hallo,


in den Plugins habe ich folgende Zeile gefunden, um einen User im System anzumelden:


OW::getUser()->login($user->id);


aber mit der Zeile und auch anderen Funktionen, die aus OW::getUser() genutzt werden könnten, erhalte ich immer nur einen Error 500


Hat jemand einen Tipp, was noch schief läuft?


Danke

Team
Leo Aug 17 '17
Die Methode login() in der Datei /ow_core/user.php referenziert auf die Methode login() in der Datei /ow_core/auth.php. Diese Methode erwartet wiederum eine Instanz des Interfaces OW_IAuthenticator, wie man in der Methode setAuthenticator erkennen kann, die benötigt wird, um das Klassenattribut authenticator zu setzen, das für die Login-Methode benötigt wird. Dieses Interface wird in der aktuellen Oxwall-Version lediglich von den Dateien /ow_core/session_authenticator.php (Klasse OW_SessionAuthenticator) und /ow_core/token_authenticator.php (Klasse OW_TokenAuehtnticator) implementiert. Diese beiden Klassen besitzen zwar die geforderten Login-Methoden, diese melden einen Benutzer aber nicht im eigentlichen Sinne an, sondern führen während des Logins bestimmte Teilschritte aus bzw. nehmen während des Logins bestimmte Teilaufgaben wahr.

Sieh dir bitte meine Antwort in deinem anderen Beitrag an, ich habe dir dort erläutert, weshalb die von dir dort genannte Zeile nicht korrekt ist.
Zuletzt bearbeitet von Leo Aug 19 '17
devKommunikatisten Aug 17 '17
Ich habe mir eine Klasse geschrieben, die Username und PW verarbeiten soll:


darin kommt u.a. dann


$authAdapter = new BASE_CLASS_StandardAuth($username,$password);
$user = $authAdapter->getUser();


das funktioniert... kann ich mit diesen Angaben und dem verifizierten User, den ich ja so aus dem System erhalte kein aktives Login generieren und dann auf die Startseite weiterleiten?

Ich prüfe also so selber, ob das Login korrekt ist, also einem echten User zugewiesen ist ... es fehlt "nur" noch die eigentlich Anmeldung ...


Ich brauche leider das Login seperat verarbeitet, weil ich davon einer externen Seite ermöglichen muss.


Danke nochmals

Zuletzt bearbeitet von devKommunikatisten Aug 17 '17
Team
Leo Aug 19 '17
Ich möchte dich zuerst bitten, in deinem ersten Thema weiterzuschreiben, da es sonst zu Crossposting kommt, was ein Nachvollziehen der Thematik unnötig erschwert. Ich werde das Thema deshalb im Anschluss an meine Antwort schließen.

Bitte sieh dir meine aktualisierte Antwort oben sowie in deinem ersten Thema an, vielleicht wird dir so klarer, weshalb es zu dem beschriebenen Verhalten kommt.

Zitat von devKommunikatisten 

$authAdapter = new BASE_CLASS_StandardAuth($username,$password);
$user = $authAdapter->getUser();


das funktioniert

Das kann so leider nicht funktionieren, denn die Klasse BASE_CLASS_StandardAuth verfügt in der aktuellen Oxwall-Version über keine solche Methode getUser().

Schau dir lieber deinen ersten Entwurf an, damit bist du auf dem richtigen Pfad. Nehme dir meinen Hinweis im dortigen Thema zu Herzen und verfahre dann weiter.
Dieses Thema ist geschlossen