Página principal | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia de la Clase Guardian

Clase que se encarga de la autentificación de usuarios y personajes. Más...

#include <Guardian.hpp>

Lista de todos los miembros.

Métodos públicos

 Guardian ()
 Constructor.
 ~Guardian ()
 Destructor.
bool Autentifica (const QString &nombre, const QString &clave)
 Verifica la clave del usuario que se pasa.
bool ValidaPersonaje (const QString &usuario, const QString &personaje)
 Comprueba si el usuario puede dirigir al personaje dado.

Métodos privados

bool CargaEntradas ()
 Carga el documento XML de usuarios a memoria.

Atributos privados

QHash< QString, Entrada * > usuarios
 Contenedor de todas las entradas de usuario.

Clases

struct  Entrada
 Clase que almacena una entrada de usuario. Más...


Descripción detallada

Clase que se encarga de la autentificación de usuarios y personajes.

Definición en la línea 38 del archivo Guardian.hpp.


Documentación del constructor y destructor

Guardian::Guardian  ) 
 

Constructor.

Definición en la línea 40 del archivo Guardian.cpp.

Hace referencia a CargaEntradas(), Log(), y usuarios.

00041 {
00042   if (!CargaEntradas())
00043     qFatal ("No se ha podido cargar el fichero de usuarios.");
00044 
00045   Log (5, "Fichero de usuarios cargado satisfactoriamente.\n");
00046   QString num_usuarios;
00047   num_usuarios.setNum (usuarios.count());
00048   Log (3, "Número actual de usuarios: " + num_usuarios + "\n");
00049 }

Guardian::~Guardian  ) 
 

Destructor.

Definición en la línea 52 del archivo Guardian.cpp.

Hace referencia a usuarios.

00053 {
00054   qDebug ("Destructor de Guardian");
00055 
00056   // Eliminamos todas las entradas de usuario
00057   foreach (Entrada *ent, usuarios)
00058     delete ent;
00059 }


Documentación de las funciones miembro

bool Guardian::Autentifica const QString &  nombre,
const QString &  clave
 

Verifica la clave del usuario que se pasa.

Devuelve:
true si la clave es correcta, o false si no lo es o si no existe el usuario.

Definición en la línea 66 del archivo Guardian.cpp.

Hace referencia a Guardian::Entrada::clave, y usuarios.

Referenciado por Mensajero::NuevaLinea().

00067 {
00068   Entrada *entrada = usuarios.value (nombre.toLower(), 0);
00069 
00070   if (entrada == 0)  // No existe el usuario
00071     return (false);
00072 
00073   if (entrada->clave != clave)
00074     return (false);
00075 
00076   return (true);
00077 }

bool Guardian::CargaEntradas  )  [private]
 

Carga el documento XML de usuarios a memoria.

Devuelve:
true si todo ha ido bien, o false si ha ocurrido algún error.

Definición en la línea 83 del archivo Guardian.cpp.

Hace referencia a Guardian::Entrada::clave, dir_datos, Guardian::Entrada::esadmin, Guardian::Entrada::personajes, y usuarios.

Referenciado por Guardian().

00084 {
00085   QFile fichero (dir_datos.filePath ("usuarios.xml"));
00086 
00087   if (!fichero.open (QIODevice::ReadOnly | QIODevice::Text))
00088   {
00089     // No se ha podido abrir el archivo
00090     qWarning ("\"%s\": %s", fichero.fileName().toLatin1().constData(),
00091               fichero.errorString().toLatin1().constData());
00092     return (false);
00093   }
00094 
00095   QDomDocument documento ("usuarios");
00096   QString dsc_error;  // Descripción del error
00097   int     lin_error, col_error;  // Línea y columna del error, respectivamente
00098 
00099   if (!documento.setContent (&fichero, &dsc_error, &lin_error, &col_error))
00100   {
00101     fichero.close();
00102 
00103     qWarning ("\"%s\" (%d, %d): %s", fichero.fileName().toLatin1().constData(),
00104               lin_error, col_error, dsc_error.toLatin1().constData());
00105     return (false);
00106   }
00107 
00108   Entrada     *entrada;
00109   QDomAttr     atributo;
00110   QDomElement  elemento = documento.documentElement();
00111   QDomNode     nodo     = elemento.firstChild();
00112 
00113   while (!nodo.isNull())
00114   {
00115     elemento = nodo.toElement();
00116     if (!elemento.isNull())
00117     {
00118       atributo = elemento.attributeNode ("nombre");
00119       entrada  = new Entrada;
00120       usuarios.insert (atributo.value().toLower(), entrada);
00121 
00122       atributo         = elemento.attributeNode ("clave");
00123       entrada->clave   = atributo.value();
00124       atributo         = elemento.attributeNode ("admin");
00125       entrada->esadmin = atributo.value() == "verdadero";
00126 
00127       // Obtenemos la lista de personajes del usuario
00128       QDomNode subnodo = elemento.firstChild();
00129       while (!subnodo.isNull())
00130       {
00131         elemento = subnodo.toElement();
00132         if (!elemento.isNull())
00133         {
00134           atributo = elemento.attributeNode ("nombre");
00135           entrada->personajes.append (atributo.value());
00136         }
00137         subnodo = subnodo.nextSibling();
00138       }
00139     }
00140     nodo = nodo.nextSibling();
00141   }
00142 
00143   fichero.close();
00144   return (true);
00145 }

bool Guardian::ValidaPersonaje const QString &  usuario,
const QString &  personaje
 

Comprueba si el usuario puede dirigir al personaje dado.

Devuelve:
true si el usuario puede dirigir al personaje, o false si no puede o no existe ese usuario.

Definición en la línea 152 del archivo Guardian.cpp.

Hace referencia a Guardian::Entrada::personajes, y usuarios.

Referenciado por Mensajero::NuevaLinea().

00154 {
00155   Entrada *entrada = usuarios.value (usuario.toLower(), 0);
00156 
00157   if (entrada == 0)  // No existe el usuario
00158     return (false);
00159 
00160   return (entrada->personajes.contains (personaje, Qt::CaseInsensitive));
00161 }


Documentación de los datos miembro

QHash<QString, Entrada *> Guardian::usuarios [private]
 

Contenedor de todas las entradas de usuario.

Definición en la línea 62 del archivo Guardian.hpp.

Referenciado por Autentifica(), CargaEntradas(), Guardian(), ValidaPersonaje(), y ~Guardian().


La documentación para esta clase fué generada a partir de los siguientes archivos:
Generado el Tue Nov 29 01:04:33 2005 para MUnDoCAAD MUD Engine por  doxygen 1.4.4