public static bool VerificaPermissao(HttpContext httpContext, FuncionalidadeEnum funcionalidade, AcaoEnum acao)
        {
            bool autorizado = false;

            if (httpContext.Session.IsAvailable)
            {
                var dados = httpContext.Session.GetString("Perfil");
                if (dados != null)
                {
                    var perfil = JsonConvert.DeserializeObject <PerfilViewModel>(dados);

                    if (perfil != null)
                    {
                        var funcionalide = perfil.Permissoes.SingleOrDefault(x => x.Funcionalidade == funcionalidade);

                        if (funcionalide != null)
                        {
                            autorizado = ((funcionalide.Acoes & (int)acao) == (int)acao);
                        }
                    }
                }
            }

            return(autorizado);
        }
 public AuthorizeActionFilter(FuncionalidadeEnum funcionalidade, AcaoEnum acao)
 {
     this.funcionalidade = funcionalidade;
     this.acao           = acao;
 }
 public static bool TemPermissao(this IHtmlHelper html, FuncionalidadeEnum funcionalidade, AcaoEnum acao)
 {
     return(VerificaPermissao(html.ViewContext.HttpContext, funcionalidade, acao));
 }
 public TemPermissaoAttribute(FuncionalidadeEnum item, AcaoEnum action)
     : base(typeof(AuthorizeActionFilter))
 {
     Arguments = new object[] { item, action };
 }