Blog
Como bloquear la cuenta de un cliente en Magento 2 desde base de datos.
- diciembre 11, 2023
- Publicado por: admin
- Categoría: Magento 2
En ocasiones es necesario que se tenga que bloquear a un cliente incómodo de nuestra tienda de Magento 2, si buscamos alguna opción de forma nativa en el administrador, nos daremos cuenta de que no existe tal una opción que pareciera muy lógica que debería existir, como bloquear a un cliente incómodo del sitio, la única opción que podemos encontrar es, Forzar su inicio de sesión que lo único que conseguiremos con esta opción es sacarlo de su sesión actual, pero una vez volviéndose a iniciar sesión podrá continuar como cliente, otra alternativa es eliminar la cuenta del cliente, pero esto lo que permitirá es una mala experiencia no solo del cliente si no del propio sitio dejando colgados los parámetros de una sesión inactiva, la mejor forma seria que pudiéramos bloquera la cuenta sin tener que eliminar el correo electrónico, ya que es el que nos permitirá rastrear la actividad de ese cliente.
Pero como lo comente al inicio esto no es posible de forma nativa así que realizaremos algo a nivel de base de datos no sería lo más viable, ya que alteraremos un parámetro de la cuenta del cliente de la tabla customer_entity, en esta tabla se registran los datos principales de un cliente y el parámetro clave de aquí será el campo “failures_num” este parámetro indica el número de intentos fallidos de un cliente, en el administrador de Magento se configura ese parámetro indicando cuál sería el número de intentos permitidos por un cliente, así que una vez superado ese valor hay otro elemento a tomar en cuenta y es “lock_expires”, ya que esta fecha indicara una vez el cliente alcance su número de intentos cuál será la fecha a desbloquear una cuenta que supero su límite de intentos, claro que so esto se realiza de forma nativa desde una actividad natural se calcularía en horas o días dependiendo del parámetro configurado en Magento, así que aquí estará la clave si este valor lo aumentamos a una fecha posterior digamos 1 o 2 años entonces la cuenta estaría bloqueada por ese periodo de tiempo.
La logia es muy básica, pero aplicada esta actualización a una cuenta de un cliente, lo que conseguiríamos es, no eliminar esa cuenta de usuario permitiéndonos mantener su histórico de la cuenta, nunca el cliente sabría que su cuenta fue bloqueada, ya que los mensajes que se le mostrarían serian naturales:
Al intentar iniciar sesión le indicará que los datos son incorrectos cuando en realidad el usuario ya se encuentra bloqueado.
Si el cliente intenta recuperar su contraseña pensando que la ha olvidado, el proceso será normal:
E incluso se le enviará el correo de restablecimiento de contraseña de forma normal.
Magento le permitirá actualizar la contraseña, pero de igual forma al intentar iniciar sesión el mensaje siempre será igual:
Ahora bien voy a mostrar cuál es el script que deberíamos ejecutar a nivel de la base de datos para bloquear el correo electrónico “testprueba@gmail.com”.
update customer_entity set failures_num = 10, lock_expires = "2023-01-01 00:00:00" where email = 'testprueba@gmail.com';