Пример #1
0
        public ActionResult SaveMenuPermissions(PermissionsModel model)
        {
            try
            {
                var entity = new PermissionsDto
                {
                    Id     = model.Id,
                    MenuId = model.MenuId,
                    Name   = model.Name,
                    Action = model.Action,
                    Code   = model.Code,
                    Type   = model.Type,
                    Remark = model.Remark
                };

                var response = _permissionsService.SavePermissions(new SavePermissionsRequest
                {
                    Entity = entity
                });

                if (!response.IsSuccess)
                {
                    return(ToJsonErrorResult(1, response.MessageText));
                }

                return(ToJsonResult(new { status = 0 }));
            }
            catch (Exception ex)
            {
                LogManager.DefaultLogger.ErrorFormat("保存菜单权限出错:{0}", new { model, err = ex.ToString() }.ToJson());
                return(ToJsonFatalResult("保存菜单权限出错"));
            }
        }
        public async Task <PermissionsDto> Get()
        {
            var dto = new PermissionsDto();

            var userId = User.GetDiscordId();

            await foreach (var claim in _context.UserClaims
                           .AsNoTracking()
                           .Where(claim => claim.UserId == userId)
                           .Where(claim => claim.ClaimType == AppClaimTypes.Character || claim.ClaimType == AppClaimTypes.RaidLeader)
                           .AsAsyncEnumerable())
            {
                if (long.TryParse(claim.ClaimValue, out var resourceId))
                {
                    if (claim.ClaimType == AppClaimTypes.Character)
                    {
                        dto.Characters.Add(resourceId);
                    }
                    else if (claim.ClaimType == AppClaimTypes.RaidLeader)
                    {
                        dto.Teams.Add(resourceId);
                    }
                }
            }

            return(dto);
        }
Пример #3
0
        //private static SchoolContext _context = new SchoolContext();

        //管控權限
        public static List <PermissionsDto> GetPersonalPermissions(string LogonId)
        {
            SchoolContext _context           = new SchoolContext();
            var           permissionsDtoList = new List <PermissionsDto>();
            var           user        = _context.ApplicationUser.FirstOrDefault(x => x.LogonId == LogonId);
            var           userRoles   = _context.ApplicationUserRoles.FirstOrDefault(x => x.UserId == user.ID);
            var           permissions = _context.Permissions.Where(x => x.RoleId == userRoles.RoleId);

            foreach (var permission in permissions)
            {
                PermissionsDto permissionsDto = new PermissionsDto
                {
                    ID            = permission.ID,
                    Name          = permission.Name,
                    Url           = permission.Url,
                    IsGranted     = permission.IsGranted,
                    CreatedUserId = permission.CreatedUserId,
                    CreateDate    = permission.CreateDate,
                    RoleId        = permission.RoleId,
                    MenuItemsId   = permission.MenuItemsId
                };

                permissionsDtoList.Add(permissionsDto);
            }

            return(permissionsDtoList);
        }
        private PermissionsDto GetPermissionsData(int portalId, int desktopModuleId)
        {
            var permissions = new PermissionsDto(true);

            if (desktopModuleId > 0)
            {
                var portalModule = DesktopModuleController.GetPortalDesktopModule(portalId, desktopModuleId);
                if (portalModule != null)
                {
                    permissions.DesktopModuleId = desktopModuleId;

                    var modulePermissions = DesktopModulePermissionController.GetDesktopModulePermissions(portalModule.PortalDesktopModuleID);
                    foreach (DesktopModulePermissionInfo permission in modulePermissions)
                    {
                        if (permission.UserID != Null.NullInteger)
                        {
                            permissions.AddUserPermission(permission);
                        }
                        else
                        {
                            permissions.AddRolePermission(permission);
                        }
                    }

                    permissions.RolePermissions =
                        permissions.RolePermissions.OrderByDescending(p => p.Locked)
                        .ThenByDescending(p => p.IsDefault)
                        .ThenBy(p => p.RoleName)
                        .ToList();
                    permissions.UserPermissions = permissions.UserPermissions.OrderBy(p => p.DisplayName).ToList();
                }
            }

            return(permissions);
        }
