La primer solucion fue
bastante algo chapucera, consiste en crear un campo en la tabla tblusuarios, donde se especifique el status del usuario; pense en un valor booleano de 0 y 1, donde 0 significa que no esta habilitado para participar en el chat.
El asunto es que debía estarse verificando constantemente este valor, y en caso de que fuera cambiado, a 0, no permitir al usuario estar en el chat. (o sea redirecionarlo a un frame especial, donde se especifique que ha sido expulsado);
Para no tener que estar verificando este valor en forma independiente, hay que ver donde meter dicha verificacion.
Aprovechando lo que ya hay, lo primero que pense fue en el hilo interval que ejecuta la funcion recibir, la cual se ejecuta cada cierto tiempo.
Ahora trabajo en una segunda version de la solucion, algo mas "correcto", y ademas añadir las - sigioentes consideraciones.
- El chat no soporta usuarios anonimos, todos deben registrarse , y por ende se debe crear un metodo registrarUser() con todas las comprobaciones correspondientes, ademas de un evento onRegistro, que devuelva el estatus (exito) de la operacion registro.
- Posibilidad de enviar un mail de comprobacion al usuario, para darse de alta, depues de su registro
- Crear un método expulsar que redireccione de frame la ventana del usuario expulsado y no permita su participacion en la conversacion
- Crear un metodo banear() que realice ajustes para que no permita la posibilidad del usuario reingresar o registrarse de nuevo, puede ser una combinacion direcion IP + shared object, para la comprobacion
- Al expulsar a un usuario, añadir un mensaje a la conversacion que tal usuario ha sido expulsado
- Reordenar la lista de usuarios en la sala
- Tener la posibilidad de reemplazar la conversacion del usuario expulsado, o inclcuso borrarla, esto en tiempo de ejecucion.
- Crear un metodo para obtener las ips de los usuarios baneados, y aplicarla como comprobacion en caso de intento de reingreso o nuevo registro. (podría ser conjunta a el metodo banear)
- Añadir una respuesta a la funcion login, para denotar si un usuario esta en status "baneado" y por ende no permitirle el acceso
- Creacion de una ventana de Admin para el Chat, en el cual el Administrador tendria acceso a todos estos servicios, dicha ventana de conversacion seria distinta a la del usuario normal. y solo los usuarios con privilegios administrativos , podrian entrar ahi.
Bueno, para hacer todo esto, hay que modificar la tabla usuarios (e incluso el clabserver), yo pense en algo así:
(Le estoy metiendo varios campos que almacenan algunas estadisticas)
Campos actuales
IDUsuario // se supondria que al no aceptar a un usuario anonimo este campo solo tendria el valor para usuario registrado
Nick //nick del usuario
Password //contraseña de usuario , encripada com md5
Email //correo del usuario
Campos anexados
id // id unico de usuario (En duda)
privilegios //Si es normal o administrativo, booleano
ingresos // numero de ingresos al chat
status // Estatus para saber si un usuario esta expulsado y baneado
ip // direccion ip del usuario (o incluiso direcciones ip)
Desde luego ya que todo esté terminado y funcionando lo pongo en Aportes