Ejemplo n.º 1
0
        private async Task SendRoleUpdateMessageAsync(PermissionConfigDto dto)
        {
            if (dto.GroupId != "*" && dto.Permissions.Any(p => p.StartsWith("DEV_CAB")))
            {
                var roleUpdateMessageDto = new RoleUpdateMessageDto
                {
                    GroupId = dto.GroupId,
                    Roles   = (dto.Role == "*") ? await GetRolesForGroup() : new List <string>
                    {
                        dto.Role
                    }
                };

                await _platformServiceBusService.TriggerPodAccessDefinitionGenerationAsync(roleUpdateMessageDto);
            }
        }
Ejemplo n.º 2
0
        public async Task <DocumentUpdateResultDto> CreateAsync(PermissionConfigDto dto)
        {
            await CheckForDuplicates(dto.Role);

            var permissionConfig = new PermissionConfig
            {
                Role        = dto.Role,
                Permissions = dto.Permissions ?? new List <string>()
            };

            var result = await _dataContext.CreateDocumentAsync(permissionConfig);

            await SendRoleUpdateMessageAsync(dto);

            return(result);
        }
Ejemplo n.º 3
0
        public async Task <DocumentUpdateResultDto> UpdateAsync(PermissionConfigDto dto)
        {
            await CheckForDuplicates(dto.Role, dto.Id);

            var permission = await _dataContext.GetDocumentAsync <PermissionConfig>(dto.Id);

            var previousRole = permission.Role;
            var previousDevicePermissions = permission.Permissions.Where(p => p.StartsWith("DEV_CAB"));

            permission.Id          = dto.Id;
            permission.Role        = dto.Role;
            permission.Permissions = dto.Permissions ?? new List <string>();
            permission.ETag        = dto.ETag;

            var result = await _dataContext.ReplaceDocumentAsync(permission);

            var addedPermissions   = new List <string>();
            var deletedPermissions = new List <string>();

            if (dto.GroupId != "*")
            {
                addedPermissions   = dto.Permissions.Where(p => p.StartsWith("DEV_CAB") && !previousDevicePermissions.Any(d => d == p)).ToList();
                deletedPermissions = previousDevicePermissions.Where(p => !dto.Permissions.Any(d => d == p)).ToList();

                if ((dto.Role != previousRole && dto.Permissions.Any(p => p.StartsWith("DEV_CAB"))) || addedPermissions.Any() || deletedPermissions.Any())
                {
                    var roleUpdateMessageDto = new RoleUpdateMessageDto
                    {
                        GroupId = dto.GroupId,
                        Roles   = (dto.Role == "*" || previousRole == "*") ? await GetRolesForGroup()
                            : (dto.Role == previousRole) ? new List <string>
                        {
                            dto.Role
                        }

                                                                                         : new List <string> {
                            dto.Role, previousRole
                        }
                    };

                    await _platformServiceBusService.TriggerPodAccessDefinitionGenerationAsync(roleUpdateMessageDto);
                }
            }

            return(result);
        }
Ejemplo n.º 4
0
        public async Task <PermissionConfigDto> GetAsync(string id)
        {
            var document = await _dataContext.GetDocumentAsync <PermissionConfig>(id);

            var dto = new PermissionConfigDto
            {
                Id            = document.Id,
                GroupId       = document.GroupId,
                Role          = document.Role,
                IsDeleted     = document.IsDeleted,
                ETag          = document.ETag,
                UpdatedById   = document.UpdatedById,
                UpdatedByName = document.UpdatedByName,
                UpdatedOnUtc  = document.UpdatedOnUtc,
                Permissions   = document.Permissions
            };

            return(dto);
        }
Ejemplo n.º 5
0
        public async Task <DocumentUpdateResultDto> Put([FromBody] PermissionConfigDto dto)
        {
            var result = await _permissionService.UpdateAsync(dto);

            return(result);
        }