#include <Guardian.hpp>
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... | |
Definición en la línea 38 del archivo Guardian.hpp.
|
|
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 }
|
|
|
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 }
|
|
||||||||||||
|
Verifica la clave del usuario que se pasa.
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 }
|
|
|
Carga el documento XML de usuarios a memoria.
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 }
|
|
||||||||||||
|
Comprueba si el usuario puede dirigir al personaje dado.
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 }
|
|
|
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(). |
1.4.4