From 1ce610802d3bdc027cb87aca013f1b0a592d30b4 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Thu, 10 Dec 2015 10:33:25 +0100 Subject: [PATCH] add user cookie --- src/main/java/org/hbp/mip/MIPApplication.java | 18 +- src/main/java/org/hbp/mip/model/User.java | 5 + .../app/images/users/default_user.png | Bin 0 -> 30348 bytes .../app/scripts/app/header/header.html | 128 +++++++------- .../frontend/app/scripts/app/login/login.html | 50 +++--- .../app/scripts/app/users/users.service.js | 160 +++++++++--------- 6 files changed, 191 insertions(+), 170 deletions(-) create mode 100644 src/main/resources/static/frontend/app/images/users/default_user.png diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index 0b1ff5c70..85f378799 100644 --- a/src/main/java/org/hbp/mip/MIPApplication.java +++ b/src/main/java/org/hbp/mip/MIPApplication.java @@ -20,6 +20,8 @@ */ package org.hbp.mip; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.hbp.mip.model.*; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; @@ -60,6 +62,8 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.security.Principal; import java.util.Date; import java.util.List; @@ -74,7 +78,19 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { @RequestMapping("/user") @ResponseBody - public Principal user(Principal principal) { + public Principal user(Principal principal, HttpServletResponse response) { + ObjectMapper mapper = new ObjectMapper(); + + try { + String userJSON = mapper.writeValueAsString(getUser(principal)); + Cookie cookie = new Cookie("user", URLEncoder.encode(userJSON,"UTF-8")); + cookie.setPath("/"); + response.addCookie(cookie); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } return principal; } diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java index 6ee077d20..c0f743bce 100644 --- a/src/main/java/org/hbp/mip/model/User.java +++ b/src/main/java/org/hbp/mip/model/User.java @@ -96,6 +96,11 @@ public class User { } } + if(this.picture == null || this.picture.isEmpty()) + { + this.picture = "images/users/default_user.png"; + } + } public Long getId() { diff --git a/src/main/resources/static/frontend/app/images/users/default_user.png b/src/main/resources/static/frontend/app/images/users/default_user.png new file mode 100644 index 0000000000000000000000000000000000000000..f90088857ea7c5cd34bbf3a07e9b166deb4026ad GIT binary patch literal 30348 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 XbQgHl*h^>O00000NkvXXu0mjfGVK^k literal 0 HcmV?d00001 diff --git a/src/main/resources/static/frontend/app/scripts/app/header/header.html b/src/main/resources/static/frontend/app/scripts/app/header/header.html index dd6cacc15..0b296f874 100644 --- a/src/main/resources/static/frontend/app/scripts/app/header/header.html +++ b/src/main/resources/static/frontend/app/scripts/app/header/header.html @@ -1,64 +1,64 @@ -<div class="container-fluid"> - <div class="logo-area"> - - <a class="navbar-brand" href="#/home">Human Brain Project</a> - - <div class="toolbar-icon-bg hidden-xs" id="toolbar-search"> - <div class="input-group"> - <span class="input-group-btn"><button class="btn" type="button"><i class="ti ti-search"></i></button></span> - <input type="text" class="form-control" placeholder="{{ 'header.menu.search' | translate }}" size="25"> - </div> - </div> - <span id="trigger-sidebar" class="toolbar-trigger toolbar-icon-bg" ng-click="toggleLeftBar()" ng-show="!getLayoutOption('layoutHorizontal')"> - <a data-toggle="tooltips" data-placement="right" title="{{'header.menu.my-data' | translate}}" href="#/data/mydata"> - <span class="icon-bg"> - <i class="ti ti-menu"></i> - </span> - </a> - </span> - <span class="toolbar-trigger toolbar-icon-bg" > - <a href="#/data/communitydata" title="{{'header.menu.my-community' | translate}}"> - <span class="icon-bg"> - <i class="ti ti-world"></i> - </span> - </a> - </span> - </div> - <!-- logo-area --> - - <ul class="nav navbar-nav toolbar pull-right"> - <li class="toolbar-icon-bg hidden-xs disabled"> - <a href="" title="{{'header.menu.ee' | translate}}"><span class="icon-bg"><i>{{'header.menu.ee' | translate}}</i></span></a> - </li> - - <li class="toolbar-icon-bg hidden-xs"> - <a href="#/models" title="{{'header.menu.ia' | translate}}"><span class="icon-bg"><i>{{'header.menu.ia' | translate}}</i></span></a> - </li> - - <li class="toolbar-icon-bg hidden-xs disabled"> - <a href="" title="{{'header.menu.bsd' | translate}}"><span class="icon-bg"><i>{{'header.menu.bsd' | translate}}</i></span></a> - </li> - - <li class="dropdown toolbar-icon-bg"> - <a href="#" class="dropdown-toggle username" data-toggle="dropdown" data-position="right"> - <img class="img-circle" ng-src="{{user.picture}}" alt="{{user.fullname}}"/> - </a> - <ul class="dropdown-menu userinfo arrow"> - <li><a href="#/profile"><i class="ti ti-user"></i><span>{{'header.menu.profile' | translate}}</span></a></li> - <li class="disabled"><a href=""><i class="ti ti-settings"></i><span>{{'header.menu.settings' | translate}}</span></a> - </li> - <li class="divider"></li> - <li><a href="" ng-click="logout()"><i class="ti ti-shift-right"></i><span>{{'header.menu.signout' | translate}}</span></a></li> - </ul> - </li> - <li class="toolbar-trigger toolbar-icon-bg"> - <a href="#/hbpapps" title="{{'header.menu.app' | translate}}"> - <span class="icon-bg"> - <i class="ti ti-layout-grid3-alt " style="font-family: 'themify';font-weight: normal;"></i> - </span> - </a> - </li> - </ul> - -</div> - +<div class="container-fluid"> + <div class="logo-area"> + + <a class="navbar-brand" href="#/home">Human Brain Project</a> + + <div class="toolbar-icon-bg hidden-xs" id="toolbar-search"> + <div class="input-group"> + <span class="input-group-btn"><button class="btn" type="button"><i class="ti ti-search"></i></button></span> + <input type="text" class="form-control" placeholder="{{ 'header.menu.search' | translate }}" size="25"> + </div> + </div> + <span id="trigger-sidebar" class="toolbar-trigger toolbar-icon-bg" ng-click="toggleLeftBar()" ng-show="!getLayoutOption('layoutHorizontal')"> + <a data-toggle="tooltips" data-placement="right" title="{{'header.menu.my-data' | translate}}" href="#/data/mydata"> + <span class="icon-bg"> + <i class="ti ti-menu"></i> + </span> + </a> + </span> + <span class="toolbar-trigger toolbar-icon-bg" > + <a href="#/data/communitydata" title="{{'header.menu.my-community' | translate}}"> + <span class="icon-bg"> + <i class="ti ti-world"></i> + </span> + </a> + </span> + </div> + <!-- logo-area --> + + <ul class="nav navbar-nav toolbar pull-right"> + <li class="toolbar-icon-bg hidden-xs disabled"> + <a href="" title="{{'header.menu.ee' | translate}}"><span class="icon-bg"><i>{{'header.menu.ee' | translate}}</i></span></a> + </li> + + <li class="toolbar-icon-bg hidden-xs"> + <a href="#/models" title="{{'header.menu.ia' | translate}}"><span class="icon-bg"><i>{{'header.menu.ia' | translate}}</i></span></a> + </li> + + <li class="toolbar-icon-bg hidden-xs disabled"> + <a href="" title="{{'header.menu.bsd' | translate}}"><span class="icon-bg"><i>{{'header.menu.bsd' | translate}}</i></span></a> + </li> + + <li class="dropdown toolbar-icon-bg"> + <a href="#" class="dropdown-toggle username" data-toggle="dropdown" data-position="right"> + <img class="img-circle" ng-src="{{user.picture}}" alt="{{user.fullname}}"/> + </a> + <ul class="dropdown-menu userinfo arrow"> + <li><a href="#/profile"><i class="ti ti-user"></i><span>{{'header.menu.profile' | translate}}</span></a></li> + <li class="disabled"><a href=""><i class="ti ti-settings"></i><span>{{'header.menu.settings' | translate}}</span></a> + </li> + <li class="divider"></li> + <li><a href="" ng-click="logout()"><i class="ti ti-shift-right"></i><span>{{'header.menu.signout' | translate}}</span></a></li> + </ul> + </li> + <li class="toolbar-trigger toolbar-icon-bg"> + <a href="#/hbpapps" title="{{'header.menu.app' | translate}}"> + <span class="icon-bg"> + <i class="ti ti-layout-grid3-alt " style="font-family: 'themify';font-weight: normal;"></i> + </span> + </a> + </li> + </ul> + +</div> + diff --git a/src/main/resources/static/frontend/app/scripts/app/login/login.html b/src/main/resources/static/frontend/app/scripts/app/login/login.html index 49be41e44..c89289efa 100644 --- a/src/main/resources/static/frontend/app/scripts/app/login/login.html +++ b/src/main/resources/static/frontend/app/scripts/app/login/login.html @@ -1,25 +1,25 @@ -<div class="container login-form"> - <a href="#" class="login-logo"><img masked-image src="images/logo-big.png"></a> - <div class="row"> - <div class="col-md-12"> - <div class="block-header block-login"> - <h3> </h3> - <h2>Login to HBP</h2> - - <button type="button" onclick="location.href='http://155.105.202.58:8080/login/hbp';" class="btn-round"> - <span> - <span>{{'login.title' | translate }}</span> - <i class="ti ti-arrow-down"></i> - </span> - </button> - - <a href="" class="forgot-pass">{{'login.forgot-password' | translate }}</a> - </form> - <ul> - <li>the human brain</li> - <li>project</li> - </ul> - </div> - </div> - </div> -</div> +<div class="container login-form"> + <a href="#" class="login-logo"><img masked-image src="images/logo-big.png"></a> + <div class="row"> + <div class="col-md-12"> + <div class="block-header block-login"> + <h3> </h3> + <h2>Login to HBP</h2> + + <button type="button" onclick="location.href='http://155.105.202.58:8080/login/hbp';" class="btn-round"> + <span> + <span>{{'login.title' | translate }}</span> + <i class="ti ti-arrow-down"></i> + </span> + </button> + + <a href="" class="forgot-pass">{{'login.forgot-password' | translate }}</a> + </form> + <ul> + <li>the human brain</li> + <li>project</li> + </ul> + </div> + </div> + </div> +</div> diff --git a/src/main/resources/static/frontend/app/scripts/app/users/users.service.js b/src/main/resources/static/frontend/app/scripts/app/users/users.service.js index 24f786e64..0dfcf039d 100644 --- a/src/main/resources/static/frontend/app/scripts/app/users/users.service.js +++ b/src/main/resources/static/frontend/app/scripts/app/users/users.service.js @@ -1,80 +1,80 @@ -/** - * Created by Florent PERINEL on 14/08/2015. - */ -'use strict'; - -angular.module('chuvApp.users') - .factory('User', ['$rootScope','backendUrl','$http','$cookieStore','base64', function ($rootScope,backendUrl,$http,$cookieStore,base64) { - - var datas = [ - { id: 1, login: "admin", password: "kitten", firstname: "Bogdan", lastname: "DRAGANSKI", fullname: "Bogdan DRAGANSKI", team: "Scientist", - picture: "images/users/Bogdan.jpg", web:"http://www.hbpproject.eu", email: "admin@hbpproject.eu", phone:"+33 6 00 00 00 00", birthday: "1982-01-22", gender:"Male", - languages:["French"], city:"Lausanne", country:"Switzerland" }, - - { id: 2, login: "l.dib", password: "user", firstname: "Linda", lastname: "DIB", fullname: "Linda DIB", team: "Scientist", - picture: "images/users/Linda.png", web:"http://www.hbpproject.eu", - email: "a.kiliaan@hbpproject.eu", phone:"+33 6 00 00 00 00", birthday: "1983-05-02", gender:"Female", - languages:["French","Netherlands"], city:"Nijmegen", country:"Netherlands" }, - - { id: 3, login: "llaursen", password: "poc", firstname: "Lucas", lastname: "LAURSEN", fullname: "Lucas LAURSEN", team: "Press", - picture: "images/users/llaursen.jpg", web:"http://www.hbpproject.eu", email: "llaursen@hbpproject.eu", phone:"06 00 00 00 00", birthday: "1982-05-10", gender:"Male", - languages:["French","Spanish"], city:"Madric", country:"Spain" } - ]; - - var currentUser = datas[0]; - - return { - - current: function () { - return $cookieStore.get('user'); - }, - hasCurrent : function(){ - return $cookieStore.get('user') !== null && $cookieStore.get('user') !== undefined; - }, - removeCurrent: function () { - return $cookieStore.remove('user'); - }, - - authenticate: function (login, password) { - currentUser = {username:login,password:password}; - var cString = login + ':' + password; - return $http.post(backendUrl+"/authenticate",currentUser,{ - headers:{ - 'Authorization':'Basic ' + base64.encode(cString) - } - }).success(function (response) { - $cookieStore.put('user',response); - return response; - } - ); - }, - - get: function (id) { - for (var idx in datas) { - if (datas.hasOwnProperty(idx) && datas[idx].id == id) { - return datas[idx]; - } - } - return null; - }, - - create: function (user) { - return user - }, - - update: function (user) { - return user - }, - - remove: function (id) { - for (var idx in datas) { - if (datas.hasOwnProperty(idx) && datas[idx].id == id) { - datas.splice(idx, 1); - return; - } - } - } - - }; - - }]); +/** + * Created by Florent PERINEL on 14/08/2015. + */ +'use strict'; + +angular.module('chuvApp.users') + .factory('User', ['$rootScope','backendUrl','$http','$cookieStore','base64', function ($rootScope,backendUrl,$http,$cookieStore,base64) { + + var datas = [ + { id: 1, login: "admin", password: "kitten", firstname: "Bogdan", lastname: "DRAGANSKI", fullname: "Bogdan DRAGANSKI", team: "Scientist", + picture: "images/users/Bogdan.jpg", web:"http://www.hbpproject.eu", email: "admin@hbpproject.eu", phone:"+33 6 00 00 00 00", birthday: "1982-01-22", gender:"Male", + languages:["French"], city:"Lausanne", country:"Switzerland" }, + + { id: 2, login: "l.dib", password: "user", firstname: "Linda", lastname: "DIB", fullname: "Linda DIB", team: "Scientist", + picture: "images/users/Linda.png", web:"http://www.hbpproject.eu", + email: "a.kiliaan@hbpproject.eu", phone:"+33 6 00 00 00 00", birthday: "1983-05-02", gender:"Female", + languages:["French","Netherlands"], city:"Nijmegen", country:"Netherlands" }, + + { id: 3, login: "llaursen", password: "poc", firstname: "Lucas", lastname: "LAURSEN", fullname: "Lucas LAURSEN", team: "Press", + picture: "images/users/llaursen.jpg", web:"http://www.hbpproject.eu", email: "llaursen@hbpproject.eu", phone:"06 00 00 00 00", birthday: "1982-05-10", gender:"Male", + languages:["French","Spanish"], city:"Madric", country:"Spain" } + ]; + + var currentUser = datas[0]; + + return { + + current: function () { + return $cookieStore.get('user'); + }, + hasCurrent : function(){ + return $cookieStore.get('user') !== null && $cookieStore.get('user') !== undefined; + }, + removeCurrent: function () { + return $cookieStore.remove('user'); + }, + + authenticate: function (login, password) { + currentUser = {username:login,password:password}; + var cString = login + ':' + password; + return $http.post(backendUrl+"/authenticate",currentUser,{ + headers:{ + 'Authorization':'Basic ' + base64.encode(cString) + } + }).success(function (response) { + $cookieStore.put('user',response); + return response; + } + ); + }, + + get: function (id) { + for (var idx in datas) { + if (datas.hasOwnProperty(idx) && datas[idx].id == id) { + return datas[idx]; + } + } + return null; + }, + + create: function (user) { + return user + }, + + update: function (user) { + return user + }, + + remove: function (id) { + for (var idx in datas) { + if (datas.hasOwnProperty(idx) && datas[idx].id == id) { + datas.splice(idx, 1); + return; + } + } + } + + }; + + }]); -- GitLab