예제 #1
0
        public ActionResult RolePermission(int id, int[][] array)
        {
            var subject = RBACService.GetSubject(id, false, false, false);
            var roles   = RBACService.GetRoles();

            foreach (var roleId in array[0])
            {
                var found = roles.First(n => n.RoleId == roleId);
                if (found != null)
                {
                    subject.Add(found);
                }
            }
            var permissions = RBACService.GetPermissions();

            foreach (var permissionId in array[1])
            {
                var found = permissions.First(n => n.PermissionId == permissionId);
                if (found != null)
                {
                    subject.Add(found);
                }
            }
            RBACWriteService.SaveSubjectRoles(subject);
            RBACWriteService.SaveSubjectPermissions(subject);

            return(new JsonNetResult(new object()));
        }
예제 #2
0
        public ActionResult Group()
        {
            var roles = RBACService.GetRoles();
            var root  = TreeService.GetTree(Constants.ROLE_TREE_ID);

            ViewBag.Tree = new JsTreeBuilder <Role>(x => x.Name, x => x.RoleId)
                           .Build(root, roles)
                           .children;
            return(View());
        }
        public ActionResult Group()
        {
            var permissions = RBACService.GetPermissions();
            var root        = TreeService.GetTree(Constants.PERMISSION_TREE_ID);

            ViewBag.Tree = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                           .Build(root, permissions)
                           .children;
            return(View());
        }
예제 #4
0
        public ActionResult Index()
        {
            var subjects = RBACService.GetSubjects();
            var root     = TreeService.GetTree(Constants.SUBJECT_TREE_ID);
            var jsTree   = new JsTreeBuilder <Subject>(x => x.Name, x => x.SubjectId)
                           .Build(root, subjects);

            ViewBag.Tree = jsTree.children;
            return(View());
        }
예제 #5
0
        public ActionResult Map()
        {
            var roles    = RBACService.GetRoles(true);
            var treeRole = TreeService.GetTree(Constants.ROLE_TREE_ID);

            ViewBag.LeftTree = new JsTreeBuilder <Role>(x => x.Name, x => x.RoleId, x => x.Permissions.Select(n => n.PermissionId))
                               .Build(treeRole, roles)
                               .children;

            var permissions    = RBACService.GetPermissions();
            var treePermission = TreeService.GetTree(Constants.PERMISSION_TREE_ID);

            ViewBag.RightTree = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                                .Build(treePermission, permissions)
                                .children;

            return(View());
        }
예제 #6
0
        public ActionResult RolePermission(int id)
        {
            var subject = RBACService.GetSubject(id, true, false, true);

            ViewBag.Subject = subject;

            var roles      = RBACService.GetRoles();
            var treeRole   = TreeService.GetTree(Constants.ROLE_TREE_ID);
            var jsTreeRole = new JsTreeBuilder <Role>(x => x.Name, x => x.RoleId)
                             .Build(treeRole, roles);

            jsTreeRole.Each(x =>
            {
                if (x == jsTreeRole)
                {
                    return;
                }
                if (subject.HaveRole(x.data.content))
                {
                    x.state.selected = true;
                }
            });
            ViewBag.RoleTree = jsTreeRole.children;

            var permissions      = RBACService.GetPermissions();
            var treePermission   = TreeService.GetTree(Constants.PERMISSION_TREE_ID);
            var jsTreePermission = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                                   .Build(treePermission, permissions);

            jsTreePermission.Each(x =>
            {
                if (x == jsTreePermission)
                {
                    return;
                }
                if (subject.HaveDirectPermission(x.data.content))
                {
                    x.state.selected = true;
                }
            });
            ViewBag.PermissionTree = jsTreePermission.children;

            return(View());
        }
        public ActionResult Index()
        {
            var permissions = RBACService.GetPermissions();
            var root        = TreeService.GetTree(Constants.PERMISSION_TREE_ID);
            var jsTree      = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                              .Build(root, permissions);

            jsTree.Each(x =>
            {
                if (x == jsTree)
                {
                    return;
                }
                x.state.disabled = true;
            });

            ViewBag.Tree = jsTree.children;
            return(View());
        }
예제 #8
0
        public ActionResult Map([ModelBinder(typeof(JsonNetModelBinder))] IList <JsTreeNode> nodes)
        {
            var root        = new JsTreeParser().Parse(Constants.ROLE_TREE_ID, nodes);
            var roles       = RBACService.GetRoles();
            var permissions = RBACService.GetPermissions();

            root.Each(x =>
            {
                if (x.Elements != null)
                {
                    var role = roles.SingleOrDefault(n => n.RoleId == x.Id);
                    if (role != null)
                    {
                        var rolePermissions = permissions.Where(n => x.Elements.Any(m => m == n.PermissionId));
                        role.Add(rolePermissions);
                    }
                }
            });
            RBACWriteService.SaveRolePermissions(roles);
            return(new JsonNetResult(nodes));
        }
예제 #9
0
        public MyPrincipal(IIdentity identity)
        {
            myIdentity = identity as WindowsIdentity;

            for (int i = 0; i < myIdentity.Groups.Count; i++)
            {
                try
                {
                    List <Permission> permissionsForGroup = RBACService.GetPermissions(myIdentity.Groups[i].Value);

                    for (int j = 0; j < permissionsForGroup.Count; j++)
                    {
                        myPermissions.Add(permissionsForGroup[j]);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message.ToString());
                }
            }
        }
예제 #10
0
        public ActionResult Permission(int id)
        {
            var role = RBACService.GetRole(id, true);

            var permissions = RBACService.GetPermissions();
            var root        = TreeService.GetTree(Constants.PERMISSION_TREE_ID);
            var jsTree      = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                              .Build(root, permissions);

            jsTree.Each(x =>
            {
                if (x == jsTree)
                {
                    return;
                }
                x.state.disabled = true;
                if (role.HavePermission(x.data.content))
                {
                    x.state.selected = true;
                }
            });

            return(new JsonNetResult(jsTree.children));
        }
예제 #11
0
        public ActionResult DirectPermission(int id)
        {
            var subject     = RBACService.GetSubject(id, true, true, true);
            var permissions = RBACService.GetPermissions();

            var treePermission   = TreeService.GetTree(Constants.PERMISSION_TREE_ID);
            var jsTreePermission = new JsTreeBuilder <Permission>(x => x.Name, x => x.PermissionId)
                                   .Build(treePermission, permissions);

            jsTreePermission.Each(x =>
            {
                if (x == jsTreePermission)
                {
                    return;
                }
                x.state.disabled = true;
                if (subject.HaveDirectPermission(x.data.content))
                {
                    x.state.selected = true;
                }
            });

            return(new JsonNetResult(jsTreePermission.children));
        }
예제 #12
0
        public ActionResult Role(int id)
        {
            var subject = RBACService.GetSubject(id, true, false, false);
            var roles   = RBACService.GetRoles();

            var treeRole   = TreeService.GetTree(Constants.ROLE_TREE_ID);
            var jsTreeRole = new JsTreeBuilder <Role>(x => x.Name, x => x.RoleId)
                             .Build(treeRole, roles);

            jsTreeRole.Each(x =>
            {
                if (x == jsTreeRole)
                {
                    return;
                }
                x.state.disabled = true;
                if (subject.HaveRole(x.data.content))
                {
                    x.state.selected = true;
                }
            });

            return(new JsonNetResult(jsTreeRole.children));
        }