private static MvcHtmlString CreateButton(ManagedButton managedButton) { string events = string.Empty; if (managedButton.Events != null) { foreach (var rec in managedButton.Events) { events += String.Format("{0}={1};", rec.Key, rec.Value); } } return(new MvcHtmlString(String.Format("<input type=\"{0}\" value=\"{1}\" class=\"{2}\" {3} name={4}/>", managedButton.Type, managedButton.Value, managedButton.ClassName, events, managedButton.Name))); }
public static MvcHtmlString ManagedButton(this HtmlHelper helper, ManagedButton managedButton) { string controllerName = helper.ViewContext.Controller.ToString(); //helper.ViewContext.RouteData.Values["controller"] string actionName = (string)helper.ViewContext.RouteData.Values["action"]; MvcHtmlString result = new MvcHtmlString(""); List <Permission> permissions = null; Permission permission = null; permissions = SpongeSolutions.Core.Cache.CacheManager.GetInsert <List <Permission> >("Permission", () => SpongeSolutions.Core.Helpers.Serialization.SerializationHelper.DeSerialize <List <Permission> >(helper.ViewContext.HttpContext.Server.MapPath("permission1.xml"))); permission = (from rec in permissions where rec.ControllerInfo.Name.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) select rec).FirstOrDefault(); if (permission != null) { if (permission.ControllerInfo.Roles != null) { foreach (var role in permission.ControllerInfo.Roles) { //Verifica se o usuario em questão tem permissao na role ? if (Roles.IsUserInRole(role.Name) && permission.ControllerInfo.Controls != null) { //Buscando permissoes nos botoes vinculado ao controller foreach (var control in permission.ControllerInfo.Controls.Where( p => (p.ControlType == Enums.ControlType.Button || p.ControlType == Enums.ControlType.Submit) && p.Name.Equals(managedButton.Name, StringComparison.CurrentCultureIgnoreCase))) { if (control.PermissionType == Enums.PermissionType.Permissive) { return(CreateButton(managedButton)); //Criar botao conforme config } } } } } //Buscando permissoes nos botoes vinculado as actions if (permission.ActionInfo != null) { var action = permission.ActionInfo.Where(p => p.Name.Equals(actionName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault(); if (action != null) //Verificando as actions e botões { if (action.Roles != null) { foreach (var actionRole in action.Roles) { if (Roles.IsUserInRole(actionRole.Name) && action.Controls != null) { var control = action.Controls.Where( p => (p.ControlType == Enums.ControlType.Button || p.ControlType == Enums.ControlType.Submit) && p.Name.Equals(managedButton.Name, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault(); if (control != null) { if (control.PermissionType == Enums.PermissionType.Permissive) { return(CreateButton(managedButton)); //Criar botao conforme config } } } } } } } } else { result = CreateButton(managedButton); } return(result); }