Beispiel #1
0
        private async Task <SplittedProjectContainers> SplitCampainContainersAsync(List <ProjectContainer> projectContainers,
                                                                                   NexusDatabase database)
        {
            var authState = await _authenticationStateProvider.GetAuthenticationStateAsync();

            var principal = authState.User;

            var accessible = projectContainers.Where(projectContainer =>
            {
                var isProjectAccessible = Utilities.IsProjectAccessible(principal, projectContainer.Id, database);
                var isProjectVisible    = Utilities.IsProjectVisible(principal, projectContainer.ProjectMeta, isProjectAccessible);

                return(isProjectAccessible && isProjectVisible);
            }).OrderBy(projectContainer => projectContainer.Id).ToList();

            var restricted = projectContainers.Where(projectContainer =>
            {
                var isProjectAccessible = Utilities.IsProjectAccessible(principal, projectContainer.Id, database);
                var isProjectVisible    = Utilities.IsProjectVisible(principal, projectContainer.ProjectMeta, isProjectAccessible);

                return(!isProjectAccessible && isProjectVisible);
            }).OrderBy(projectContainer => projectContainer.Id).ToList();

            return(new SplittedProjectContainers(accessible, restricted));
        }
Beispiel #2
0
        private void Initialize(NexusDatabase database)
        {
            var projectContainers = database.ProjectContainers;

            this.ProjectContainersInfo = this.SplitCampainContainersAsync(projectContainers, database).Result;

            // this triggers a search to find the new container instance
            this.ProjectContainer = this.ProjectContainer;

            this.SampleRateValues = this.ProjectContainersInfo.Accessible.SelectMany(projectContainer =>
            {
                return(projectContainer.Project.Channels.SelectMany(channel =>
                {
                    return channel.Datasets.Select(dataset => dataset.Id.Split('_')[0]);
                }));
            }).Distinct().OrderBy(x => x, new SampleRateStringComparer()).ToList();

            // to rebuilt list with new dataset instances
            this.SetExportParameters(this.ExportParameters);

            // maybe there is a new channel available now: display it
            this.UpdateGroupedChannels();
        }
Beispiel #3
0
        public static bool IsProjectAccessible(ClaimsPrincipal principal, string projectId, NexusDatabase database)
        {
            if (principal == null)
            {
                return(false);
            }

            var identity         = principal.Identity;
            var projectContainer = database.ProjectContainers.First(current => current.Id == projectId);
            var projectMeta      = projectContainer.ProjectMeta;

            return(Utilities.IsProjectAccessible(principal, projectMeta));
        }