Esempio n. 1
0
        public async Task DeleteAsync(params string[] ids)
        {
            var roleUpdateMessageDto = new RoleUpdateMessageDto {
                Roles = new List <string>()
            };

            var permissionConfigs = await _dataContext.GetDocumentsAsync <PermissionConfig, PermissionConfig>(q => q.Where(pc => ids.Contains(pc.Id)));

            foreach (var permissionConfig in permissionConfigs)
            {
                if (permissionConfig != null && !permissionConfig.IsDeleted)
                {
                    permissionConfig.IsDeleted = true;
                    await _dataContext.ReplaceDocumentAsync(permissionConfig);

                    if (permissionConfig.GroupId != "*" && permissionConfig.Permissions.Any(p => p.StartsWith("DEV_CAB")))
                    {
                        roleUpdateMessageDto.GroupId = permissionConfig.GroupId;

                        if (permissionConfig.Role == "*")
                        {
                            roleUpdateMessageDto.Roles.Clear();
                            roleUpdateMessageDto.Roles.AddRange(await GetRolesForGroup());
                        }
                        else if (!roleUpdateMessageDto.Roles.Contains(permissionConfig.Role))
                        {
                            roleUpdateMessageDto.Roles.Add(permissionConfig.Role);
                        }
                    }
                }
            }

            if (roleUpdateMessageDto.Roles.Any())
            {
                await _platformServiceBusService.TriggerPodAccessDefinitionGenerationAsync(roleUpdateMessageDto);
            }
        }