This is an automated email from the git hooks/post-receive script. unknown user pushed a commit to branch devel in repository Pollen. commit ef08f5e609381ee8130bb02461c0496a86936596 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu May 22 12:50:04 2014 +0200 catch session expired --- pollen-rest-api/src/main/resources/mapping | 2 +- pollen-ui-angular/src/main/webapp/js/app.js | 31 +++++++++++++--------- .../src/main/webapp/js/controllers/userCtrl.js | 24 ++++++++++------- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping index 6f70b40..dcfdb6f 100644 --- a/pollen-rest-api/src/main/resources/mapping +++ b/pollen-rest-api/src/main/resources/mapping @@ -13,7 +13,7 @@ default.render=org.chorem.pollen.rest.api.PollenRender org.chorem.pollen.services.service.security.PollenAuthenticationException ErrorAction.on401 org.chorem.pollen.services.service.security.PollenUnauthorizedException ErrorAction.on403 org.chorem.pollen.services.service.security.PollenInvalidPermissionException ErrorAction.on403 -org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException ErrorAction.on403 +org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException ErrorAction.on401 org.chorem.pollen.services.service.security.PollenInvalidEmailActivationTokenException ErrorAction.on403 org.chorem.pollen.services.service.InvalidFormException ErrorAction.on400Form org.nuiton.topia.persistence.TopiaNoResultException ErrorAction.on404 diff --git a/pollen-ui-angular/src/main/webapp/js/app.js b/pollen-ui-angular/src/main/webapp/js/app.js index f6eaca4..6737d15 100644 --- a/pollen-ui-angular/src/main/webapp/js/app.js +++ b/pollen-ui-angular/src/main/webapp/js/app.js @@ -21,28 +21,35 @@ angular.module('pollen', ['pollenServices', 'ngRoute', 'pollControllers', 'userControllers', 'ui.bootstrap', 'ngCookies']) .config(['$httpProvider', function($httpProvider) { // edit header for locale and sessionToken - $httpProvider.interceptors.push('httpRequestInterceptor'); + $httpProvider.interceptors.push('httpInterceptor'); // edit content-type for send data to the server $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; }]) -.factory('httpRequestInterceptor', ['SessionStorage', function (SessionStorage) { - // set locale with browser preference - // default : en - var session = SessionStorage.get(); - - if (angular.isUndefined(session.locale)) { - var locale = navigator.language || navigator.userLanguage || 'en'; - SessionStorage.save({locale:locale.substring(0,2)}); - } - - +.factory('httpInterceptor', ['$q', '$rootScope', 'SessionStorage', function ($q, $rootScope, SessionStorage) { return { request: function($config) { + // set locale with browser preference + // default : en + var session = SessionStorage.get(); + + // set locale if undefined + if (angular.isUndefined(session.locale)) { + var locale = navigator.language || navigator.userLanguage || 'en'; + SessionStorage.save({locale:locale.substring(0,2)}); + } + $config.headers['Accept-Language'] = session.locale; $config.headers['X-Pollen-Session-Token'] = session.token; return $config; + }, + responseError: function(response) { + if (response.status === 401) { + //error login or sessionToken + $rootScope.$broadcast('sessionExpired'); + } + return $q.reject(response); } }; }]) diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js index bf2517f..8f4a71f 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js @@ -36,16 +36,20 @@ } }]) -.controller('UserLoginCtrl', ['$scope', 'UserLogin', 'UserLogout', 'User', 'SessionStorage', '$route', function ($scope, UserLogin, UserLogout, User, SessionStorage, $route) { +.controller('UserLoginCtrl', ['$scope', 'UserLogin', 'UserLogout', 'User', 'SessionStorage', '$route', '$location', function ($scope, UserLogin, UserLogout, User, SessionStorage, $route, $location) { if (angular.isUndefined($scope.data)) { $scope.data = {user:{}}; } + + $scope.$on('sessionExpired', function() { + $scope.logout(); + }) + $scope.currentUser = SessionStorage.get().user; $scope.login = function () { UserLogin.login({}, $scope.data.user, function (data) { SessionStorage.save({'token':data.permission}); - User.get({userId: data.id}, function (user) { $scope.currentUser = user; SessionStorage.save({'user':user}); @@ -60,14 +64,14 @@ } $scope.logout = function () { - UserLogout.logout(function (data) { - // delete user information - SessionStorage.remove('token'); - SessionStorage.remove('user'); - delete $scope.currentUser; + UserLogout.logout(); + + // delete user information + SessionStorage.remove('token'); + SessionStorage.remove('user'); + delete $scope.currentUser; - //reload page for right user - $route.reload(); - }) + //got to the home + $route.reload(); } }]) \ No newline at end of file -- To stop receiving notification emails like this one, please contact Chorem.org SCM administrator <admin+scm@chorem.org>.