Xsettings

Aus bafbal.de
Zur Navigation springen Zur Suche springen

xsettings - Benutzereinstellungen

Das Kommando xsettings dient den Benutzereinstellungen, derzeit sind das die Änderung der Sprache und des Passworts.

Die benutzereinstellungen

Plausibilitätsprüfungen

Die Bedienung ist so, wie man es erwartet. Erwähnung sollten vielleicht noch die Plausibilitätsprüfungen finden, welche die Länge des Passworts und die Übereinstimmung mit der Passwortbestätigung prüfen. Schlagen diese Prüfungen fehl, wird das Ergebnis statt des Trees angezeigt (solange Daten geändert sind, kann im Baum ohnehin nicht navigiert werden). Die fehlgeschlagenen Prüfungen verhindern das Speichern, nicht aber das Verwerfen der Änderung.

Fehlgeschlagene Prüfungen

Code

xsettings

#rights  n=frm   r_user=w
#frm  y=treepage  c=$T(xsettings)   flt=xsettings_flt   w=400

#btn  y=save   s=#save  se=c
#btn  y=cancel   s=#cancel  se=cp
#btn  y=back   s=#treeback  se=b
#btn  y=backback   s=#treebackback  se=b

#filter

Das Kommando xsettings ist ziemlich Standard. Die Berechtigungen sind hier für alle User - schließlich sollen die ja hier ihr Passwort ändern können. Buttons für Ex- und Import gibt es nicht - xsettings hat auch keine eigenen Tabellen.

xsettings_flt

#tree_clear

#tree_add  u=root   c=$T(change_passwort)   s="#page_fill   d=xsettings_page_password"
#tree_add  u=root   c=$T(Set_language)   s="#page_fill   d=xsettings_page_language"

Der Baum kennt lediglich zwei Seiten.

xsettings_page_language

#page

#prim  as=Y  
#cat  as=N   sz=360      c=$T(Languages)
#btns_seg  
#btns_btn  c=$T(Set_language)  w=150   cmd=xtranslation_exec(setlang,xsettings_page_language)

#grd_seg   frc=0   fcc=1   clt=ss   n=lang   c="$T(selected): $LANGUAGE()"   b=H
#grd_col   f=translate_language_id   c1=ID   w=30   y=guid   ro=Y
#grd_col   f=name   c1="Name"   w=200   wst=300   l=40   ro=Y
#sql select * from translate_language
#grd_data   q=sql   t=translate_language

Das Kommando ähnelt ziemlich xtranslation_page_languages. Es können hier keine Sprachen hinzugefügt werden. Beim Setzen der Sprache wird auch xtranslation_exec verwendet, deshalb muss der Name der Seite - hier xsettings_page_language - als Parameter übergeben werden.

xsettings_page_password

#page

#prim  as=Y  
#cat  as=Y      c=$T(User)

#cmdclear
#cmd #page_val   i=vl   col=1   row=4   z=$HASH($PVAL(vl,1,2),SHA512)

#vl_seg  cc=2  clt=ss   w1=150  w2=300   wst2=300  n=vl   c=" "   b=H
#vl_line   c1="ID"   f2=user_user_id   ro2=Y  
#vl_line   c1="Login"   f2=login   ro2=Y   
#vl_line   c1=$T(new_password)    nd2=Y     chg2=1   pw2=Y
#vl_line   c1=$T(confirm_password)    nd2=Y     pw2=Y
#vl_line   c1=$T(password_hash)   f2=password   ro2=Y  
#sql select * from user_user  where user_user_id = :kid
#vl_data   q=sql   t=user_user   kid=$USERID()

#page_check   c=$T(check_password_length)   chk="$BOOL($LEN($PVAL(vl,1,2)) > 5)"
#page_check   c=$T(check_password_confirmation)   chk="$BOOL($PVAL(vl,1,2) = $PVAL(vl,1,3))"

Wenn ein neues Passwort eingegeben wird, dann soll dieses gehasht in der Zeile password geschrieben werden. Das Kommando dafür wird hier mit #cmd als lokales Kommando definiert und trägt die Nummer 1. Mit dem #cmdclear wird sichergestellt, dass es vor der Definition leer ist. Das lokale Kommando holt mit $PVAL() das eingegebene Passwort aus dem VL-Segment, führt die Funktion $HASH() aus und schreibt den Wert mit #page_val zurück in das VL-Segment.

Das lokale Kommando wird in der Zeile für das neue Passwort eingesetzt. Mit dem Parameter chg2=1 wird definiert, dass bei Änderung des Wertes in der zweiten Spalte (die erste trägt die Beschriftung) das lokale Kommando 1 (also das mit #cmd definierte) ausgeführt wird. Die Passwörter selbst werden nicht in der Datenbank gespeichert, von daher ist nd2=Y ("no data") zu setzen. Das Passwort soll auch nicht im Klartext angezeigt werden, also ist pw2=Y zu setzen.

Der Parameter kid des SQL-Statements wird mit der Funktion $USERID() auf die ID des angemeldeten Users gesetzt - dieser soll ja sein - und nur sein - eigenes Passwort ändern.

Die Plausibilitätsprüfungen werden mit der Prozedur #page_check durchgeführt. Die Bedingung im Parameter chk muss Y sein, sonst gilt die Prüfung als fehlgeschlagen und der angegebene Text wird ausgegeben.