Eneboo - Documentación para desarrolladores
|
#include <FLAccessControl.h>
Métodos públicos | |
FLAccessControl () | |
virtual | ~FLAccessControl () |
QString | name () |
QString | user () |
QString | perm () |
void | setName (const QString &n) |
void | setUser (const QString &u) |
void | setPerm (const QString &p) |
void | clear () |
virtual QString | type () |
virtual void | set (QDomElement *e) |
virtual void | get (QDomDocument *d) |
virtual void | setAcos (const QStringList &acos) |
virtual QStringList | getAcos () |
virtual void | processObject (QObject *obj)=0 |
virtual void | setFromObject (QObject *obj)=0 |
Atributos protegidos | |
QString | name_ |
QString | user_ |
QString | perm_ |
QDict< QString > * | acosPerms_ |
Clase base para Controles de Acceso, tambin denominados Reglas de Control de Acceso.
Una regla de control de acceso se aplica a un usuario y a un objeto de alto nivel o contenedor (ventanas principales,tablas, etc..), que a su vez contendrn otros objetos (acciones, campos, etc..). La regla est definida por la siguiente informacin como cabecera de la misma, que la identifica unvocamente:
tipo ; nombre ; usuario ; permiso -------------------------------------------------------------------------------------------------- FLAccessControl::type ; FLAccessControl::name ; FLAccessControl::user ; FLAccessControl::perm
El tipo ser el del objeto de alto nivel, el nombre ser el del objeto, el usuario corresponder al nombre del usuario en la base de datos al que se le aplica la regla y permiso ser un identificador de texto que define el tipo de permiso que se atribuye al objeto para el usuario dado. Este permiso es general o global y se aplicar por defecto a todos los objetos hijos o que pertenezcan al objeto de alto nivel.
Al mismo tiempo una regla podr tener una lista de Objetos de Control de Acceso (denominados ACOs, Access Control Objects), a los que se les quiere aplicar un permiso distinto al general. Los ACOs sern objetos hijo o pertenecientes al objeto de alto nivel. Internamente la lista de ACOs est compuesta por tuplas de dos elementos; "nombre de objeto" y "permiso", el nombre de objeto ser el que tiene asignado dentro de la jerarqua de objetos pertenecientes al objeto de alto nivel y permiso ser el permiso para ese objeto y que sobreescribir al permiso general.
Los valores de la regla se podrn establecer a partir de un nodo DOM de un documento DOM/XML, mediante FLAccessControl::set . De forma recproca se podr obtener un nodo DOM con el contenido de la regla, a insertar en un documento DOM/XML, mediante FLAccessControl::get . La estructura general en XML del nodo DOM que representa una regla de control de acceso es la siguiente:
<[mainwindow,table,etc..] perm="XXX"> <name>XXX</name> <user>XXX</user> <aco perm="XXX">XXX</aco> .... <aco perm="XXX">XXX</aco> </[mainwindow,table,etc..]>
Por comodidad, tambin se proporciona el mtodo FLAccessControl::setAcos, que permite establecer la lista de ACOs de una regla directamente a partir de una lista de cadenas de texto.
Esta clase no est pensada para ser usada directamente, sino como base para clases derivadas que se encargan especficamente del procesamiento de objetos de alto nivel. Un ejemplo sera FLAccessControlMainWindow, que se encarga de control de acceso para objetos de alto nivel de tipo "mainwindow", es decir ventanas principales, como el selector de mdulos, o cada una de las ventanas principales de los mdulos.
FLAccessControl::FLAccessControl | ( | ) |
Constructor
FLAccessControl::~FLAccessControl | ( | ) | [virtual] |
Destructor
void FLAccessControl::clear | ( | ) |
Limpia la regla vacindola y liberando todos los recursos
void FLAccessControl::get | ( | QDomDocument * | d | ) | [virtual] |
A partir del contenido de la regla de control de acceso crea un nodo DOM que se insertar como hijo del primer nodo de un documento DOM/XML.
d | Documento DOM/XML donde se insertar el nodo construido a partir de la regla de control de acceso. |
QStringList FLAccessControl::getAcos | ( | ) | [virtual] |
Obtiene una lista de cadenas de texto correspondiente a la lista de ACOs establecida
El formato de esta lista es igual al descrito en FLAccessControl::setAcos p.e.: "pbAbrir", "r-", "lblTexto", "--", "tbBorrar", "rw",...
QString FLAccessControl::name | ( | ) | [inline] |
Obtiene el nombre del objeto de alto nivel.
QString FLAccessControl::perm | ( | ) | [inline] |
Obtiene el permiso general.
virtual void FLAccessControl::processObject | ( | QObject * | obj | ) | [pure virtual] |
Procesa un objeto dado aplicando la regla de control de acceso.
Este mtodo es virtual puro, y deber definirse en cada una de las clases derivadas que se encargan de control de acceso de un tipo de objeto especfico. Por lo tanto, qu se tiene que hacer y cmo se debe hacer con la informacin de la regla de control de acceso con respecto a un tipo de objeto de alto nivel concreto queda en el mbito de la clase derivada que se encarga de ese tipo de objeto.
obj | Puntero general al objeto a procesar. Debe ser o heredar de la clase QObject. |
Implementado en FLAccessControlMainWindow, FLAccessControlForm y FLAccessControlTable.
void FLAccessControl::set | ( | QDomElement * | e | ) | [virtual] |
Define la regla de control de acceso a partir de la informacin de un nodo DOM de un documento DOM/XML dado.
e | Elemento correspondiente al nodo DOM que se utilizar para definir la regla. |
void FLAccessControl::setAcos | ( | const QStringList & | acos | ) | [virtual] |
Establece la lista de ACOs a partir de una lista de cadenas de texto.
Esta lista de textos deber tener en sus componentes de orden par los nombres de los objetos,y en los componentes de orden impar el permiso a aplicar a ese objeto, p.e.: "pbAbrir", "r-", "lblTexto", "--", "tbBorrar", "rw",...
acos | Lista de cadenas de texto con los objetos y permisos. |
virtual void FLAccessControl::setFromObject | ( | QObject * | obj | ) | [pure virtual] |
Define la regla de control de acceso a partir de las propiedades de un objeto concreto.
Las clases derivadas para cada uno de los tipos de objetos deber implementar cmo se define la regla de control a partir de las propiedades del objeto especfico.
obj | Puntero general al objeto a procesar. Debe ser o heredar de la clase QObject. |
Implementado en FLAccessControlMainWindow, FLAccessControlForm y FLAccessControlTable.
void FLAccessControl::setName | ( | const QString & | n | ) | [inline] |
Establece el nombre del objeto de alto nivel.
n | Nombre del objeto. |
void FLAccessControl::setPerm | ( | const QString & | p | ) | [inline] |
Establece el permiso general.
p | Cadena de texto con el identificador del permiso. |
void FLAccessControl::setUser | ( | const QString & | u | ) | [inline] |
Establece el nombre del usuario de la base de datos.
u | Nombre (login) del usuario. |
QString FLAccessControl::type | ( | ) | [virtual] |
Devuelve una constante de texto que identifica el tipo.
Esta funcin deber ser reimplementada en las clases derivadas que se encargan del procesamiento de un tipo de objeto concreto y devolver el identificador pertinente.
Reimplementado en FLAccessControlMainWindow, FLAccessControlForm y FLAccessControlTable.
QString FLAccessControl::user | ( | ) | [inline] |
Obtiene el nombre del usuario de la base de datos.
QDict<QString>* FLAccessControl::acosPerms_ [protected] |
Diccionario de permisos especficos de los ACOs (Access Control Objects) hijos o pertenecientes al objeto de alto nivel. El diccionario almacena la correspondencia entre el nombre del ACO (utilizado como clave de bsqueda) y el permiso a aplicar.
QString FLAccessControl::name_ [protected] |
Almacena el nombre del objeto de alto nivel.
QString FLAccessControl::perm_ [protected] |
Almacena el permiso general de la regla de control de acceso.
QString FLAccessControl::user_ [protected] |
Almacena el nombre del usuario de la base de datos.