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
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.
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...
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#