From 4f70a1465bfc8001f2dd38427615b682ec98c2d2 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 19 Mar 2018 17:36:44 +0100
Subject: [PATCH] when users remove himself session expires automatically

---
 .../mapviewer/api/users/UserController.java   | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
index c5a5d4731c..f85cafd562 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
@@ -1,9 +1,9 @@
 package lcsb.mapviewer.api.users;
 
 import java.io.IOException;
-import java.util.TreeMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
@@ -124,18 +124,16 @@ public class UserController extends BaseController {
 
   @RequestMapping(value = "/doLogout", method = { RequestMethod.GET, RequestMethod.POST }, produces = {
       MediaType.APPLICATION_JSON_VALUE })
-  public Map<String, String> logout(@CookieValue(value = Configuration.AUTH_TOKEN) String token,
+  public Map<String, Object> logout(@CookieValue(value = Configuration.AUTH_TOKEN) String token,
       HttpServletRequest request, HttpServletResponse response //
   ) throws SecurityException, IOException {
     // spring logout
     Authentication auth = SecurityContextHolder.getContext().getAuthentication();
-    logger.debug("LOGOUT");
-    logger.debug(auth);
     if (auth != null) {
       new SecurityContextLogoutHandler().logout(request, response, auth);
     }
 
-    Map<String, String> result = new TreeMap<>();
+    Map<String, Object> result = new TreeMap<>();
     result.put("status", "OK");
 
     final Boolean useSecureCookie = false;
@@ -177,12 +175,17 @@ public class UserController extends BaseController {
 
   @RequestMapping(value = "/users/{login:.+}", method = { RequestMethod.DELETE }, produces = {
       MediaType.APPLICATION_JSON_VALUE })
-  public Map<String, Object> removeProject(//
+  public Map<String, Object> removeUser(//
       @PathVariable(value = "login") String login, //
-      @CookieValue(value = Configuration.AUTH_TOKEN) String token //
+      @CookieValue(value = Configuration.AUTH_TOKEN) String token, //
+      HttpServletRequest request, HttpServletResponse response //
   ) throws SecurityException, IOException, QueryException {
-    return userRest.removeUser(token, login);
-
+    String currentUserLogin = getUserService().getUserByToken(token).getLogin();
+    Map<String, Object> result = userRest.removeUser(token, login);
+    if (login.equals(currentUserLogin)) {
+      return logout(token, request, response);
+    }
+    return result;
   }
 
   /**
-- 
GitLab