Die SuFu hat mir nicht wirklich geholfen, daher mal die Frage:
Gibt es (in der Tabellenstruktur) eine Möglichkeit, Loginnamen und Benutzernamen getrennt zu vergeben?
Hintergrund: Single-sign-on (per Windowsauthentifizierung) gegen das Actice Directory hab ich realisiert bekommen, ebenso das automatische Anlegen, wenn ein Benutzer das Forum öffnet und noch nicht existiert. Allerdings haben die Benutzer hässliche samAccountnames (a la "abc123456"), was ziemlich bescheiden aussieht.
Die weiteren Benutzerdaten (Name, email usw) kann ich aus einer anderen Datenbank ziehen, nicht das Problem. Nur: Wie kann ich einen anderen anzuzeigenden Namen definieren, ohne gleich die komplette Datenbank umzustricken? Oder ist der Aufwand nicht so enorm?
Pseudonym?
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Re: Pseudonym?
.. falls noch jemand interesse daran hat, habe es jetzt gelöst.
In der phpbb_users - Tabelle 'ne neue Spalte zufügen, bspw. user_pseudo, als varchar(255) oder sowas, default null.
In includes/functions_users.php eine neue Funktion einfuegen:
Jetzt kann man an jeder Stelle, an der der Benutzername verwendet wird, den Pseudonamen ausgeben lassen (ein require_once("{$phpbb_root_path}includes/functions_user.$phpEx"); davor macht Sinn).
Zentral kann man dass in der Funktion get_username_stirng in der Datei functions_content.php umsetzen:
Damit hat man dann die Möglichkeit, bei Aufrufen von get_username_string als Paramter an erster Stelle statt 'username' 'pseudo' anzugeben, und statt 'full' 'fullpseudo' - dort wird dann (wenn in der Datenbank vorhanden) das Pseudonym angezeigt, ansonsten der normale Benutzername.
Um z.B. in bei den Topics die Pseudonyme statt der Benutzernamen anzuzeigen, muss die Datei viewtopic.php angepasst werden:
.. an anderen Stellen das gleiche, einfach nach "get_username_string" suchen - da dann username mit pseudo und full mit fullpseudo ersetzen.
In der phpbb_users - Tabelle 'ne neue Spalte zufügen, bspw. user_pseudo, als varchar(255) oder sowas, default null.
In includes/functions_users.php eine neue Funktion einfuegen:
Code: Alles auswählen
/**
* Returns userpseudonym if available, else the submitted username
*/
function user_getpseudo($username) {
global $db;
$sql = 'select user_pseudo from ' . USERS_TABLE . ' where username_clean = \''.strtolower($username).'\'';
$result = $db->sql_query($sql);
if($row = $db->sql_fetchrow($result)) $userreturn = $row['user_pseudo'];
else {
$userreturn = $username;
}
$db->sql_freeresult($result);
return $userreturn;
}
Zentral kann man dass in der Funktion get_username_stirng in der Datei functions_content.php umsetzen:
Code: Alles auswählen
switch ($mode)
{
case 'profile':
return $profile_url;
break;
case 'username':
return $username;
break;
case 'colour':
return $username_colour;
break;
case 'pseudo':
return user_getpseudo($username);
break;
case 'no_profile':
case 'full':
default:
$tpl = '';
if (!$profile_url && !$username_colour)
{
$tpl = '{USERNAME}';
}
else if (!$profile_url && $username_colour)
{
$tpl = '<span style="color: {USERNAME_COLOUR};" class="username-coloured">{USERNAME}</span>';
}
else if ($profile_url && !$username_colour)
{
$tpl = '<a href="{PROFILE_URL}">{USERNAME}</a>';
}
else if ($profile_url && $username_colour)
{
$tpl = '<a href="{PROFILE_URL}" style="color: {USERNAME_COLOUR};" class="username-coloured">{USERNAME}</a>';
}
if($mode=='fullpseudo') {
$username = user_getpseudo($username);
}
return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl);
break;
Um z.B. in bei den Topics die Pseudonyme statt der Benutzernamen anzuzeigen, muss die Datei viewtopic.php angepasst werden:
Code: Alles auswählen
$postrow = array(
'POST_AUTHOR_FULL' => get_username_string('fullpseudo', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR_COLOUR' => get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR' => get_username_string('pseudo', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'U_POST_AUTHOR' => get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),