Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public PublicResult ConfigPermission(ConfigPermissionDto dto)
        {
            using (var client = DbFactory.CreateClient())
            {
                var list = client.Queryable <RolePermission, Permission>((rp, p) => new object[]
                {
                    JoinType.Left, rp.PermissionId == p.Id
                })
                           .Where((rp, p) => rp.RoleId == dto.RoleId)
                           .Select((rp, p) => new
                {
                    PermissionId    = p.Id,
                    RolePermissonId = rp.Id
                })
                           .ToList();

                client.UseTran(tran =>
                {
                    var willAddPermissions = dto.ConfigedPermissions
                                             .Where(t => list.All(x => x.PermissionId != t.Id))
                                             .Select(t => new RolePermission()
                    {
                        PermissionId = t.Id,
                        RoleId       = dto.RoleId
                    })
                                             .ToList();

                    var willRemovePermissions = list
                                                .Where(t => dto.ConfigedPermissions.All(x => x.Id != t.PermissionId))
                                                .Select(t => t.RolePermissonId)
                                                .ToList();

                    if (willAddPermissions.Any())
                    {
                        tran.Insertable <RolePermission>(willAddPermissions).ExecuteCommand();
                    }

                    if (willRemovePermissions.Any())
                    {
                        tran.Deleteable <RolePermission>().In(willRemovePermissions).ExecuteCommand();
                    }

                    return(0);
                });
                _distributedCache.Remove(PermissionService.CACHE_ROLE_PERMISSION_ALL_KEY);
                return(Ok());
            }
        }
Ejemplo n.º 2
0
        public IActionResult ConfigPermission(ConfigPermissionDto dto)
        {
            var result = _roleService.ConfigPermission(dto);

            return(Json(result));
        }