Skip to content
Snippets Groups Projects

Topic/1060 affiliation sensitivity api

7 files
+ 58
16
Compare changes
  • Side-by-side
  • Inline
Files
7
@@ -16,6 +16,7 @@ using Newtonsoft.Json.Linq;
@@ -16,6 +16,7 @@ using Newtonsoft.Json.Linq;
using Coscine.Database.DataModel;
using Coscine.Database.DataModel;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text.RegularExpressions;
 
using Coscine.Metadata;
namespace Coscine.Api.Project.Controllers
namespace Coscine.Api.Project.Controllers
{
{
@@ -295,6 +296,7 @@ namespace Coscine.Api.Project.Controllers
@@ -295,6 +296,7 @@ namespace Coscine.Api.Project.Controllers
public IActionResult Store()
public IActionResult Store()
{
{
var user = _authenticator.GetUser();
var user = _authenticator.GetUser();
 
var isRWTHMember = IsRWTHMember(user);
var projectObject = ObjectFactory<ProjectObject>.DeserializeFromStream(Request.Body);
var projectObject = ObjectFactory<ProjectObject>.DeserializeFromStream(Request.Body);
if (projectObject.ParentId != null
if (projectObject.ParentId != null
@@ -304,7 +306,7 @@ namespace Coscine.Api.Project.Controllers
@@ -304,7 +306,7 @@ namespace Coscine.Api.Project.Controllers
return Unauthorized("User is not allowed to create SubProjects.");
return Unauthorized("User is not allowed to create SubProjects.");
}
}
var project = _projectModel.StoreFromObject(projectObject, user);
var project = _projectModel.StoreFromObject(projectObject, user, isRWTHMember);
if (projectObject.ParentId != null
if (projectObject.ParentId != null
&& projectObject.ParentId != new Guid()
&& projectObject.ParentId != new Guid()
@@ -326,6 +328,22 @@ namespace Coscine.Api.Project.Controllers
@@ -326,6 +328,22 @@ namespace Coscine.Api.Project.Controllers
return Json(_projectModel.CreateReturnObjectFromDatabaseObject(project));
return Json(_projectModel.CreateReturnObjectFromDatabaseObject(project));
}
}
 
private bool IsRWTHMember(User user)
 
{
 
var externalIds = new ExternalIdModel().GetAllWhere((externalId) => externalId.UserId == user.Id);
 
if(externalIds.Count() == 0)
 
{
 
return false;
 
}
 
var externalIdList = new List<string>();
 
 
foreach (var externalId in externalIds)
 
{
 
externalIdList.Add(externalId.ExternalIdColumn);
 
}
 
return new RdfStoreConnector().GetTriples(new Uri("https://ror.org/04xfq0f34"), null, null, 1, externalIdList).Count() != 0;
 
}
 
private void LogAnalytics(string operation,
private void LogAnalytics(string operation,
IEnumerable<ProjectObject> projects = null,
IEnumerable<ProjectObject> projects = null,
IEnumerable<ResourceObject> resources = null,
IEnumerable<ResourceObject> resources = null,
Loading