Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/Analysim.Core/Entities/Project.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,18 @@ public class Project
[Required(ErrorMessage = "Project Route is a required field.")]
public string Route { get; set; }

// Member permissions are configured per project. Defaults preserve the
// existing platform behaviour for projects created before this feature.
public bool MembersCanEditProject { get; set; } = false;
public bool MembersCanManageMembers { get; set; } = false;
public bool MembersCanManageTags { get; set; } = false;
public bool MembersCanUploadFiles { get; set; } = true;
public bool MembersCanManageFiles { get; set; } = false;
public bool MembersCanUploadNotebooks { get; set; } = true;
public bool MembersCanManageNotebooks { get; set; } = false;
public bool MembersCanManagePublications { get; set; } = true;
public bool MembersCanManageProjectLogs { get; set; } = true;

public List<ProjectTag> ProjectTags { get; set; }
public ICollection<ProjectUser> ProjectUsers { get; } = new List<ProjectUser>();
public ICollection<BlobFile> BlobFiles { get; set; } = new List<BlobFile>();
Expand Down
18 changes: 18 additions & 0 deletions src/Analysim.Infrastructure/Data/ApplicationDbContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,24 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
.HasForeignKey(p => p.ProjectID)
.OnDelete(DeleteBehavior.Cascade);

// Preserve the current member capabilities for existing and new projects.
// Project owners can change these values through the project permissions API.
modelBuilder.Entity<Project>()
.Property(p => p.MembersCanUploadFiles)
.HasDefaultValue(true);

modelBuilder.Entity<Project>()
.Property(p => p.MembersCanUploadNotebooks)
.HasDefaultValue(true);

modelBuilder.Entity<Project>()
.Property(p => p.MembersCanManagePublications)
.HasDefaultValue(true);

modelBuilder.Entity<Project>()
.Property(p => p.MembersCanManageProjectLogs)
.HasDefaultValue(true);


// One To Many Relationship (Project -> Notebook)
modelBuilder.Entity<Project>()
Expand Down
Loading
Loading