Created
April 22, 2012 16:51
-
-
Save acazsouza/2465256 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <summary> | |
/// Registra os Filters de Aplicação para injeção de dependência | |
/// </summary> | |
public class ApplicationFiltersModule : NinjectModule | |
{ | |
public override void Load() | |
{ | |
this.BindFilter<AuditoriaFilter>(FilterScope.Action, null).When(AuditoriaFilter.FilterCondition); | |
this.BindFilter<ValidatePermissionFilter>(FilterScope.First, null).When(ValidatePermissionFilter.FilterCondition); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <summary> | |
/// Registra a Action para Auditoria | |
/// </summary> | |
public class AuditoriaFilter : IActionFilter | |
{ | |
#region Fields | |
private readonly IRegistrarAuditoriaService _registrarAuditoriaService; | |
private readonly IUsuarioRepository _usuarioRepository; | |
private readonly ISiteRepository _siteRepository; | |
private readonly IModuloRepository _moduloRepository; | |
private readonly IAtividadeRepository _atividadeRepository; | |
#endregion | |
#region Constructors | |
public AuditoriaFilter(IRegistrarAuditoriaService registrarAuditoriaService, IUsuarioRepository usuarioRepository, ISiteRepository siteRepository, IModuloRepository moduloRepository, IAtividadeRepository atividadeRepository) | |
{ | |
this._registrarAuditoriaService = registrarAuditoriaService; | |
this._usuarioRepository = usuarioRepository; | |
this._siteRepository = siteRepository; | |
this._moduloRepository = moduloRepository; | |
this._atividadeRepository = atividadeRepository; | |
} | |
#endregion | |
/// <summary> | |
/// Quando o Action terminar de executar | |
/// </summary> | |
/// <param name="context">Contexto do Action quando termina de executar</param> | |
public void OnActionExecuted(ActionExecutedContext context) | |
{ | |
//Precisa pegar o usuário logado | |
Usuario usuario = _usuarioRepository.ObterPorId(1); | |
//Precisa pegar o site logado | |
Site site = _siteRepository.ObterPorId(1); | |
Modulo modulo = _moduloRepository.ObterPorId(1); | |
Atividade atividade = _atividadeRepository.ObterPorId(1); | |
_registrarAuditoriaService.Registrar(usuario, site, modulo, atividade); | |
} | |
public void OnActionExecuting(ActionExecutingContext filterContext) | |
{ | |
} | |
/// <summary> | |
/// Condição em que o filtro será executado | |
/// </summary> | |
/// <param name="controllerContext">Contexto do Controller disparado</param> | |
/// <param name="actionDescriptor">Descrição da Action disparada</param> | |
/// <returns>Verdadeiro se tiver permissão, falso caso contrário</returns> | |
public static bool FilterCondition(ControllerContext controllerContext, ActionDescriptor actionDescriptor) | |
{ | |
bool postHttpMethod = controllerContext.RequestContext.HttpContext.Request.HttpMethod.ToUpper() == "POST"; | |
string controllerName = actionDescriptor.ControllerDescriptor.ControllerName; | |
//Faz Auditoria de todos as Actions que contém POST de menos as do Controller de Login | |
if (postHttpMethod && controllerName != "Login") | |
return true; | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment