Account Reaktivierung bei Adminaktivierungseinstellung

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Account Reaktivierung bei Adminaktivierungseinstellung

Beitrag von makue »

Sorry, das Thema hört sich etwas seltsam an, mir ist aber nichts besseres eingefallen. Folgendes Problem:

Wenn ich das Board auf "Aktivierung durch den Admin" für Neuanmeldungen umschalte, funktioniert das problemlos und korrekt. Ändert jetzt ein User seine E-Mail Adresse, bekommt er eine Mail mit dem Aktivierungslink zugeschickt, das ist auch ok. Allerdings wird er nach dem Anklicken des Links nach Username/Passwort gefragt, was ich auch noch einsehe, das wird aber wegen des inaktiven Accounts abgelehnt. Es reicht an dieser Stelle die Zugangsdaten eines anderen Users anzugeben und schon wird der Account aktiviert. (aber diese hat ein User ja normalerweise nicht)

Ich habe auch mal im Code nachgeschaut, hier wird folgendes abgeprüft:

Code: Alles auswählen

if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $row['user_newpasswd'] == '')
user_newpasswd ist leer (auch wenn der User sein PW gerade erst im Profil geändert hat), damit wird in diesen Programmteil verzweigt. Tja, und dort wird über if (!$userdata['session_logged_in']) nach einem login abgefragt, was natürlich negativ ausfällt. Dann wird einfach zum login umgeleitet. Und da sind wir wieder am Anfang, der Account ist ja inaktiv, also wird die Anmeldung abgelehnt.

user_newpasswd wird anscheinend nur gesetzt wenn der User ein neues Passwort zugesandt bekommt.

Für mich sieht das wie ein Codefehler aus, allerdings kann ich mich irren und ich hoffe ich irre mich! :wink:

Kann das jemand von Euch nachvollziehen bzw. hat jemand eine Lösung für das Problem? Vielen Dank!

p.s. es betrifft die aktuelle Version 2.0.20 (auch ältere)
schlaumi
Mitglied
Beiträge: 152
Registriert: 08.04.2006 17:21

Beitrag von schlaumi »

sowas ähnliches ist mir mal bei einem anderen forum passiert, wo ich nicht admin bin. ich hatte mein passwort vergessen und ein neues beantragt. dass musste erst durch einen klick auf einen link noch aktivert werden... doch da musste man sich erst einloggen... und das konnte ich natürlich nicht, weil ich ja kein passwort hatte....

aber ich wüsste leider auch nicht, wie man das problem beheben könnte, da ich in dem forum jetzt admin bin, würd mmichs aber mal interressieren...
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Habe mir jetzt durch eine Änderung geholfen. Bei mir sieht die usercp_activate.php jetzt so aus (an der entsprechenden Stelle):

Code: Alles auswählen

	else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != ''))
	{
/*
		if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $row['user_newpasswd'] == '')
		{
			if (!$userdata['session_logged_in'])
			{
				redirect(append_sid('login.' . $phpEx . '?redirect=profile.' . $phpEx . '&mode=activate&' . POST_USERS_URL . '=' . $row['user_id'] . '&act_key=' . trim($HTTP_GET_VARS['act_key'])));
			}
			else if ($userdata['user_level'] != ADMIN)
			{
				message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
			}
		}
*/
		$sql_update_pass = ( $row['user_newpasswd'] != '' ) ? ", user_password = '" . str_replace("\'", "''", $row['user_newpasswd']) . "', user_newpasswd = ''" : '';
Ich habe also einen ganzen Block auskommentiert, der IMHO gar nicht nötig ist. Nun ist es egal ob der Admin oder der User die Mail mit der Reaktivierung bekommt, beide können den Account reaktivieren. Bei mir war es halt so, dass der User die Mail bekommen hat aber der Admin nur reaktivieren konnte. Was vom beiden nun falsch war weiß ich nicht, jedenfalls passte es nicht zusammen.

Sicherheitsbedenken habe ich nicht, da nur der Account reaktiviert werden kann, der auch einen Aktivierungskey eingetragen hat. Und wer den nicht kennt, hat eh keine Chance. Hier ist für mich etwas zu viel Sicherheit im Code gewesen.

Ich habe es ausprobiert, funktioniert wie gewollt. Endlich keine genervten User mehr, die Ihren Account nach E-Mailadressänderung nicht mehr reaktivieren können. :)
Chipy
Mitglied
Beiträge: 3
Registriert: 22.04.2006 19:08

Beitrag von Chipy »

@makue

klasse, vielen dank für deinen einfachen wie genialen trick mit dem auskommentieren!!! deinen tip sollte man ganz oben festtackern oder auch gleich noch mit in die knowledge reinschreiben damit ihn leute die ebenfalls probleme haben damit, es schnell finden und nicht wie ich total verzweifelt erstmal lange im board und in der sufu umher irren auf der suche nach einer lösung. :grin:
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“