Пример #5
0
        public async Task <IActionResult> SetPermission([FromBody] PermissionsDto newPermission)
        {
            int environmentOwnerId = await _repo.GetEnvironmentOwnerId(newPermission.EnvironmentId);

            //TODO Umbauen?
            AuthorizationResult authorization = await _authService.AuthorizeAsync(User, null,
                                                                                  new[]
            {
                new ChangePermissionRequirement(newPermission.EnvironmentId, environmentOwnerId, newPermission.UserId,
                                                PermissionFlags.IsOwner | PermissionFlags.ManageUsers)
            });

            if (!authorization.Succeeded)
            {
                return(Unauthorized());
            }

            Permission currentPermission = await _repo.GetUserPermission(newPermission.EnvironmentId, newPermission.UserId);

            _mapper.Map(newPermission, currentPermission);
            currentPermission.Serial = SerialGenerator.Generate();
            _permissionsCache.Update(currentPermission.UserId, currentPermission.Environment.Id, currentPermission);

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            throw new Exception($"Error saving permissions user:{newPermission.UserId} env:{newPermission.EnvironmentId}");
        }
Пример #6
0
    public async Task <PermissionsDto> Get()
    {
        var dto    = new PermissionsDto();
        var userId = User.GetDiscordId();

        Debug.Assert(userId.HasValue);

        await foreach (var characterId in _context.Characters
                       .AsNoTracking()
                       .Where(c => c.OwnerId == userId)
                       .Select(c => c.Id)
                       .AsAsyncEnumerable())
        {
            dto.Characters.Add(characterId);
        }

        await foreach (var teamId in _context.RaidTeamLeaders
                       .AsNoTracking()
                       .Where(rtl => rtl.UserId == userId)
                       .Select(rtl => rtl.RaidTeamId)
                       .AsAsyncEnumerable())
        {
            dto.Teams.Add(teamId);
        }

        return(dto);
    }
Пример #7
0
        public IActionResult GetPermissions()
        {
            PermissionsDto permissions = new PermissionsDto()
            {
                Roles = _roleManager.Roles.Select(x => x.Name).ToList()
            };

            return(Ok(permissions));
        }
Пример #8
0
        private string GetFilePermission(PermissionsDto permissions, string propertyName)
        {
            var propertyValueObject = typeof(PermissionsDto).GetProperty(propertyName).GetValue(permissions, null);

            if (propertyValueObject is string filePermission)
            {
                return(filePermission);
            }
            throw new InvalidCastException();
        }
Пример #9
0
        public static string ToBits(this PermissionsDto permission)
        {
            var values = new List <short>()
            {
                Convert.ToInt16(permission.ManageUsers),
                Convert.ToInt16(permission.EditArticleSettings),
                Convert.ToInt16(permission.CanScan),
                Convert.ToInt16(permission.IsOwner)
            };

            return(string.Join("", values));
        }
Пример #10
0
        public async Task <IActionResult> Post([FromBody] PermissionsDto permissionDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                throw new AuthenticationException();
            }
            var permission = _mapper.Map <Permissions>(permissionDto);
            await _permissionsService.InsertPermission(permission);

            permissionDto = _mapper.Map <PermissionsDto>(permission);
            var response = new ApiResponse <PermissionsDto>(permissionDto);

            return(Ok(response));
        }
Пример #11
0
        public async Task <IActionResult> Put(int id, PermissionsDto permissionDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                throw new AuthenticationException();
            }
            var permission = _mapper.Map <Permissions>(permissionDto);

            permission.Id = id;
            var result = await _permissionsService.UpdatePermission(permission);

            var response = new ApiResponse <bool>(result);

            return(Ok(response));
        }
