Localizamos el archivo
Actualmente esta guía está usando la versión 4.7.17 de Invision Community
- Se encuentra en: system/Login/Handler/OAuth2/Microsoft.php
Editar el archivo
Actualmente, este método simplemente devuelve el nombre de visualización proporcionado por Microsoft sin ningún procesamiento. Vamos a modificarlo para eliminar los espacios.
Busca el siguiente método en el archivo:
protected function authenticatedUserName( $accessToken )
{
if ( isset( $this->settings['real_name'] ) and $this->settings['real_name'] )
{
return $this->_userData( $accessToken )['displayName'];
}
return NULL;
}
Y reemplázalo con este código modificado:
protected function authenticatedUserName( $accessToken )
{
if ( isset( $this->settings['real_name'] ) and $this->settings['real_name'] )
{
$displayName = $this->_userData( $accessToken )['displayName'];
// Eliminar espacios del nombre de usuario
$username = str_replace(' ', '', $displayName);
// Asegurarse de que el nombre de usuario sea único
$username = $this->ensureUsernameIsUnique($username);
return $username;
}
return NULL;
}
// Añade este nuevo método para asegurar que el nombre de usuario sea único
protected function ensureUsernameIsUnique($username)
{
$i = 1;
$originalUsername = $username;
while (\IPS\Member::load($username, 'name')->member_id)
{
$username = $originalUsername . $i;
$i++;
}
return $username;
}
Este cambio hará lo siguiente:
- Elimina todos los espacios del nombre de visualización proporcionado por Microsoft
- Verifica si el nombre de usuario resultante ya existe en la base de datos
- Si el nombre de usuario ya existe, añade un número al final y verifica nuevamente hasta encontrar un nombre de usuario único
Recuerda que después de hacer estos cambios, deberás:
- Guardar el archivo
- Limpiar cualquier caché que pueda tener tu instalación de Invision Community
- Probar el proceso de inicio de sesión con Microsoft para asegurarte de que funciona como se espera
Ten en cuenta que esta modificación afectará a todos los nuevos registros y posiblemente a los inicios de sesión existentes si el nombre de usuario se actualiza cada vez