Sin categoría

Iniciar sesión con un usuario en WordPress usando código

En algún proyecto he tenido que preparar algún mecanismo para hacer un inicio de sesión o login sin usuario y contraseña, es decir de foma programática. ¿Por qué puede pasarte esto? Os planteo una serie de posibilidades que se me vienen ahora a la cabeza pero podrían ser todas las que necesitéis:

  • Una aplicación móvil en la que el usuario está autenticado y entonces accede a un visor web donde se muestra un sitio que es WordPress, sería un poco raro que tuviera que volver a loguearse al entrar al web view
  • Un listado de usuarios de una Intranet hecha a medida donde el responsable quiere ver algo como lo verían sus empleados y no conocer la contraseña de estos

Y bueno, hay plugins que resuelven este problema de forma parcial para casos concretos, por ejemplo estos dos:

Pero claro, ambos plugins internamente hacen esto que os voy a mostrar pero quizás estéis como en un caso en el que necesitáis gestionarlo a vuestra manera y no como estos plugins proponen.

Son solo tres líneas de código y debéis ejecutarlas antes de que haya un echo de PHP para evitar problemas porque las cookies de autenticación se envían en el header del paquete HTTP.

wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login, $user );

Una breve explicación de lo que hace:

  • En este ejemplo $user_id es el identificador de usuario que queremos loguear y $user es el objeto de este usuario
  • wp_set_current_user establece que el usuario actual sea el definido por el identificador $user_id y con el nombre de usuario definido por el segundo parámetro que es el nombre de usuario en cuestión
  • wp_set_auth_cookie estable la cookie de autenticación para el usuario identificado por su ID
  • El do_action final es por si hay algún plugin o tu tema que se une a ese hook para hacer cualquier acción cuando un usuario se loguea

Si os fijáis son pocas líneas de código pero son a la vez que potentes, peligrosas si se usan mal, así que cuidad dónde los integréis para evitar brechas de seguridad si no hacéis un uso correcta de ellas.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

RedSys para Contact Form 7 ahora muestra el justificante y el motivo del rechazo en la página de gracias

Ya está disponible la versión 2.2 de Contact Form 7 – Integración con RedSys, y…

hace % días

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Pagos recurrentes en Contact Form 7: suscripciones con RedSys, paso a paso

Hasta ahora, la integración de Contact Form 7 con RedSys solo sabía cobrar pagos únicos:…

hace % días

Cuotas personalizadas con RedSys

El pago fraccionado de RedSys para WooCommerce lleva un tiempo permitiendo dividir el precio de…

hace % días

Contact Form 7 – Integración con RedSys ya habla catalán, gallego y euskera

Ya está disponible la versión 1.24 de Contact Form 7 - Integración con RedSys, y…

hace % días

Calendario de pagos a medida en WooCommerce Subscriptions: cobra en las fechas que tú decidas

Hasta ahora, cobrar una suscripción en WooCommerce significaba aceptar una regla muy simple: eliges un…

hace % días