Zum Inhalt springen

Ein Admin soll im FE Passwörter anderer FE-User ändern können

Erstellt am 20. März 2012 · 3 Antworten · letzte Antwort am 29. März 2012

Tags: Formhandler, Frontend-Benutzer, Frage

2bbionic ·

Hallo,

ich habe das Problem, dass auf einer Seite ein Fe-User die Passwörter eines anderen FE-Users ändern können soll. Der "Admin-FE USer" ist bekannt und es ist auch immer nur der gleiche. Wen ich das entsrechende Tool (FE_change_password oder so ähnlich..)aber einbaue, kann ich logischerweise natürlich nur das Passwort des angemeldeten FE-Users ändern.

Gibt es da eine Mögllichkeit oder eine Extension, mit der das möglich ist ?

Freundlich,

2bbionic

karlchen ·

Ob es da schon was fertiges gibt, weiß ich leider nicht.
Es sollte aber (theoretisch) möglich sein mit formhandler.
Du erstellst dir ein Formular mit einer Auswahlmöglichkeit für alle FE_user und ein weiteres Feld für das neue PW. Nach dem senden des Formulars hast du die Möglichkeit, die eingegebenen Daten zu validieren und in selbst bestimmten Datenbank Feldern zu speichern.
Je nach dem wie bei euch die PWs abgespeichert werden (saltedPasswords, md5) musst du diese vor dem eintragen in die DB natürlich noch verschlüsseln.
Das Formular sollte dann natürlich auch über https betrieben werden.

2bbionic ·

Vielen Dank für den Tipp mit formhandler - das kannte ich noch nicht.
Ich habe mich soweit mal eingelesen, wie es mir möglich war und habe nach einiger Rumprobiererei auch fast alles geschafft.
Was fehlt, ist der eigentlich Update-Vorgang, also das UPDATE-Statement in der DB. Hier erstmal der relevante Teil des Formhandler-TS:

plugin.Tx_Formhandler.settings {
    debug = 1
    formValuesPrefix = formhandler
    predef.registration.markers.password = TEXT
    predef.registration.markers.password.data = GPvar:my_get_variable
    markers.options_dropdown = CONTENT
    markers.options_dropdown {
        table = fe_users
        select {
            pidInList = 2
            orderBy = username
            selectFields = uid, username, password
        }
        renderObj = COA
        renderObj {
...
preProcessors {
    1 {
        class = Tx_Formhandler_PreProcessor_LoadDB
        select {
            table = fe_users
            selectFields = uid,username,password,usergroup
        }
        config {
            1 {
                 mapping = username
            }
        }
  }
    2 {
        class = Tx_Formhandler_PreProcessor_LoadGetPost
    }
}
finishers {
    1 {
        class = Tx_Formhandler_Finisher_DB
        config {
            table = fe_users
            key = uid
            key.value = uid
            updateInsteadOfInsert = 1
            insertIfNoUpdatePossible = 1
            fields {
                pid.ifIsEmpty = 2
                usergroup.ifIsEmpty = 4
            }
        }
    }
}

Laut Debug Status bekomme ich die relevanten Felder alle "rüber";

Aktueller Step: 2
Höchster Subparts im Template (Anzahl der Steps): 1
Verwende Prefix für Formularwerte: "formhandler"
Verwende View "Tx_Formhandler_View_Form"
Die aktuellen GET/POST-Parameter:
uid 	5
password 	WQE
step-2-next 	Absenden
submitted 	1
randomID 	059f395462f976920d6222b5efb86c3c
removeFile 	
removeFileField 	
submitField 	

Die aktuellen Werte in der Session:
Rufe Klasse "Tx_Formhandler_Interceptor_Filtreatment" auf!
Files:
Rufe Klasse "Tx_Formhandler_Interceptor_Filtreatment" auf!
Rufe Klasse "Tx_Formhandler_Logger_DB" auf!

Das einzige, was nicht passiert, ist das Statement - wobei es erst gar nicht abgesetzt wird, wie mir ein Blick in das mySQL-Querylog verraten hat. Es sieht halt so aus, als würde der Finisher gar nicht gestartet werden...

Woran kann das noch liegen? Ich wäre um jeden Hinweis dankbar - nach zwei Tagen mit diesem Teil kann ich keine Rauten mehr sehen...

2bbionic ·

Es ist unglaublich ... kaum habe ich gepostet, kam es mir wie Schuppen von den Augen... Eine Klammer war zuviel , sodass die finisher-Abteilung wirklich nicht zum Zuge kam #angry# #angry# #angry#