コード例 #1
0
        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)));
        }
コード例 #2
0
        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);
        }