Class: Msip::Ability
- Inherits:
-
Object
- Object
- Msip::Ability
- Includes:
- CanCan::Ability
- Defined in:
- app/models/msip/ability.rb
Overview
Definición del control de acceso como lo requiere cancancan
Constant Summary collapse
- ROLADMIN =
1- ROLDIR =
ROLINV = 2
3- ROLOPERADOR =
ROLCOOR = 4
ROLANALI = 5
- ROLES =
[ ["Administrador", ROLADMIN], # 1 ["", 0], # 2 ["Directivo", ROLDIR], # 3 ["", 0], # 4 ["Operador", ROLOPERADOR], # 5 ["", 0], # 6 ]
- ROLES_CA =
[ "Crear copias de respaldo cifradas. " \ "Administrar usuarios. " \ "Administrar tablas básicas. ", "", # 2 "", # 3 "", # 4 "", # 5 "", # 6 "", # 7 ]
- BASICAS_PROPIAS =
[ ["Msip", "centropoblado"], ["Msip", "departamento"], ["Msip", "estadosol"], ["Msip", "etiqueta"], ["Msip", "etnia"], ["Msip", "fuenteprensa"], ["Msip", "grupo"], ["Msip", "municipio"], ["Msip", "oficina"], ["Msip", "pais"], ["Msip", "perfilorgsocial"], ["Msip", "sectororgsocial"], ["Msip", "tcentropoblado"], ["Msip", "tema"], ["Msip", "tdocumento"], ["Msip", "tipoorg"], ["Msip", "trelacion"], ["Msip", "trivalente"], ["Msip", "tsitio"], ["Msip", "ubicacionpre"], ["Msip", "vereda"], ]
- INISEC_TB =
{ msip_centropoblado: 1000000, msip_departamento: 10000, msip_municipio: 100000, msip_pais: 1000, msip_ubicacionpre: 10000000, msip_vereda: 1000000, }
- BASICAS_ID_NOAUTO =
[ ["Msip", "tcentropoblado"], ["Msip", "trelacion"], ]
- NOBASICAS_INDSEQID =
[ ["Msip", "anexo"], ["Msip", "centropoblado_histvigencia"], ["Msip", "departamento_histvigencia"], ["Msip", "municipio_histvigencia"], ["Msip", "pais_histvigencia"], ["Msip", "grupoper"], ["Msip", "persona"], ["Msip", "persona_trelacion"], ["Msip", "ubicacion"], ["", "usuario"], ]
- BASICAS_PRIO =
[ ["Msip", "tcentropoblado"], ["Msip", "pais"], ["Msip", "departamento"], ["Msip", "municipio"], ["Msip", "centropoblado"], ["Msip", "vereda"], ["Msip", "oficina"], ]
Instance Attribute Summary collapse
-
#BASICAS_ID_NOAUTO ⇒ Array<Array<String>>
List of basic tables whose ID is not autoincremental.
-
#BASICAS_PROPIAS ⇒ Array<Array<String>>
List of proprietary basic tables.
-
#INISEC_TB ⇒ Hash
Dictionary for initializing ID sequences of some basic tables.
-
#ROLADMIN ⇒ Integer
Role ID for Administrator.
-
#ROLDIR ⇒ Integer
Role ID for Director.
-
#ROLES ⇒ Array<Array<String, Integer>>
List of roles with their IDs.
-
#ROLES_CA ⇒ Array<String>
List of role capabilities/descriptions.
-
#ROLOPERADOR ⇒ Integer
Role ID for Operator/Analyst.
Class Method Summary collapse
-
.lista_modelos_persona ⇒ Array<Class>
Lista de modelos relacionados con persona.
-
.tb_clase(t) ⇒ Class
Recibe una tabla básica como pareja [Modulo, clase] y retorna clase completa Modulo::Clase.
-
.tb_modelo(t) ⇒ String
Recibe una tabla básica como pareja [Modulo, clase] y retorna nombre de tabla modulo_clase.
Instance Method Summary collapse
-
#basicas_id_noauto ⇒ Array<Array<String>>
Arreglo de tablas básicas cuyo ID no es autoincremental.
-
#inisec_tb ⇒ Object
Retorna diccionario con inicialización para secuencia de ids de algunas tablas básicas que comienzan en valores mayor a 100.
-
#initialize_msip(usuario = nil) ⇒ Object
Se definen habilidades con cancancan Util en motores y aplicaciones de prueba En aplicaciones es mejor escribir completo el modelo de autorización para facilitar su análisis y evitar cambios inesperados al actualizar motores.
-
#nobasicas_indice_seq_con_id ⇒ Array<Array<String>>
Tablas no básicas pero que tienen índice *_seq_id.
-
#tablasbasicas ⇒ Object
Retorna arreglo de tablas básicas No conviene usar variables de clas @@tablasbasicas Cuando varios motores heredan e inicializan, pues al cargar en modo eager puede evaluarse de último una clase que no se espera.
-
#tablasbasicas_prio ⇒ Object
Tablas básicas que deben volcarse primero –por ser requeridas por otras básicas.
Instance Attribute Details
#BASICAS_ID_NOAUTO ⇒ Array<Array<String>>
Returns List of basic tables whose ID is not autoincremental.
106 107 108 109 |
# File 'app/models/msip/ability.rb', line 106 BASICAS_ID_NOAUTO = [ ["Msip", "tcentropoblado"], ["Msip", "trelacion"], ] |
#BASICAS_PROPIAS ⇒ Array<Array<String>>
Returns List of proprietary basic tables.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/msip/ability.rb', line 48 BASICAS_PROPIAS = [ ["Msip", "centropoblado"], ["Msip", "departamento"], ["Msip", "estadosol"], ["Msip", "etiqueta"], ["Msip", "etnia"], ["Msip", "fuenteprensa"], ["Msip", "grupo"], ["Msip", "municipio"], ["Msip", "oficina"], ["Msip", "pais"], ["Msip", "perfilorgsocial"], ["Msip", "sectororgsocial"], ["Msip", "tcentropoblado"], ["Msip", "tema"], ["Msip", "tdocumento"], ["Msip", "tipoorg"], ["Msip", "trelacion"], ["Msip", "trivalente"], ["Msip", "tsitio"], ["Msip", "ubicacionpre"], ["Msip", "vereda"], ] |
#INISEC_TB ⇒ Hash
Returns Dictionary for initializing ID sequences of some basic tables.
74 75 76 77 78 79 80 81 |
# File 'app/models/msip/ability.rb', line 74 INISEC_TB = { msip_centropoblado: 1000000, msip_departamento: 10000, msip_municipio: 100000, msip_pais: 1000, msip_ubicacionpre: 10000000, msip_vereda: 1000000, } |
#ROLADMIN ⇒ Integer
Returns Role ID for Administrator.
10 |
# File 'app/models/msip/ability.rb', line 10 ROLADMIN = 1 |
#ROLDIR ⇒ Integer
Returns Role ID for Director.
14 |
# File 'app/models/msip/ability.rb', line 14 ROLDIR = 3 |
#ROLES ⇒ Array<Array<String, Integer>>
Returns List of roles with their IDs.
23 24 25 26 27 28 29 30 |
# File 'app/models/msip/ability.rb', line 23 ROLES = [ ["Administrador", ROLADMIN], # 1 ["", 0], # 2 ["Directivo", ROLDIR], # 3 ["", 0], # 4 ["Operador", ROLOPERADOR], # 5 ["", 0], # 6 ] |
#ROLES_CA ⇒ Array<String>
Returns List of role capabilities/descriptions.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/msip/ability.rb', line 34 ROLES_CA = [ "Crear copias de respaldo cifradas. " \ "Administrar usuarios. " \ "Administrar tablas básicas. ", "", # 2 "", # 3 "", # 4 "", # 5 "", # 6 "", # 7 ] |
#ROLOPERADOR ⇒ Integer
Returns Role ID for Operator/Analyst.
18 |
# File 'app/models/msip/ability.rb', line 18 ROLOPERADOR = ROLANALI = 5 |
Class Method Details
.lista_modelos_persona ⇒ Array<Class>
Returns Lista de modelos relacionados con persona.
178 179 180 181 182 183 184 |
# File 'app/models/msip/ability.rb', line 178 def self.lista_modelos_persona [ Msip::EtiquetaPersona, Msip::Persona, Msip::PersonaTrelacion, ] end |
.tb_clase(t) ⇒ Class
Recibe una tabla básica como pareja [Modulo, clase] y retorna clase completa Modulo::Clase
156 157 158 159 160 161 162 163 |
# File 'app/models/msip/ability.rb', line 156 def self.tb_clase(t) k = if t[0] != "" t[0] + "::" + t[1].camelize else t[1].camelize end k.constantize end |
.tb_modelo(t) ⇒ String
Recibe una tabla básica como pareja [Modulo, clase] y retorna nombre de tabla modulo_clase
169 170 171 172 173 174 175 |
# File 'app/models/msip/ability.rb', line 169 def self.tb_modelo(t) if t[0] != "" t[0].underscore.gsub(%r{/}, "_") + "_" + t[1] else t[1] end end |
Instance Method Details
#basicas_id_noauto ⇒ Array<Array<String>>
Arreglo de tablas básicas cuyo ID no es autoincremental.
113 114 115 |
# File 'app/models/msip/ability.rb', line 113 def basicas_id_noauto BASICAS_ID_NOAUTO end |
#inisec_tb ⇒ Object
Retorna diccionario con inicialización para secuencia de ids de algunas tablas básicas que comienzan en valores mayor a 100. Las tablas básicas que no esten indexadas comienzan secuencia de ids en 100 Retorna diccionario con inicialización para secuencia de ids de algunas tablas básicas que comienzan en valores mayor a 100. Las tablas básicas que no esten indexadas comienzan secuencia de ids en 100
91 92 93 |
# File 'app/models/msip/ability.rb', line 91 def inisec_tb INISEC_TB end |
#initialize_msip(usuario = nil) ⇒ Object
Se definen habilidades con cancancan Util en motores y aplicaciones de prueba En aplicaciones es mejor escribir completo el modelo de autorización para facilitar su análisis y evitar cambios inesperados al actualizar motores
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'app/models/msip/ability.rb', line 192 def initialize_msip(usuario = nil) # El primer argumento para can es la acción a la que se da permiso, # el segundo es el recurso sobre el que puede realizar la acción, # el tercero opcional es un diccionario de condiciones para filtrar # más (e.g :publicado => true). # # El primer argumento puede ser :manage para indicar toda acción, # o grupos de acciones como :read (incluye :show e :index), # :create, :update y :destroy. # # Si como segundo argumento usa :all se aplica a todo recurso, # o puede ser una clase. # # Detalles en el wiki de cancan: # https://github.com/ryanb/cancan/wiki/Defining-Abilities # Sin autenticación puede consultarse DIVIPOLA can(:read, [ Msip::Pais, Msip::Departamento, Msip::Municipio, Msip::Centropoblado, Msip::Vereda, ]) if !usuario || usuario.fechadeshabilitacion return end can(:contar, Msip::Ubicacion) can(:buscar, Msip::Ubicacion) can(:lista, Msip::Ubicacion) can(:descarga_anexo, Msip::Anexo) can(:mostrar_portada, Msip::Anexo) can(:abre_anexo, Msip::Anexo) can(:nuevo, Msip::Ubicacion) can(:read, Msip::Ubicacionpre) if usuario&.rol can(:read, Msip::Ability.lista_modelos_persona) case usuario.rol when Ability::ROLANALI can([:new, :create, :read, :update], Msip::Grupoper) can([:new, :create, :read, :update], Msip::) can([:new, :create, :read, :update], Msip::Ability.lista_modelos_persona) can([:new, :create, :read, :update], Msip::Solicitud) can(:read, Msip::Ubicacion) can(:new, Msip::Ubicacion) can([:update, :create, :destroy], Msip::Ubicacion) can([:new, :index, :create, :show], ::Usuario, rol: 5) can([:show, :destroy], ::Usuario, nusuario: usuario.nusuario) when Ability::ROLADMIN can(:manage, Msip::Bitacora) can(:manage, Msip::Grupoper) can(:manage, Msip::) can(:manage, Msip::Ability.lista_modelos_persona) can(:manage, Msip::Respaldo7z) can(:manage, Msip::Solicitud) can(:manage, Msip::Tema) can(:manage, Msip::Ubicacion) can(:manage, Msip::Ubicacionpre) can(:manage, ::Usuario) can(:manage, :tablasbasicas) tablasbasicas.each do |t| c = Ability.tb_clase(t) can(:manage, c) end end end end |
#nobasicas_indice_seq_con_id ⇒ Array<Array<String>>
Tablas no básicas pero que tienen índice *_seq_id
132 133 134 |
# File 'app/models/msip/ability.rb', line 132 def nobasicas_indice_seq_con_id NOBASICAS_INDSEQID end |
#tablasbasicas ⇒ Object
Retorna arreglo de tablas básicas No conviene usar variables de clas @@tablasbasicas Cuando varios motores heredan e inicializan, pues al cargar en modo eager puede evaluarse de último una clase que no se espera.
100 101 102 |
# File 'app/models/msip/ability.rb', line 100 def tablasbasicas BASICAS_PROPIAS end |
#tablasbasicas_prio ⇒ Object
Tablas básicas que deben volcarse primero –por ser requeridas por otras básicas
148 149 150 |
# File 'app/models/msip/ability.rb', line 148 def tablasbasicas_prio BASICAS_PRIO end |