Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
P
Project
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Labels
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Environments
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Coscine
B
backend
apis
Project
Commits
efc5e9c9
Commit
efc5e9c9
authored
Dec 09, 2019
by
Marcel Nellesen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'Sprint/201922' into 'master'
Sprint/201922 See merge request coscine/api/project!43
parents
14eb8272
e6b248f4
Changes
10
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
72 additions
and
22 deletions
+72
-22
src/Project.Tests/Project.Tests.csproj
src/Project.Tests/Project.Tests.csproj
+2
-2
src/Project.Tests/packages.config
src/Project.Tests/packages.config
+1
-1
src/Project/Controllers/MetadataController.cs
src/Project/Controllers/MetadataController.cs
+32
-12
src/Project/Controllers/ProjectController.cs
src/Project/Controllers/ProjectController.cs
+1
-0
src/Project/Controllers/ResourceController.cs
src/Project/Controllers/ResourceController.cs
+16
-0
src/Project/Models/MetadataModel.cs
src/Project/Models/MetadataModel.cs
+13
-1
src/Project/Models/ResourceModel.cs
src/Project/Models/ResourceModel.cs
+3
-3
src/Project/Project.csproj
src/Project/Project.csproj
+2
-2
src/Project/ReturnObjects/ResourceObject.cs
src/Project/ReturnObjects/ResourceObject.cs
+1
-0
src/Project/packages.config
src/Project/packages.config
+1
-1
No files found.
src/Project.Tests/Project.Tests.csproj
View file @
efc5e9c9
...
...
@@ -56,8 +56,8 @@
<Reference
Include=
"Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Consul.0.7.2.6\lib\net45\Consul.dll
</HintPath>
</Reference>
<Reference
Include=
"Coscine.Action, Version=1.
6
.0.0, Culture=neutral, processorArchitecture=AMD64"
>
<HintPath>
..\packages\Coscine.Action.1.
6
.0\lib\net461\Coscine.Action.dll
</HintPath>
<Reference
Include=
"Coscine.Action, Version=1.
7
.0.0, Culture=neutral, processorArchitecture=AMD64"
>
<HintPath>
..\packages\Coscine.Action.1.
7
.0\lib\net461\Coscine.Action.dll
</HintPath>
</Reference>
<Reference
Include=
"Coscine.ApiCommons, Version=1.2.2.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Coscine.ApiCommons.1.2.2\lib\net461\Coscine.ApiCommons.dll
</HintPath>
...
...
src/Project.Tests/packages.config
View file @
efc5e9c9
...
...
@@ -4,7 +4,7 @@
<
package
id
=
"AutoMapper.Extensions.Microsoft.DependencyInjection"
version
=
"6.0.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Castle.Core"
version
=
"4.4.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Consul"
version
=
"0.7.2.6"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Action"
version
=
"1.
6
.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Action"
version
=
"1.
7
.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.ApiCommons"
version
=
"1.2.2"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Configuration"
version
=
"1.4.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Database"
version
=
"1.10.0"
targetFramework
=
"net472"
/>
...
...
src/Project/Controllers/MetadataController.cs
View file @
efc5e9c9
...
...
@@ -39,13 +39,35 @@ namespace Coscine.Api.Project.Controllers
}));
}
[
HttpGet
(
"[controller]/resource/{resourceId}/ap/{applicationProfileId}"
)]
public
IActionResult
GetApplicationProfile
(
string
resourceId
,
string
applicationProfileId
)
// returns the basic application profile
[
HttpGet
(
"[controller]/resource/{projectId}/ap/{applicationProfileId}"
)]
public
IActionResult
GetApplicationProfile
(
Guid
projectId
,
string
applicationProfileId
)
{
var
user
=
_authenticator
.
GetUserFromToken
();
if
(
_metadataModel
.
IsProjectMember
(
user
,
projectId
))
{
var
graph
=
_util
.
GetGraph
(
HttpUtility
.
UrlDecode
(
applicationProfileId
));
var
json
=
JToken
.
Parse
(
VDS
.
RDF
.
Writing
.
StringWriter
.
Write
(
graph
,
new
RdfJsonWriter
()));
return
Ok
(
json
);
}
else
{
throw
new
NotAuthorizedException
(
"User is no project member!"
);
}
}
// returns the application profile with the fixed values
[
HttpGet
(
"[controller]/resource/{resourceId}/apc/{applicationProfileId}"
)]
public
IActionResult
GetApplicationProfileComplete
(
string
resourceId
,
string
applicationProfileId
)
{
var
user
=
_authenticator
.
GetUserFromToken
();
var
resource
=
_resourceModel
.
GetById
(
Guid
.
Parse
(
resourceId
));
if
(
_metadataModel
.
IsProjectMember
(
user
,
resource
))
if
(
_metadataModel
.
IsProjectMember
(
user
,
resource
)
&&
applicationProfileId
!=
null
)
{
var
graph
=
_util
.
GetGraph
(
HttpUtility
.
UrlDecode
(
applicationProfileId
));
var
fixedValuesGraph
=
new
Graph
();
...
...
@@ -55,7 +77,7 @@ namespace Coscine.Api.Project.Controllers
graph
.
Merge
(
fixedValuesGraph
);
var
json
=
JToken
.
Parse
(
VDS
.
RDF
.
Writing
.
StringWriter
.
Write
(
graph
,
new
RdfJsonWriter
()));
return
Ok
(
json
);
}
else
...
...
@@ -65,13 +87,12 @@ namespace Coscine.Api.Project.Controllers
}
[
HttpGet
(
"[controller]/
resource/{resource
Id}/aplist/"
)]
public
IActionResult
ListAllApplicationProfiles
(
string
resource
Id
)
[
HttpGet
(
"[controller]/
project/{project
Id}/aplist/"
)]
public
IActionResult
ListAllApplicationProfiles
(
Guid
project
Id
)
{
return
Ok
(
_authenticator
.
ValidateAndExecute
((
user
)
=>
{
var
resource
=
_resourceModel
.
GetById
(
Guid
.
Parse
(
resourceId
));
if
(
_metadataModel
.
IsProjectMember
(
user
,
resource
))
if
(
_metadataModel
.
IsProjectMember
(
user
,
projectId
))
{
var
graphUris
=
_util
.
ListGraphs
();
...
...
@@ -169,13 +190,12 @@ namespace Coscine.Api.Project.Controllers
}));
}
[
HttpGet
(
"[controller]/vocabulary/{
resource
Id}/{path}"
)]
public
IActionResult
GetVocabulary
(
string
resource
Id
,
string
path
)
[
HttpGet
(
"[controller]/vocabulary/{
project
Id}/{path}"
)]
public
IActionResult
GetVocabulary
(
Guid
project
Id
,
string
path
)
{
return
Ok
(
_authenticator
.
ValidateAndExecute
((
user
)
=>
{
var
resource
=
_resourceModel
.
GetById
(
Guid
.
Parse
(
resourceId
));
if
(
_metadataModel
.
IsProjectMember
(
user
,
resource
))
if
(
_metadataModel
.
IsProjectMember
(
user
,
projectId
))
{
var
graph
=
_util
.
GetGraph
(
HttpUtility
.
UrlDecode
(
path
));
...
...
src/Project/Controllers/ProjectController.cs
View file @
efc5e9c9
...
...
@@ -21,6 +21,7 @@ namespace Coscine.Api.Project.Controllers
private
readonly
ProjectModel
_projectModel
;
private
readonly
IConfiguration
_configuration
;
private
readonly
Emitter
_emitter
;
public
ProjectController
()
{
_authenticator
=
new
Authenticator
(
this
,
Program
.
Configuration
);
...
...
src/Project/Controllers/ResourceController.cs
View file @
efc5e9c9
...
...
@@ -7,6 +7,9 @@ using Microsoft.AspNetCore.Mvc;
using
System
;
using
System.Linq
;
using
Newtonsoft.Json.Linq
;
using
Coscine.Action
;
using
Coscine.Configuration
;
using
Coscine.Action.EventArgs
;
namespace
Coscine.Api.Project.Controllers
{
...
...
@@ -14,11 +17,15 @@ namespace Coscine.Api.Project.Controllers
{
private
readonly
Authenticator
_authenticator
;
private
readonly
ResourceModel
_resourceModel
;
private
readonly
IConfiguration
_configuration
;
private
readonly
Emitter
_emitter
;
public
ResourceController
()
{
_authenticator
=
new
Authenticator
(
this
,
Program
.
Configuration
);
_configuration
=
Program
.
Configuration
;
_resourceModel
=
new
ResourceModel
();
_emitter
=
new
Emitter
(
this
.
_configuration
);
}
[
Route
(
"[controller]"
)]
...
...
@@ -83,6 +90,10 @@ namespace Coscine.Api.Project.Controllers
if
(
_resourceModel
.
OwnsResource
(
user
,
resource
))
{
var
returnObject
=
_resourceModel
.
CreateReturnObjectFromDatabaseObject
(
resource
);
_emitter
.
EmitResourceDelete
(
new
ResourceEventArgs
(
_configuration
)
{
Resource
=
resource
});
_resourceModel
.
DeleteResource
(
resource
);
return
returnObject
;
}
...
...
@@ -108,6 +119,11 @@ namespace Coscine.Api.Project.Controllers
projectModel
.
AddResource
(
project
,
resource
);
_emitter
.
EmitResourceCreate
(
new
ResourceEventArgs
(
_configuration
)
{
Resource
=
resource
});
return
_resourceModel
.
CreateReturnObjectFromDatabaseObject
(
resource
);
}
else
...
...
src/Project/Models/MetadataModel.cs
View file @
efc5e9c9
...
...
@@ -58,12 +58,24 @@ namespace Coscine.Api.Project.Models
return
DatabaseConnection
.
ConnectToDatabase
((
db
)
=>
{
return
(
from
relation
in
db
.
ProjectRoles
where
relation
.
User
==
user
where
relation
.
User
Id
==
user
.
Id
&&
(
relation
.
Role
.
DisplayName
==
"Owner"
||
relation
.
Role
.
DisplayName
==
"Member"
)
&&
(
relation
.
Project
.
ProjectResourceProjectIdIds
!=
null
&&
relation
.
Project
.
ProjectResourceProjectIdIds
.
Any
((
projectResource
)
=>
projectResource
.
Resource
==
resource
))
select
relation
).
Any
();
});
}
public
bool
IsProjectMember
(
User
user
,
Guid
projectId
)
{
return
DatabaseConnection
.
ConnectToDatabase
((
db
)
=>
{
return
(
from
relation
in
db
.
ProjectRoles
where
relation
.
UserId
==
user
.
Id
&&
(
relation
.
Role
.
DisplayName
==
"Owner"
||
relation
.
Role
.
DisplayName
==
"Member"
)
&&
(
relation
.
ProjectId
==
projectId
)
select
relation
).
Any
();
});
}
}
}
src/Project/Models/ResourceModel.cs
View file @
efc5e9c9
...
...
@@ -192,9 +192,9 @@ namespace Coscine.Api.Project.Models
{
resource
.
LicenseId
=
resourceObject
.
License
.
Id
;
}
resource
.
ApplicationProfile
=
resourceObject
.
ApplicationProfile
;
resource
.
FixedValues
=
resourceObject
.
FixedValues
.
ToString
()
;
// the application profile can not be altered after creation
//
resource.ApplicationProfile = resourceObject.ApplicationProfile;
resource
.
FixedValues
=
resourceObject
.
FixedValues
!=
null
?
resourceObject
.
FixedValues
.
ToString
()
:
"{}"
;
SetDisciplines
(
resource
,
resourceObject
.
Disciplines
);
SetResourceTypeObject
(
resource
,
resourceObject
.
ResourceTypeOption
);
...
...
src/Project/Project.csproj
View file @
efc5e9c9
...
...
@@ -45,8 +45,8 @@
<Reference
Include=
"Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Consul.0.7.2.6\lib\net45\Consul.dll
</HintPath>
</Reference>
<Reference
Include=
"Coscine.Action, Version=1.
6
.0.0, Culture=neutral, processorArchitecture=AMD64"
>
<HintPath>
..\packages\Coscine.Action.1.
6
.0\lib\net461\Coscine.Action.dll
</HintPath>
<Reference
Include=
"Coscine.Action, Version=1.
7
.0.0, Culture=neutral, processorArchitecture=AMD64"
>
<HintPath>
..\packages\Coscine.Action.1.
7
.0\lib\net461\Coscine.Action.dll
</HintPath>
</Reference>
<Reference
Include=
"Coscine.ApiCommons, Version=1.2.2.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Coscine.ApiCommons.1.2.2\lib\net461\Coscine.ApiCommons.dll
</HintPath>
...
...
src/Project/ReturnObjects/ResourceObject.cs
View file @
efc5e9c9
...
...
@@ -9,6 +9,7 @@ namespace Coscine.Api.Project.ReturnObjects
public
class
ResourceObject
:
IReturnObject
{
public
Guid
Id
{
get
;
set
;
}
public
string
PID
{
get
{
return
Program
.
Configuration
.
GetStringAndWait
(
"coscine/global/epic/prefix"
)
+
"/"
+
Id
.
ToString
();
}
}
public
string
DisplayName
{
get
;
set
;
}
public
string
ResourceName
{
get
;
set
;
}
public
string
Description
{
get
;
set
;
}
...
...
src/Project/packages.config
View file @
efc5e9c9
...
...
@@ -3,7 +3,7 @@
<
package
id
=
"AutoMapper"
version
=
"8.0.0"
targetFramework
=
"net472"
/>
<
package
id
=
"AutoMapper.Extensions.Microsoft.DependencyInjection"
version
=
"6.0.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Consul"
version
=
"0.7.2.6"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Action"
version
=
"1.
6
.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Action"
version
=
"1.
7
.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.ApiCommons"
version
=
"1.2.2"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Configuration"
version
=
"1.4.0"
targetFramework
=
"net472"
/>
<
package
id
=
"Coscine.Database"
version
=
"1.10.0"
targetFramework
=
"net472"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment