/// <summary>
        /// 获取该应用的权限
        /// </summary>
        /// <param name="id"></param>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <param name="kw"></param>
        /// <returns></returns>
        public ActionResult MyPermissions(Guid id, int page = 1, int size = 10, string kw = "")
        {
            Expression <Func <Permission, bool> > where;
            Expression <Func <Permission, bool> > where2;

            if (!string.IsNullOrEmpty(kw))
            {
                where  = u => u.UserPermission.All(c => c.UserInfoId != id) && u.PermissionName.Contains(kw);
                where2 = u => u.UserPermission.Any(c => c.UserInfoId == id) && u.PermissionName.Contains(kw);
            }
            else
            {
                where  = u => u.UserPermission.All(c => c.UserInfoId != id);
                where2 = u => u.UserPermission.Any(c => c.UserInfoId == id);
            }
            List <PermissionOutputDto> not  = PermissionBll.LoadPageEntities <int, PermissionOutputDto>(page, size, out int total1, where, u => u.Id, false).ToList(); //不属于该应用
            List <Permission>          list = PermissionBll.LoadPageEntities(page, size, out int total2, where2, u => u.Id, false).ToList();                           //属于该应用
            List <PermissionOutputDto> my   = new List <PermissionOutputDto>();

            foreach (var p in list)
            {
                //判断有没有临时权限
                PermissionOutputDto per = p.Mapper <PermissionOutputDto>();
                per.HasPermission = p.UserPermission.Any(u => u.UserInfoId.Equals(id) && u.PermissionId == p.Id && u.HasPermission);
                my.Add(per);
            }
            return(PageResult(new { my, not }, size, total1 >= total2 ? total1 : total2));
        }
