/// <summary> /// sobrecarrega AuthorizeCore e diz se o usuário pode acessar ou não /// </summary> /// <param name="httpContext">HttpContextBase - contexto da chamada</param> /// <returns>bool - true se o usuário estiver autorizado</returns> protected override bool AuthorizeCore(HttpContextBase httpContext) { if ((httpContext.Handler != null) && (httpContext.Handler is MvcHandler)) { bool podeAcessar = false; using (TPAContext db = new TPAContext()) { ControleAcesso c = new ControleAcesso(db); try { var routeData = ((MvcHandler)httpContext.Handler).RequestContext.RouteData; string actionName = routeData.Values["action"].ToString(); string controllerName = routeData.Values["controller"].ToString(); podeAcessar = c.PodeAcessar(controllerName, actionName); } catch (Exception err) { LogServices.LogarException(err); } } return(podeAcessar); } else { return(base.AuthorizeCore(httpContext)); } }
/// <summary> /// helper estático para verificar nas páginas cshtml se um usuário tem acesso ao recurso especificado /// </summary> /// <param name="nomePermissao">string - nome do recurso/permissão</param> /// <returns>bool - true se o usuário no contexto tem acesso, false caso contrário</returns> public static bool TemAcesso(string nomePermissao) { using (TPAContext db = new TPAContext()) { ControleAcesso ctrl = new ControleAcesso(db); return(ctrl.PodeAcessar(nomePermissao)); } }
/// <summary> /// helper estático para verificar nas páginas cshtml se um usuário tem acesso ao controller / action especificados /// </summary> /// <param name="controllerName">string - nome do controller</param> /// <param name="actionName">string - nome da ação</param> /// <returns>bool - true se o usuário no contexto tem acesso, false caso contrário</returns> public static bool TemAcesso(string controllerName, string actionName) { using (TPAContext db = new TPAContext()) { ControleAcesso ctrl = new ControleAcesso(db); return(ctrl.PodeAcessar(controllerName, actionName)); } }
/// <summary> /// se o usuário logado tem acesso ao recurso, gera um item de menu usando um list item html. Retorna string vazia caso contrário. /// </summary> /// <param name="html">HtmlHelper - o html helper do Razor</param> /// <param name="texto">string - o texto do menu</param> /// <param name="acao">string - a ação a ser verificada</param> /// <param name="controller">string - o controller a ser verificado</param> /// <returns>HtmlString - Um item de menu em html</returns> public static HtmlString MenuItemLiSeguro(this HtmlHelper html, string texto, string acao, string controller) { if (ControleAcesso.TemAcesso(controller, acao)) { return(new HtmlString(string.Format("<li>{0}</li>", LinkExtensions.ActionLink(html, texto, acao, controller)))); } return(new HtmlString("")); }