diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs index a6dad85b02a4b47b457181ee881bd1c407d5219f..7aea0b33be9ac13829999d7b7b2b96c07f25b1db 100644 --- a/src/Project/Controllers/ProjectController.cs +++ b/src/Project/Controllers/ProjectController.cs @@ -48,6 +48,14 @@ namespace Coscine.Api.Project.Controllers var project = _projectModel.GetById(Guid.Parse(id)); if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner)) { + SubProjectModel subProjectModel = new SubProjectModel(); + var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id); + + var parentProjectRelation = subProjectRel.FirstOrDefault(); + if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner)) + { + return Ok(_projectModel.CreateReturnObjectFromDatabaseObject(project, parentProjectRelation.ProjectId)); + } return Ok(_projectModel.CreateReturnObjectFromDatabaseObject(project)); } else diff --git a/src/Project/Models/ProjectModel.cs b/src/Project/Models/ProjectModel.cs index db9f51de3c641115ea08d9997d101c8f071f9048..fed6f120b5ff6d346b7dbed5b1e9228d6ed826b9 100644 --- a/src/Project/Models/ProjectModel.cs +++ b/src/Project/Models/ProjectModel.cs @@ -102,6 +102,11 @@ namespace Coscine.Api.Project.Models return projectRole; } + public bool HasAccess(User user, Guid projectId, params string[] allowedAccess) + { + return HasAccess(user, GetById(projectId), allowedAccess); + } + public bool HasAccess(User user, Database.Model.Project project, params string[] allowedAccess) { ProjectRoleModel projectRoleModel = new ProjectRoleModel();