Skip to content
Snippets Groups Projects
Commit bc1ca9e1 authored by Marcel Nellesen's avatar Marcel Nellesen
Browse files

Merge branch 'Sprint/2020-14' into 'master'

Sprint/2020 14

See merge request coscine/api/project!101
parents e7dceeb9 65f2b3f4
Branches
Tags v1.21.0
1 merge request!101Sprint/2020 14
...@@ -91,7 +91,8 @@ namespace Coscine.Api.Project.Controllers ...@@ -91,7 +91,8 @@ namespace Coscine.Api.Project.Controllers
return Json(_projectRoleModel.GetAllWhere((projectRole) => return Json(_projectRoleModel.GetAllWhere((projectRole) =>
(projectRole.UserId == user.Id && (projectRole.UserId == user.Id &&
projectRole.ProjectId == projectIdGuid) projectRole.ProjectId == projectIdGuid)
).Select((projectRole) => { ).Select((projectRole) =>
{
if (projectRole.Role == null) if (projectRole.Role == null)
{ {
projectRole.Role = roleModel.GetById(projectRole.RoleId); projectRole.Role = roleModel.GetById(projectRole.RoleId);
...@@ -137,12 +138,12 @@ namespace Coscine.Api.Project.Controllers ...@@ -137,12 +138,12 @@ namespace Coscine.Api.Project.Controllers
{ {
var projectModel = new ProjectModel(); var projectModel = new ProjectModel();
var user = _authenticator.GetUser(); var user = _authenticator.GetUser();
var project = projectModel.GetById(projectId);
if (projectModel.HasAccess(user, projectModel.GetById(projectId), UserRoles.Owner)) if (projectModel.HasAccess(user, project, UserRoles.Owner))
{ {
_projectRoleModel.CheckIfLastOwnerWillBeRemoved(roleId, projectId); _projectRoleModel.CheckIfLastOwnerWillBeRemoved(roleId, projectId);
var project = projectModel.GetById(projectId);
var userModel = new UserModel(); var userModel = new UserModel();
var userToRemove = userModel.GetById(userId); var userToRemove = userModel.GetById(userId);
...@@ -164,6 +165,36 @@ namespace Coscine.Api.Project.Controllers ...@@ -164,6 +165,36 @@ namespace Coscine.Api.Project.Controllers
return Unauthorized("The user is not authorized to delete a project role for the given project!"); return Unauthorized("The user is not authorized to delete a project role for the given project!");
} }
} }
[HttpDelete("[controller]/project/{projectId}/user")]
public IActionResult Delete(Guid projectId)
{
var projectModel = new ProjectModel();
var user = _authenticator.GetUser();
var project = projectModel.GetById(projectId);
var roleId = _projectRoleModel.GetGetUserRoleForProject(projectId, user.Id);
if (projectModel.HasAccess(user, project, UserRoles.Owner, UserRoles.Member))
{
_projectRoleModel.CheckIfLastOwnerWillBeRemoved((Guid)roleId, projectId);
_emitter.EmitUserRemove(new UserEventArgs(this._configuration)
{
Project = project,
User = user
});
LogAnalytics("Leave Project", user, null, project.Id.ToString());
return Json(_projectRoleModel.Delete(_projectRoleModel.GetWhere((projectRole) =>
projectRole.ProjectId == projectId
&& projectRole.UserId == user.Id
&& projectRole.RoleId == roleId)));
}
else
{
return Unauthorized("The user is not authorized to access the given project!");
}
}
private void LogAnalytics(string operation, private void LogAnalytics(string operation,
User user, User user,
IEnumerable<ProjectRoleObject> users = null, IEnumerable<ProjectRoleObject> users = null,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment