• Resuelto oscarm2

    (@oscarm2)


    Hola.

    Necesito ayuda para saber si hay algún plugin (de pago o no) que permita el registro de usuarios por DNI, aparte de por email. El objetivo es que el usuario, al registrarse, ponga su DNI, y éste sea único, para que no se pueda volver a registrar otro usuario con el mismo DNI.
    Y que siga manteniendo el email como obligatorio y único, como siempre.

    ¿Conocéis algún plugin que haga eso?

    ¡Gracias!

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador jose64

    (@jose64)

    Hola.

    El plugin Ultimate Member – User Profile, Registration & Membership Plugin te permite la verificación de campos, tienes que crear un campo numérico y en la opción Validar seleccionar Valor único de clave meta.

    Por supuesto, tienes que generar todo el formulario y usarlo como tu formulario de registro.

    Realmente no es una medida efectiva puesto que si un usuario se quiere registrar varias veces con inventarse el DNI lo tiene resuelto. Por eso valorando la efectividad que puede tener contra el añadir un plugin más, solo para eso te diría que lo omitieras, aparte de que no creo que legalmente y basándonos en la proporcionalidad de las medidas se justifique el pedir un dato personal como el DNI para limitar un acceso que no genera perjuicios.

    Coméntanos cualquier detalle que quede pendiente y, por favor, recuerda cerrar el debate marcándolo como resuelto cuando así lo consideres, de esta forma nos ayudas a mantener el foro al día.

    Iniciador del debate oscarm2

    (@oscarm2)

    Perdona la tardanza.
    Probé el plugin que me comentaste y funciona, era lo que necesitaba.

    ¡Muchas gracias!

    Hola,
    Gracias por la respuesta, quería comentar que instalé el plugin indicado y vi que soportaba validaciones propias con las que validar el DNI.

    La documentación está aquí:
    https://docs.ultimatemember.com/article/94-apply-custom-validation-to-a-field

    De todas formas para ir al grano diré lo que hice en el plugin:
    -Editar el formulario por defecto de registro
    -Añadir un campo DNI personalizado con lo siguiente:
    Validar: Validación personalizada
    Acción personalizada: Ponemos por ejemplo: dni

    (Esto llamará a un hook llamado um_custom_field_validation_dni creado por código)

    Seguidamente nos dirigimos a la carpeta wp-content/themes/<tema usado> y editamos el fichero functions.php, y al final del archivo añadimos lo siguiente:

    /**
     * Validar campo DNI
     * @param string $key
     * @param attay  $array
     * @param array  $args
     */
    function um_custom_validate_dni($key, $array, $args){
      $letra = substr($args[$key], -1);
      $numeros = substr($args[$key], 0, -1);
      if ( isset( $args[$key]) && substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros%23, 1) == $letra && strlen($letra) == 1 && strlen ($numeros) == 8 ){
        //UM()->form()->add_error( $key, __( 'DNI VALIDO.', 'ultimate-member' ) );
      }else{
        UM()->form()->add_error( $key, __( 'DNI INCORRECTO, utilice formato: Ocho números y letra mayúscula.', 'ultimate-member' ) );
      }
    }
    add_action( 'um_custom_field_validation_dni', 'um_custom_validate_dni', 30, 3 );

    Con esto, cuando insertemos un nuevo usuario, si el DNI no es válido no dejará registrar al usuario e informará de ello. He dejado el comentario si queréis hacer pruebas. Básicamente, si llama a add_error, muestra el error y no deja validar el formulario. Si no hay nada (o está comentado), continúa.

    Un saludo

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘¿Registro de usuarios por DNI?’ está cerrado a nuevas respuestas.