Пример #12
0
        public async Task <IActionResult> GetPermissionsDtoesByRoleIDAsync(int roleID)
        {
            List <PermissionsDto> permissionsDtos;//权限集合

            //拿取全部的权限
            var permissions = await context.Permissions.Where(m => m.IsDel == 0).ToListAsync();

            //Auto映射
            permissionsDtos = mapper.Map <List <PermissionsDto> >(permissions);


            if (roleID == 0)
            {
                return(Ok(new { code = 0, msg = "", count = permissionsDtos.Count(), data = permissionsDtos }));
            }

            //根据角色ID获取对应的权限记录
            var roles_Permissions = await wrapperRepository.Role_PermissionRepository.GetRoles_PermissionsByRoleID(roleID);

            List <PermissionsDto> rolePermissionsDtos = new List <PermissionsDto>();

            //遍历权限集合和  角色权限记录表里的权限进行比对,一样的花就设置选中状态为true
            foreach (var permissionsDto in permissionsDtos)
            {
                PermissionsDto dto = mapper.Map <PermissionsDto>(permissionsDto); //Auto映射

                foreach (var roles_Permission in roles_Permissions)
                {
                    if (permissionsDto.ID == roles_Permission.PermissionID)  //如果角色包含这个权限就让选中状态为true
                    {
                        dto.LAY_CHECKED = true;
                    }
                }
                rolePermissionsDtos.Add(dto);
            }

            return(Ok(new { code = 0, msg = "", count = rolePermissionsDtos.Where(m => m.IsDel == 0).Count(), data = rolePermissionsDtos.Where(m => m.IsDel == 0) }));
        }
Пример #13
0
        public void NotificationTest()
        {
            /* 1. Join Env
             * 2. Login user and switch to Tom's env
             * 3. Login Owner
             * 4. Change Permissions
             * 5. Verify Header
             * 6. Udpate token
             * 7. Verify new Permissions
             * 8. Verify Header*/

            ResetDb();
            var initialPermissions = new Permission()
            {
                CanScan = true, EditArticleSettings = true
            };

            JoinEnvironment("sepp", "Zu Hause von Tom", initialPermissions);

            LoginResponseObject loginSepp = WebClient.Login("sepp", "P@ssw0rd");
            //Switch to other Environment
            HttpResponseMessage changeEnvironmentResult =
                WebClient.GetAsync($"auth/UpdatePermissionClaims/{loginSepp.MappedUser.Id}/?environmentId=2").Result;

            loginSepp.PermissionsToken = JObject.Parse(changeEnvironmentResult.Content.ReadAsStringAsync().Result)
                                         .ToObject <LoginResponseObject>().PermissionsToken;

            //Set new Permissions
            var newPermission = new PermissionsDto()
            {
                UserId              = loginSepp.MappedUser.Id,
                EnvironmentId       = 2,
                CanScan             = true,
                EditArticleSettings = true,
                ManageUsers         = true // New
            };

            WebClient.Login("tom", "P@ssw0rd");
            HttpResponseMessage setPermissionsResult =
                WebClient.PutAsJsonAsync("users/SetPermission", newPermission).Result;

            //Execute some Action to trigger permissions changed notification
            HttpResponseMessage invitationsCountResult = WebClient.UseLogin(loginSepp)
                                                         .GetAsync($"users/InvitationsCount/{loginSepp.MappedUser.Id}").Result;

            //Update the Token
            HttpResponseMessage updateTokenResult = WebClient.GetAsync(
                $"auth/UpdatePermissionClaims/{loginSepp.MappedUser.Id}/?environmentId=2").Result;

            loginSepp.PermissionsToken = JObject.Parse(updateTokenResult.Content.ReadAsStringAsync().Result)
                                         .ToObject <LoginResponseObject>().PermissionsToken;
            JwtSecurityToken token = JwtHelper.DecodeToken(loginSepp.PermissionsToken);
            string           updatedPermissions = token.Claims.FirstOrDefault(c => c.Type == BeepClaimTypes.Permissions)?.Value;

            //Execute another action to verify permissions changed notification is gone
            HttpResponseMessage noPermissionsChangedHeader = WebClient.UseLogin(loginSepp)
                                                             .GetAsync($"users/InvitationsCount/{loginSepp.MappedUser.Id}").Result;


            Assert.True(changeEnvironmentResult.IsSuccessStatusCode);
            Assert.True(setPermissionsResult.IsSuccessStatusCode);

            Assert.NotNull(invitationsCountResult.Headers.FirstOrDefault(h => h.Key == "PermissionsChanged").Value);
            Assert.Equal(newPermission.ToBits(), updatedPermissions);
            Assert.Null(noPermissionsChangedHeader.Headers.FirstOrDefault(h => h.Key == "PermissionsChanged").Value);
        }