habe mir mal Gedanken zum Thema Logout gemacht und brauche nun noch jemand der mir beim Vervollständigen hilft.
Bei uns im Betrieb soll FHEM als Mehrbenutzersystem laufen. Dazu wird pro Raum eine Webinstanz erstellt deren Name und Portnummer die Raumnummer ist. Jedem Benutzer wird eine PIN zugeordnet.
Bsp: für Raum 1.2.050
define 12050 FHEMWEB 12050 global
attr 12050 basicAuth {("nutzer1:1234")||("nutzer2:2345")}
attr 12050 menuEntries logout,/fhem?cmd={logout}
99_myUtils.pm
sub logout{
{fhem ('attr 12050 basicAuth 1')};
{fhem ('define at_logout at +00:00:01 attr 12050 basicAuth {("nutzer1:1234")||("nutzer2:2345")}')};
}
Meine weiteren Überlegungen:
die Logout Funktion mit einem Argument, dem FHEMWEB-Namen zu versehen und dann das basicAuth Attribut auszulesen und neu einzutragen.
EDIT 2014-05-14 18:29:
Bin schon weiter gekommen
sub logout{
my $WEB = shift;
my $basicAuth = AttrVal($WEB,"basicAuth",1);
{fhem ("attr $WEB basicAuth 1")};
{fhem ("define at_logout at +00:00:01 attr $WEB basicAuth $basicAuth")};
}
Sollte soweit alles erfüllen, was ich möchte wenn ich nun
attr 12050 menuEntries logout,/fhem?cmd={logout(%2212050%22)}
setze. I-Tüpfelchen wäre wenn er sich nun noch den Namen der WEB Instanz selber suchen könnte.
Für Anregungen bin ich Dankbar.
Gruß
Igami
PS: ein einfaches http://log:out@ip:port funktioniert leider nicht
noch ein hinweis: wenn du eine web instanz hast die nicht read only ist kannst du zur zeit durch URL manipulation auch devices schalten die du nicht siehst.
weiterhin solltest du über allowed commands nur erlauben was unbedingt nötig ist. also kein list, attr, delete, ... und set nur wenn die manipulationsmöglichkeit oben kein problem ist.
den patch nur bestimmte oder nur sichtbare devices zu erlauben habe ich noch nicht fertig.
gruss
andre