Permitir una sola sesión por usuario en WordPress

seguridad_wordpress

Si tienes una plataforma de membresía y no deseas que un mismo usuario sea compartido por varios para entrar a la información a la vez, puedes evitar las sesiones múltiples con este plugin que he retocado de Ben May. La versión de Ben está muy bien, pero le he metido algunas mejoras para hacerlo más efectivo y es el que os comparto por aquí :). Cuando un usuario está logueado y otro usuario intenta loguearse correctamente con esa cuenta, expulsa al que estaba conectado y además no deja entrar al segundo que puso correctamente el login ¿Qué os parece?

 <?php
/*
Plugin name: WP Single user login
Plugin URI: http://www.nicolasmarin.com/plugin-sola-sesion-usuario-wordpress
Description: Avoid multiple session WordPress
Author: Ben May and Nicolas Marin Torres
Version: 1
*/

if( !class_exists( ‘WPSingleUserLoggin’ ) )
{
class WPSingleUserLoggin
{
private $session_id;

function __construct()
{
if ( ! session_id() )
session_start();

$this->session_id = session_id();

add_action( ‘init’, array( $this, ‘init’ ) );
add_action( ‘wp_login’, array( $this, ‘wp_login’ ), 10, 2 );
add_action( ‘wp_logout’, array( $this, ‘wp_logout’ ));
}

function init()
{
if( ! is_user_logged_in() )
return;

$stored_sess_id = get_user_meta( get_current_user_id(), ‘_wp_single_user_hash’, true );

if( $stored_sess_id != $this->session_id && $stored_sess_id != ‘NULL’ )
{
wp_logout();
wp_redirect( wp_login_url() );
exit;
}
}
function wp_login( $user_login, $user )
{
$stored_sess_id = get_user_meta( $user->ID, ‘_wp_single_user_hash’, true );

if( $stored_sess_id != $this->session_id && $stored_sess_id != ‘NULL’ )
{
wp_logout();
wp_redirect( wp_login_url() );
}

update_user_meta( $user->ID, ‘_wp_single_user_hash’, $this->session_id );
return;
}

function wp_logout()
{
if( ! is_user_logged_in() )
return;

update_user_meta( get_current_user_id(), ‘_wp_single_user_hash’, ‘NULL’ );
}
}
new WPSingleUserLoggin();
}

Puedes descargar el fichero y subirlo directamente a tu carpeta plugins desde:

[sociallocker]Mega[/sociallocker]

Si veis alguna posibilidad de mejorarlo, comentarlo!!

You may also like...

  • Tungsten

    Que bueno Nico! Lo probare hacia tiempo que buscaba algo así! Muchas gracias

  • Jesus Rivera

    ya lo instale pero me sigo conectando con 2 usuarios simultaneos

    Funciona en wordpress 4.1

  • DarwinC

    Hola, al parecer funciona para la misma ip. Cuando te conectas de diferentes ip o pc no funciona. ¿Que se puede hacer en ese caso?

  • L Omar Pacheco Garcia

    la pregunta por cuando tiempo es que quedan fueran, los bloquea y los saca pero cuanto tiempo, y otra pregunta, que pasa cuando alguien más lo intenta desde otra computadora, una vez que los bloquea que pasa, por que la verdad se ve super útil muy bueno la verdad, se agradece y muchísimo.