Ejemplo n.º 2
0
        private bool AddPermisions(SystemUser user, IEnumerable <int> menus)
        {
            if (user != null && user.Id > 0 && menus != null)
            {
                Func <bool> clear;

                var bll = new PermissionBll();
                if (bll.Exists($"SystemUserId={user.Id} AND IsDelete=0"))
                {
                    clear = () => bll.Delete($"SystemUserId={user.Id}");
                }
                else
                {
                    clear = () => true;
                }

                var permissions = menus.Select(menuId => new Permission {
                    MenuId = menuId, SystemUserId = user.Id
                });
                Func <bool> add = () =>
                {
                    bll.BulkInsert(permissions);
                    return(true);
                };

                return(bll.ExecuteTransation(clear, add));
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取权限分页数据
        /// </summary>
        /// <param name="appid">appid</param>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <returns></returns>
        public ActionResult PageData(string appid, int page = 1, int size = 10)
        {
            var where = string.IsNullOrEmpty(appid) ? (Expression <Func <Permission, bool> >)(g => true) : (g => g.ClientApp.Any(a => a.AppId.Equals(appid)));
            List <int> ids = PermissionBll.LoadPageEntitiesNoTracking <int, PermissionOutputDto>(page, size, out int total, where, a => a.Id, false).Select(g => g.Id).ToList();
            List <PermissionOutputDto> list = new List <PermissionOutputDto>();

            ids.ForEach(g =>
            {
                List <PermissionOutputDto> temp = PermissionBll.GetSelfAndChildrenByParentId(g).ToList();
                list.AddRange(temp);
            });
            return(PageResult(list.DistinctBy(u => u.Id), size, total));
        }
        /// <summary>
        /// 移除菜单权限
        /// </summary>
        /// <param name="id">菜单id</param>
        /// <param name="pid">权限id</param>
        /// <returns></returns>
        public ActionResult RemovePermission(int id, int pid)
        {
            Menu       menu       = MenuBll.GetById(id);
            Permission permission = PermissionBll.GetById(pid);

            if (menu != null && permission != null)
            {
                menu.Permission.Remove(permission);
                bool b = MenuBll.UpdateEntitySaved(menu);
                return(ResultData(null, b, b ? "权限分配成功!" : "权限分配失败!"));
            }

            return(ResultData(null, false, "未找到菜单或权限!"));
        }
        /// <summary>
        /// 移除权限
        /// </summary>
        /// <param name="id">功能id</param>
        /// <param name="pid">权限id</param>
        /// <returns></returns>
        public ActionResult RemovePermission(int id, int pid)
        {
            Control    control    = ControlBll.GetById(id);
            Permission permission = PermissionBll.GetById(pid);

            if (control != null && permission != null)
            {
                control.Permission.Remove(permission);
                bool b = ControlBll.UpdateEntitySaved(control);
                return(ResultData(null, b, b ? "权限移除成功!" : "权限移除失败!"));
            }

            return(ResultData(null, false, "未找到功能或权限!"));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取应用所有的权限
        /// </summary>
        /// <param name="appid"></param>
        /// <param name="kw"></param>
        /// <returns></returns>
        public ActionResult GetAll(string appid, string kw)
        {
            var where = string.IsNullOrEmpty(appid) ? (Expression <Func <Permission, bool> >)(g => true) : (g => g.ClientApp.Any(a => a.AppId.Equals(appid)));
            List <int> ids = PermissionBll.LoadEntitiesNoTracking <PermissionOutputDto>(where).Select(g => g.Id).ToList();
            List <PermissionOutputDto> list = new List <PermissionOutputDto>();

            ids.ForEach(g =>
            {
                var raw  = PermissionBll.GetSelfAndChildrenByParentId(g);
                var temp = string.IsNullOrEmpty(kw) ? raw.ToList() : raw.Where(u => u.PermissionName.Contains(kw)).ToList();
                list.AddRange(temp);
            });
            return(ResultData(list.DistinctBy(u => u.Id)));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 移除权限
        /// </summary>
        /// <param name="id">角色id</param>
        /// <param name="pids">权限id集合</param>
        /// <returns></returns>
        public ActionResult RemovePermissions(int id, string pids)
        {
            string[] ids  = pids.Split(',');
            Role     role = RoleBll.GetById(id);

            if (role is null)
            {
                return(ResultData(null, false, "未找到相应的角色信息!"));
            }

            List <Permission> permissions = PermissionBll.LoadEntities(p => ids.Contains(p.Id.ToString())).ToList();

            permissions.ForEach(p => role.Permission.Remove(p));
            bool b = RoleBll.UpdateEntitySaved(role);

            return(ResultData(null, b, b ? "角色配置完成!" : "角色配置失败!"));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 移除角色
        /// </summary>
        /// <param name="id">权限id</param>
        /// <param name="rids">角色id集合</param>
        /// <returns></returns>
        public ActionResult RemoveRoles(int id, string rids)
        {
            string[]   ids        = rids.Split(',');
            Permission permission = PermissionBll.GetById(id);

            if (permission is null)
            {
                return(ResultData(null, false, "未找到相应的权限信息!"));
            }

            List <Role> apps = RoleBll.LoadEntities(r => ids.Contains(r.Id.ToString())).ToList();

            apps.ForEach(r => permission.Role.Remove(r));
            bool b = PermissionBll.UpdateEntitySaved(permission);

            return(ResultData(null, b, b ? "权限配置完成!" : "权限配置失败!"));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 移除客户端子系统应用
        /// </summary>
        /// <param name="id">权限id</param>
        /// <param name="aids">应用id集合</param>
        /// <returns></returns>
        public ActionResult RemoveApps(int id, string aids)
        {
            string[]   ids        = aids.Split(',');
            Permission permission = PermissionBll.GetById(id);

            if (permission is null)
            {
                return(ResultData(null, false, "未找到相应的权限信息!"));
            }

            List <ClientApp> apps = ClientAppBll.LoadEntities(a => ids.Contains(a.Id.ToString())).ToList();

            apps.ForEach(a => permission.ClientApp.Remove(a));
            bool b = PermissionBll.UpdateEntitySaved(permission);

            return(ResultData(null, b, b ? "权限配置完成!" : "权限配置失败!"));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 移除菜单
        /// </summary>
        /// <param name="id">权限id</param>
        /// <param name="mids">菜单id集合</param>
        /// <returns></returns>
        public ActionResult RemoveMenus(int id, string mids)
        {
            string[]   ids        = mids.Split(',');
            Permission permission = PermissionBll.GetById(id);

            if (permission is null)
            {
                return(ResultData(null, false, "未找到相应的权限信息!"));
            }

            List <Menu> menus = MenuBll.LoadEntities(m => ids.Contains(m.Id.ToString())).ToList();

            menus.ForEach(m => permission.Menu.Remove(m));
            bool b = PermissionBll.UpdateEntitySaved(permission);

            return(ResultData(null, b, b ? "权限配置完成!" : "权限配置失败!"));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 移除控制功能
        /// </summary>
        /// <param name="id">权限id</param>
        /// <param name="cids">控制器id集合</param>
        /// <returns></returns>
        public ActionResult RemoveControls(int id, string cids)
        {
            string[]   ids        = cids.Split(',');
            Permission permission = PermissionBll.GetById(id);

            if (permission is null)
            {
                return(ResultData(null, false, "未找到相应的权限信息!"));
            }

            List <Control> controls = ControlBll.LoadEntities(c => ids.Contains(c.Id.ToString())).ToList();

            controls.ForEach(c => permission.Controls.Remove(c));
            bool b = PermissionBll.UpdateEntitySaved(permission);

            return(ResultData(null, b, b ? "权限配置完成!" : "权限配置失败!"));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 从应用移除权限
        /// </summary>
        /// <param name="id"></param>
        /// <param name="pids"></param>
        /// <returns></returns>
        public ActionResult RemovePermissions(int id, string pids)
        {
            string[]  ids = pids.Split(',');
            ClientApp app = ClientAppBll.GetById(id);

            if (app is null)
            {
                return(ResultData(null, false, "未找到应用!"));
            }

            List <Permission> permissions = PermissionBll.LoadEntities(u => ids.Contains(u.Id.ToString())).ToList();

            permissions.ForEach(u => { app.Permissions.Remove(u); });
            bool b = ClientAppBll.UpdateEntitySaved(app);

            return(ResultData(null, b, b ? "移除权限成功!" : "移除权限失败!"));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 为用户分配临时权限
        /// </summary>
        /// <param name="id">权限id</param>
        /// <param name="uids">用户id集合</param>
        /// <returns></returns>
        public ActionResult AddUsers(int id, string uids)
        {
            string[]   ids        = uids.Split(',');
            Permission permission = PermissionBll.GetById(id);

            if (permission is null)
            {
                return(ResultData(null, false, "未找到相应的权限信息!"));
            }

            List <UserInfo> users = UserInfoBll.LoadEntities(u => ids.Contains(u.Id.ToString())).ToList();

            users.ForEach(u => { UserPermissionBll.AddEntity(new UserPermission {
                    Permission = permission, HasPermission = true, PermissionId = permission.Id, UserInfo = u, UserInfoId = u.Id
                }); });
            UserPermissionBll.BulkSaveChanges();
            return(ResultData(null, true, "权限配置完成!"));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 获取权限详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Details(int id)
        {
            Permission permission = PermissionBll.GetById(id);

            if (permission != null)
            {
                (IQueryable <ClientApp>, List <Role>, List <Permission>)details = PermissionBll.Details(permission);
                return(ResultData(new
                {
                    result = permission.Mapper <PermissionOutputDto>(),
                    apps = details.Item1.Mapper <List <ClientAppInputDto> >(),
                    roles = details.Item2.Mapper <List <RoleInputDto> >(),
                    permissions = details.Item3.Mapper <List <PermissionInputDto> >()
                }));
            }

            return(ResultData(null, false, "权限不存在"));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 改变父级角色
        /// </summary>
        /// <param name="id"></param>
        /// <param name="pid"></param>
        /// <returns></returns>
        public ActionResult ChangeParent(int id, int?pid)
        {
            Permission permission = PermissionBll.GetById(id);

            if (pid.HasValue)
            {
                Permission parent = PermissionBll.GetById(pid);
                if (parent is null)
                {
                    pid = null;
                }
            }

            permission.ParentId = pid;
            bool b = PermissionBll.UpdateEntitySaved(permission);

            return(ResultData(null, b, b ? "父级指派成功!" : "父级指派失败!"));
        }
        /// <summary>
        /// 授予临时权限
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="pids">权限id</param>
        /// <returns></returns>
        public ActionResult AddPermissions(Guid id, string pids)
        {
            string[] ids  = pids.Split(',');
            var      user = UserInfoBll.GetById(id);

            if (user is null)
            {
                return(ResultData(null, false, "用户不存在"));
            }

            List <Permission> permissions = PermissionBll.LoadEntities(p => ids.Contains(p.Id.ToString())).ToList();

            permissions.ForEach(r => { UserPermissionBll.AddEntity(new UserPermission()
                {
                    HasPermission = true, Permission = r, PermissionId = r.Id, UserInfo = user, UserInfoId = user.Id
                }); });
            bool b = UserPermissionBll.SaveChanges() > 0;

            return(ResultData(null, b, b ? "临时权限配置完成!" : "临时权限配置失败!"));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 获取该应用的权限
        /// </summary>
        /// <param name="id"></param>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <param name="kw"></param>
        /// <returns></returns>
        public ActionResult MyPermissions(int id, int page = 1, int size = 10, string kw = "")
        {
            Expression <Func <Permission, bool> > where;
            Expression <Func <Permission, bool> > where2;

            if (!string.IsNullOrEmpty(kw))
            {
                where  = u => u.ClientApp.All(c => c.Id != id) && u.PermissionName.Contains(kw);
                where2 = u => u.ClientApp.Any(c => c.Id == id) && u.PermissionName.Contains(kw);
            }
            else
            {
                where  = u => u.ClientApp.All(c => c.Id != id);
                where2 = u => u.ClientApp.Any(c => c.Id == id);
            }
            List <PermissionOutputDto> not = PermissionBll.LoadPageEntities <int, PermissionOutputDto>(page, size, out int total1, where, u => u.Id, false).ToList();  //不属于该应用
            List <PermissionOutputDto> my  = PermissionBll.LoadPageEntities <int, PermissionOutputDto>(page, size, out int total2, where2, u => u.Id, false).ToList(); //属于该应用

            return(PageResult(new { my, not }, size, total1 >= total2 ? total1 : total2));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 添加或修改权限
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="PermissionName">新名字</param>
        /// <param name="ParentId">父级组</param>
        /// <param name="appid"></param>
        /// <returns></returns>
        public ActionResult Save(int Id = 0, string PermissionName = "", int?ParentId = null, string appid = "")
        {
            ParentId = ParentId == 0 ? null : ParentId;
            Permission permission = PermissionBll.GetById(Id);

            if (permission != null)
            {
                //修改
                if (PermissionBll.Any(a => a.PermissionName.Equals(PermissionName) && !a.PermissionName.Equals(permission.PermissionName)))
                {
                    return(ResultData(null, false, $"{PermissionName} 权限已经存在!"));
                }

                permission.PermissionName = PermissionName;
                permission.ParentId       = ParentId;
                bool b = PermissionBll.UpdateEntitySaved(permission);
                return(ResultData(null, b, b ? "修改成功" : "修改失败!"));
            }

            //添加
            if (PermissionBll.Any(a => a.PermissionName.Equals(PermissionName)))
            {
                return(ResultData(null, false, $"{PermissionName} 权限已经存在!"));
            }

            permission = new Permission {
                PermissionName = PermissionName, ParentId = ParentId
            };
            if (!string.IsNullOrEmpty(appid) && ClientAppBll.Any(a => a.AppId.Equals(appid)))
            {
                var app = ClientAppBll.GetFirstEntity(a => a.AppId.Equals(appid));
                app.Permissions.Add(permission);
                bool b = ClientAppBll.UpdateEntitySaved(app);
                return(ResultData(null, b, b ? "权限添加成功!" : "权限添加失败!"));
            }

            permission = PermissionBll.AddEntitySaved(permission);
            return(permission != null?ResultData(permission, true, "权限添加成功!") : ResultData(null, false, "权限添加失败!"));
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 删除权限
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Delete(int id)
        {
            bool b = PermissionBll.DeleteByIdSaved(id);

            return(ResultData(null, b, b ? "权限删除成功!" : "权限删除失败!"));
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 获取权限详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Get(int id)
        {
            PermissionOutputDto permission = PermissionBll.GetById(id).Mapper <PermissionOutputDto>();

            return(ResultData(permission));
        }