Beispiel #1
0
        public IActionResult AssignPermission(RoleAssignPermissionPayload payload)
        {
            var response = ResponseModelFactory.CreateInstance;

            using (_dbContext)
            {
                var role = _dbContext.SystemRole.FirstOrDefault(x => x.SystemRoleUuid.ToString() == payload.RoleCode);
                if (role == null)
                {
                    response.SetFailed("角色不存在");
                    return(Ok(response));
                }
                // 如果是超级管理员,则不写入到角色-权限映射表(在读取时跳过角色权限映射,直接读取系统所有的权限)
                if (role.RoleName == "超级管理员")
                {
                    response.SetSuccess();
                    return(Ok(response));
                }
                //先删除当前角色原来已分配的权限
                _dbContext.Database.ExecuteSqlRaw("DELETE FROM SystemRolePermissionMapping WHERE systemroleuuid={0}", payload.RoleCode);
                if (payload.Permissions != null || payload.Permissions.Count > 0)
                {
                    var permissions = payload.Permissions.Select(x => new SystemRolePermissionMapping
                    {
                        AddTime = DateTime.Now.ToString("yyyy-MM-dd"),
                        SystemPermissionUuid = new Guid(x.Trim()),
                        SystemRoleUuid       = new Guid(payload.RoleCode.Trim())
                    });
                    _dbContext.SystemRolePermissionMapping.AddRange(permissions);
                    _dbContext.SaveChanges();
                }
            }
            return(Ok(response));
        }
Beispiel #2
0
        public IActionResult AssignPermission(RoleAssignPermissionPayload payload)
        {
            var response = ResponseModelFactory.CreateInstance;

            using (_dbContext)
            {
                var role = _dbContext.DncRole.FirstOrDefault(x => x.Code == payload.RoleCode);
                if (role == null)
                {
                    response.SetFailed("角色不存在");
                    return(Ok(response));
                }
                // 如果是超级管理员,则不写入到角色-权限映射表(在读取时跳过角色权限映射,直接读取系统所有的权限)
                if (role.IsSuperAdministrator)
                {
                    response.SetSuccess();
                    return(Ok(response));
                }
                //先删除当前角色原来已分配的权限
                _dbContext.Database.ExecuteSqlCommand("DELETE FROM DncRolePermissionMapping WHERE RoleCode={0}", payload.RoleCode);
                if (payload.Permissions != null || payload.Permissions.Count > 0)
                {
                    var permissions = payload.Permissions.Select(x => new DncRolePermissionMapping
                    {
                        CreatedOn      = DateTime.Now,
                        PermissionCode = x.Trim(),
                        RoleCode       = payload.RoleCode.Trim()
                    });
                    _dbContext.DncRolePermissionMapping.AddRange(permissions);
                    _dbContext.SaveChanges();
                }
            }
            return(Ok(response));
        }
Beispiel #3
0
        public IHttpActionResult AssignPermission(RoleAssignPermissionPayload payload)
        {
            var response = ResponseModelFactory.CreateInstance;

            using (_dbContext)
            {
                var role = _dbContext.Roles.Include(x => x.Permissions)
                           .FirstOrDefault(x => x.Code == payload.RoleCode);
                if (role == null)
                {
                    response.SetFailed("角色不存在");
                    return(Ok(response));
                }

                // 如果是超级管理员,则不写入到角色-权限映射表(在读取时跳过角色权限映射,直接读取系统所有的权限)
                if (role.IsSuperAdministrator)
                {
                    response.SetSuccess();
                    return(Ok(response));
                }

                //先删除当前角色原来已分配的权限
                // _dbContext.Database.ExecuteSqlCommand("DELETE FROM DncRolePermissionMapping WHERE RoleCode={0}", payload.RoleCode);
                role.Permissions.Clear();
                _dbContext.SaveChanges();
                if (payload.Permissions != null || payload.Permissions.Count > 0)
                {
                    var permissions = _dbContext.Permissions.Where(x => payload.Permissions.Contains(x.Code));
                    foreach (Permission permission in permissions)
                    {
                        role.Permissions.Add(permission);
                    }

                    _dbContext.SaveChanges();
                }
            }

            return(Ok(response));
        }
Beispiel #4
0
        public IActionResult AssignPermission(RoleAssignPermissionPayload payload)
        {
            HttpResponseModel response = ResponseModelFactory.CreateInstance;

            using (this.DbContext)
            {
                Role role = this.DbContext.Role.FirstOrDefault(x => x.Id == payload.RoleCode);
                if (role == null)
                {
                    response.SetFailed("角色不存在");
                    return(this.Ok(response));
                }

                // 如果是超级管理员,则不写入到角色-权限映射表(在读取时跳过角色权限映射,直接读取系统所有的权限)
                if (role.IsSuperAdministrator)
                {
                    response.SetSuccess();
                    return(this.Ok(response));
                }

                // 先删除当前角色原来已分配的权限
                this.DbContext.Database.ExecuteSqlInterpolated($"DELETE FROM DncRolePermissionMapping WHERE RoleCode={payload.RoleCode}");
                if (payload.Permissions != null || payload.Permissions.Count > 0)
                {
                    IEnumerable <RolePermissionMapping> permissions = payload.Permissions.Select(x => new RolePermissionMapping
                    {
                        CreateTime     = DateTime.Now,
                        PermissionCode = x.Trim(),

                        // RoleCode = payload.RoleCode.Trim()
                    });

                    // this.DbContext.RolePermissionMapping.AddRange(permissions);
                    this.DbContext.SaveChanges();
                }
            }

            return(this.Ok(response));
        }