Angemeldeten Benutzer auslesen

Begonnen von attacho, 20 Oktober 2018, 00:06:15

Vorheriges Thema - Nächstes Thema

attacho

Hallo zusammen,

ich versuche aktuell den angemeldeten Benutzer zu ermitteln, um diese Information in der weiteren Verarbeitung zu verwenden.
Leider finde ich keine Informationen, welcher User gerade angemeldet ist und im Forum habe ich auch nichts gefunden. Kann mir jemand einen Tipp geben? Danke.

Definiert habe ich:
define allowedWEB allowed
attr allowedWEB validFor WEBtablet
attr allowedWEB basicAuth { ("$user:$password" eq "user1:pwd1") || ("$user:$password" eq "user2:pwd2") }
attr allowedWEB allowedCommands set,get


Ich möchte z.B. in einem Notify auf die Information zurückgreifen, dass user1 gerade mit dem System interagiert.
An der Webtablet Instanz finde ich aber kein Reading dazu:

DeviceOverview
WEBtablet_192.168.0.18_50963

Connected
WEBtablet_192.168.0.18_50963
WEBtablet_192.168.0.18_50963
Internals
Authenticated 1
BUF
FD 36
FW_ID 306
LASTACCESS 1539985581
NAME WEBtablet_192.168.0.18_50963
NR 306
NTFY_ORDER WEBtablet_192.168.0.18_50963
PEER 192.168.0.18
PORT 50963
SNAME WEBtablet
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1


Im Log steht zwar, dass versucht wurde etwas unerlaubtes zu tun, allerdings nicht von wem.
2018.10.19 23:46:26 3: Forbidden command modify for WEBtablet_192.168.0.18_50966
2018.10.19 23:46:26 1: stacktrace:
2018.10.19 23:46:26 1:     main::allowed_Authorize             called by fhem.pl (3597)
2018.10.19 23:46:26 1:     main::CallFn                        called by fhem.pl (5364)
2018.10.19 23:46:26 1:     main::Authorized                    called by fhem.pl (1202)
2018.10.19 23:46:26 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2583)
2018.10.19 23:46:26 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (861)
2018.10.19 23:46:26 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (533)
2018.10.19 23:46:26 1:     main::FW_Read                       called by fhem.pl (3597)
2018.10.19 23:46:26 1:     main::CallFn                        called by fhem.pl (726)
2018.10.19 23:46:26 4: authorize WEBtablet/cmd/modify: allowedWEB returned prohibited

betateilchen

FHEM weiß nicht, welcher Benutzer angemeldet ist.

Das allowed device für Deine Web-Instanz prüft lediglich, ob der von Dir bei basicAuth angegebene perl Code "wahr" oder "falsch" zurückliefert. Du kannst an dieser Stelle beliebigen perl Code einbauen, sogar ganz ohne Benutzer.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

attacho

Hallo betateilchen,

vielen Dank für Deine Antwort.
Das mit dem beliebigen perl Code bringt mich schon mal weiter. Habe es jetzt so gelöst, dass basicAuth einfach eine Subroutine login aufruft. Dort wird User und Passwort gecheckt.
basicAuth {login($user,$password)}
Wenn ich jetzt noch die richtige Session zu fassen kriege, kann ich den User da mit eintragen und später wieder abrufen. Wenn ich das richtig verstehe, werden die Session auch als Device geführt, z.B.
WEBtablet_192.168.0.18_55843
Hast Du da noch einen Tipp für mich, mit welcher Variable ich das Device bei der Anmeldung ermitteln kann?
Würde dann den Aufruf so gestalten:
basicAuth {login($user,$password,$devicename)}

Viele Grüße
attacho

betateilchen

probier mal mit $FW_wname oder $FW_cname
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

attacho

#4
 $FW_cname ist die Lösung. Vielen Dank.

rudolfkoenig

FW_cname ist nur dann die Loesung, falls allowed vom FHEMWEB aufgerufen wird.
In allowed_Authenticate bzw. allowed_Authorize wird die Instanz der aktuellen Verbindung im Parameter $cl uebergeben, das sollte auch im aufgerufenen Perl-Code verwendbar sein.

rudolfkoenig

Ab sofort steht der Benutzer im AuthenticatedUser Feld der Verbindungs-Hash.
Siehe auch https://forum.fhem.de/index.php?topic=92423