Skip to content

adanmartin80/Razor.Role

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Razor.Role

Basicamente es una prueba dew concepto:

  • Recibe en el controlador, a traves de la querystring (?role=algo) una variable que identifica el nombre del supuesto rol.
  • Crea en el ViewBag una variable llamada Role con dicho valor, que es pasada al motor de vistas.
  • El tipo base de vistas (el nucleo de la prueba de concepto) se condiciona con ésta variable y, si existe, busca en todos los elementos del DOM con atributo role y los elimina, de manera que actualmente la variable Role no define quien tiene permisos, si no quien no los tiene:
<p role="admin">algo que solo puede ver el administrador.</p>

Hay que cambiar en la configuración de las vistas el tipo de vistas base que se usará. en nuestro caso, al sobreescribir la funcionalidad basica de renderizado de la pagina y crear la clase WebViewPageCustom tendremos el siguiente codigo en la configuración Razor.Role/Razor.Role.Web/Views/Web.config.

<pages pageBaseType="Razor.Role.Web.WebViewPageCustom, Razor.Role.Web, Version=1.0.0.0, culture=neutral,  PublicKeyToken=82178810-6aa3-48b8-b865-9a4ca1e714fb">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="Razor.Role.Web" />
      </namespaces>
    </pages>

Tenemos los namespaces basicos que usara la pagina, si se necesitan crear helpers o acceder a clases de configuracion estaticas globales se añadirá aquí. Si configuramos el sistema de roles por clase statica global y usamos el sistema actual de ViewBag no es necesario añadir ningún namespace.

La solución usa MSHTML (vuelta a los COM) para poder navegar entre los nodos del DOM, manipularlos y renderizar en consecuencia. Aunque en éste proyecto no se usa, existe un paquete en Nuget de ésta misma libreria, no oficial.

Nota:

  • Esto solo es una prueba de concepto, es posible que se extienda para crear nueva funcionalidad o que muera en éste estado.
  • Se ha seguido la documentación de Microsoft sobre MSHTML para alcanzar el objetivo.
  • No se ha realizado ninguna prueba ni medición del rendimiento, no obstante, en el testeo, la plantilla por defecto del proyecto no aparenta ser afectada en tiempos de carga.

About

Gestion de roles en Razor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published