From 32512a300764eb3316edf37cf764623f1133eb4a Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Thu, 4 Feb 2016 11:58:30 +0100
Subject: [PATCH] logout works

---
 README.md                                     |  1 -
 src/main/java/org/hbp/mip/MIPApplication.java | 10 +++
 .../scripts/app/header/header.controller.js   | 81 ++++++++++---------
 3 files changed, 51 insertions(+), 41 deletions(-)

diff --git a/README.md b/README.md
index 036cf1057..8040efe92 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,6 @@ The API documentation is available at `<BASE URL>/swagger-ui.html`. A JSON versi
 
 ## BUGS
 
-* Logout does not work;
 * In the profile view, we shouldn't see the '+' between firstname and lastname;
 * Export PDF;
 
diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index 5cb87f7fc..de74a8659 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -151,6 +151,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
             String userJSON = mapper.writeValueAsString(getUser(principal));
             Cookie cookie = new Cookie("user", URLEncoder.encode(userJSON, "UTF-8"));
             cookie.setPath("/");
+            cookie.setMaxAge(3600);
             response.addCookie(cookie);
         } catch (JsonProcessingException e) {
             e.printStackTrace();
@@ -160,6 +161,15 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
         return principal;
     }
 
+    @RequestMapping("/logout")
+    public void logout(HttpServletResponse response) {
+
+        Cookie cookie = new Cookie("user", null);
+        cookie.setPath("/");
+        cookie.setMaxAge(0);
+        response.addCookie(cookie);
+    }
+
     @Override
     protected void configure(HttpSecurity http) throws Exception {
         // @formatter:off
diff --git a/src/main/resources/static/frontend/app/scripts/app/header/header.controller.js b/src/main/resources/static/frontend/app/scripts/app/header/header.controller.js
index 4ed9a6da1..8f5bd15bc 100644
--- a/src/main/resources/static/frontend/app/scripts/app/header/header.controller.js
+++ b/src/main/resources/static/frontend/app/scripts/app/header/header.controller.js
@@ -1,40 +1,41 @@
-/**
- * Created by Michael DESIGAUD on 11/08/2015.
- */
-angular.module('chuvApp.header').controller('HeaderController', ['$scope', '$translate', '$translatePartialLoader', '$state', 'tmhDynamicLocale', 'User','$rootScope',
-  function ($scope, $translate, $translatePartialLoader, $state, tmhDynamicLocale, User,$rootScope) {
-
-    $translatePartialLoader.addPart('header');
-    $translate.refresh();
-
-    /**
-     * Change language event
-     * @param lang new lang
-     */
-    $scope.onChangeLanguage = function (lang) {
-      $translate.use(lang);
-      tmhDynamicLocale.set(lang);
-    };
-
-    /**
-     * Is current language
-     * @param languageKey language key
-     * @return {boolean} true if language is the same
-     */
-    $scope.isCurrentLanguage = function (languageKey) {
-      return $translate.use() === languageKey;
-    };
-
-    /**
-     * Search method event
-     */
-    $scope.search = function () {
-      $state.go('search');
-    };
-
-   $scope.logout = function(){
-       User.removeCurrent();
-       $state.go('login');
-       $rootScope.user = null;
-   };
-  }]);
\ No newline at end of file
+/**
+ * Created by Michael DESIGAUD on 11/08/2015.
+ */
+angular.module('chuvApp.header').controller('HeaderController', ['$scope', '$translate', '$translatePartialLoader', '$state', 'tmhDynamicLocale', 'User','$rootScope','$http',
+  function ($scope, $translate, $translatePartialLoader, $state, tmhDynamicLocale, User,$rootScope, $http) {
+
+    $translatePartialLoader.addPart('header');
+    $translate.refresh();
+
+    /**
+     * Change language event
+     * @param lang new lang
+     */
+    $scope.onChangeLanguage = function (lang) {
+      $translate.use(lang);
+      tmhDynamicLocale.set(lang);
+    };
+
+    /**
+     * Is current language
+     * @param languageKey language key
+     * @return {boolean} true if language is the same
+     */
+    $scope.isCurrentLanguage = function (languageKey) {
+      return $translate.use() === languageKey;
+    };
+
+    /**
+     * Search method event
+     */
+    $scope.search = function () {
+      $state.go('search');
+    };
+
+   $scope.logout = function(){
+       $http.get("/logout");
+       User.removeCurrent();
+       $state.go('login');
+       $rootScope.user = null;
+   };
+  }]);
-- 
GitLab