3
* $Id: controladorpermisos.h 3521 2011-03-16 14:54:22Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
16
#include <api/icontroladorpermisos.h>
23
class EXTAPI ControladorPermisos: public IControladorPermisos {
26
typedef std::map<std::string, GNC::GCS::Permisos::EstadoPermiso> TipoMapaPermisos; //se indexan por id
27
typedef TipoMapaPermisos::iterator TipoIteradorMapaPermisos;
28
typedef std::map<std::string, TipoMapaPermisos*> TipoMapaPermisosNamespace; //se indexan por namespace
29
typedef TipoMapaPermisosNamespace::iterator TipoIteradorMapaPermisosNamespace;
31
typedef struct TipoDefinicionPermiso
33
std::string espacioNombres;
35
std::string descripcion;
36
std::string descripcionNamespace;
38
bool activoPorDefecto;
39
std::string valorPorDefecto;
43
TipoDefinicionPermiso ()
45
this->activoPorDefecto = true;
46
this->privado = false;
49
TipoDefinicionPermiso (const std::string& espacioNombres, const std::string& descripcionNamespace, const std::string& id, const std::string& descripcion, bool privado, const std::string& valorPorDefecto, bool activoPorDefecto)
51
this->espacioNombres = espacioNombres;
53
this->descripcion = descripcion;
54
this->descripcionNamespace = descripcionNamespace;
55
this->privado = privado;
56
this->activoPorDefecto = activoPorDefecto;
57
this->valorPorDefecto = valorPorDefecto;
60
GNC::GCS::Permisos::EstadoPermiso GenerarPermisoPorDefecto()
62
return GNC::GCS::Permisos::EstadoPermiso(valorPorDefecto, activoPorDefecto);
65
} TipoDefinicionPermiso;
67
typedef std::map<std::string, TipoDefinicionPermiso> TipoMapaDefiniciones;
69
static ControladorPermisos* Instance();
70
static void FreeInstance();
72
const TipoMapaDefiniciones& GetMapaDefiniciones();
73
TipoMapaPermisosNamespace GetPermisosFromXML(const std::string& xmlPermisos);
75
//region "Realizacion de la interfaz IControladorPermisos
77
/** Carga el fichero XML de permisos **/
78
virtual void CargarXMLPermisos(const std::string& xmlPermisos, bool privados = false);
80
/** Resetea el estado y valor de todos los permisos a sus valores por defecto **/
81
virtual void ResetearValoresPorDefecto();
83
/** Metodo recomendado para obtener permisos **/
84
virtual GNC::GCS::Permisos::EstadoPermiso* ObtenerPermiso(const std::string& stdNamespace, const std::string& idSujeto);
86
/** Metodo recomendado para comprobar permisos **/
87
virtual GNC::GCS::Permisos::EstadoPermiso Get(const std::string& stdNamespace, const std::string& idSujeto);
89
/** Anyade una nueva definicion de permiso al conjunto **/
90
virtual void AddDefinicionPermiso(const std::string& espacioNombres, const std::string& descripcionNamespace, const std::string& id, const std::string& descripcion, bool privado, const std::string& valorPorDefecto, bool activoPorDefecto);
95
ControladorPermisos();
96
~ControladorPermisos();
97
void LimpiarPermisos();
98
TipoMapaPermisos* GetMapaPermisos(const std::string& stdNamespace);
99
//bool GetPermitido(TipoMapaPermisos* pMapaPermisos, const std::string& idSujeto);
102
static ControladorPermisos* m_pInstance;
104
TipoMapaPermisosNamespace m_mapaPermisos;
105
TipoMapaDefiniciones m_mapaDefiniciones;