Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Peter Olle

    (@peterolle)

    Iniciador del debate Lidia

    (@lydiamunoz)

    Hola Peter! Ante todo muchas gracias por responder!

    He instalado el plugin, pero no es exactamente lo que yo quiero… Necesito algo para que no se pueda logar el mismo usuario más de una vez. Ya sea desde un mismo ordenador o desde diferentes… Lo he instalado y puedo logarme desde dos navegadores.

    Conoces algún plugin que lo haga?

    Ok, ya te entendí. Entonces crea el siguiente plugin.

    <?php
    /*
    Plugin name: Single user login
    Plugin URI:
    Description:
    Author: Ben May
    Author URI:
    Version: 0.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 );
    		}
    
    		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 )
    			{
    				wp_logout();
    				wp_redirect( wp_login_url() );
    				exit;
    			}
    		}
    		function wp_login( $user_login, $user )
    		{
    			update_user_meta( $user->ID, '_wp_single_user_hash', $this->session_id );
    			return;
    		}
    	}
    	new WPSingleUserLoggin();
    }

    Con eso te queda exactamente como quieres.

    Iniciador del debate Lidia

    (@lydiamunoz)

    Gracias! Está bien! pero no evita que alguien se logue con el mismo usuario si hay alguien logado. El segundo usuario se puede logar, y lo que hace es deslogar al primero. Que el primero se da cuenta que está deslogado cuando realiza alguna acción. Pero lo que necesitamos es que el segundo no se pueda logar si hay ya un primero logado.

    Mmmm. ¿Pero todos los usuarios tienen la misma contraseña? No entiendo para que se quiere conseguir eso.

    ¿Porque no tener cada usuario con su contraseña y ya?

    Iniciador del debate Lidia

    (@lydiamunoz)

    Sí, cada usuario tiene su clave independiente, no es la misma clave para todos. Lo que quiero conseguir es que un usuario no pueda iniciar sesión en dos ordenadores o navegadores distintos. No sólo eso, eso se consigue con tu código, también queremos evitar que el segundo pueda iniciar sesión si ya un primero lo ha hecho con ese mismo usuario. Ejemplo:

    Un usuario inicia sesión con el nombre de usuario juan

    Otro usuario intenta logarse con el mismo usuario: Juan

    No quiero que el segundo usuario pueda lograrse porque ya hay una sesión abierta con ese usuario (Juan)

    Tu código permite que el segundo se logue y es lo que quiero evitar.

    No se sí me estoy explicando bien!

    Muchas gracias!

    Entonces tienen el mismo nombre de usuario compartido con diferentes personas y solo uno de ellos, el primero en llegar, es el que puede iniciar sesión.

    De ser posible lo es, pero tienes que desarrollar el plugin a mano, por lo menos yo no conozco ninguno que haga eso, ya que no es el comportamiento natural de una cuenta de usuario.

    Saludos.

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘Evitar que un mismo usuario inicie sesión más de una vez’ está cerrado a nuevas respuestas.