diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs index 507c321276db5cd32c5879c9cb4055004bb7062b..1ced64d962c424295c13e3c4c0606da48d50c12c 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 97c7431977fb9d9fb98b629134d8468fad84b670..8dff8dcbb178886e062ea9afa3cff773544dbf5e 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();