Normalización de URLs Sociales en devlog-ist/landing para Enlaces Consistentes
Introducción
En el proyecto devlog-ist/landing, nos encontramos con un problema común: las URLs de redes sociales en los perfiles de usuario no siempre se almacenan con el protocolo https:// incluido. Esto causaba que se interpretaran como rutas relativas, llevando a enlaces incorrectos. La solución implementada fue normalizar estas URLs para asegurar que siempre apunten al destino correcto.
El Problema
Cuando un usuario ingresaba una URL de perfil social sin el prefijo https:// (por ejemplo, github.com/usuario), la aplicación la interpretaba incorrectamente. En lugar de dirigir a https://example.com/usuario, intentaba navegar a tenant.dominio/github.com/usuario, lo cual resultaba en un error.
La Solución: Métodos de Acceso en el Modelo de Perfil
Para solucionar este problema, se agregaron métodos de acceso (accessors) en el modelo Profile. Estos métodos se encargan de inspeccionar cada campo de URL social y, si no contienen el protocolo https://, se lo agregan automáticamente. Esto asegura que todas las URLs almacenadas y utilizadas en la aplicación sean absolutas y correctas.
Ejemplo ilustrativo de cómo podría verse el accessor:
class Profile extends Model
{
public function getGithubUrlAttribute($value)
{
if ($value && ! Str::startsWith($value, 'https://')) {
return 'https://' . $value;
}
return $value;
}
// Métodos similares para otras URLs sociales (Twitter, LinkedIn, etc.)
}
Resultado
Con la implementación de estos accessors, todas las URLs de perfiles sociales, independientemente de cómo se hayan ingresado originalmente, ahora funcionan correctamente. Esto mejora la experiencia del usuario y asegura la consistencia de los enlaces en la plataforma.
Próximos Pasos
Considerar la implementación de validación del formato de URL en el momento de la inserción o actualización de los datos para prevenir este tipo de problemas en el futuro. También, se podría generalizar la lógica en un trait reutilizable para otros modelos que requieran normalización de URLs.