From 854466dd0756ceba28c8fdf27cb8b9c38f4667e6 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Wed, 9 Dec 2015 16:43:40 +0100 Subject: [PATCH] user data --- src/main/java/org/hbp/mip/MIPApplication.java | 51 ++++++++++--------- src/main/java/org/hbp/mip/model/User.java | 38 ++++++++++++-- 2 files changed, 60 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index addb1853e..0b1ff5c70 100644 --- a/src/main/java/org/hbp/mip/MIPApplication.java +++ b/src/main/java/org/hbp/mip/MIPApplication.java @@ -75,33 +75,9 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { @RequestMapping("/user") @ResponseBody public Principal user(Principal principal) { - OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication(); - Authentication userAuthentication = oAuth2Authentication.getUserAuthentication(); - System.out.println("##############################"); - System.out.println(userAuthentication.getDetails()); - System.out.println("##############################"); - return principal; } - private User principalToUser(Principal principal) { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from User where username= :username"); - query.setString("username", principal.getName()); - User user = (User) query.uniqueResult(); - session.getTransaction().commit(); - if(user == null) - { - session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - user = new User(principal); - session.save(user); - session.getTransaction().commit(); - } - return user; - } - @RequestMapping(value = "/articles", method = RequestMethod.GET) @ResponseBody public List<Article> getArticles() { @@ -161,7 +137,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { @RequestMapping(value = "/articles", method = RequestMethod.POST) @ResponseBody public Article postArticle(@RequestBody Article article, Principal principal) { - User user = principalToUser(principal); + User user = getUser(principal); Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); article.setCreatedAt(new Date()); @@ -327,4 +303,29 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { return repository; } + private String getUserInfos() { + OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication(); + Authentication userAuthentication = oAuth2Authentication.getUserAuthentication(); + System.out.println(userAuthentication.getDetails().toString()); + return userAuthentication.getDetails().toString(); + } + + private User getUser(Principal principal) { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + session.beginTransaction(); + org.hibernate.Query query = session.createQuery("from User where username= :username"); + query.setString("username", principal.getName()); + User user = (User) query.uniqueResult(); + session.getTransaction().commit(); + if(user == null) + { + session = HibernateUtil.getSessionFactory().getCurrentSession(); + session.beginTransaction(); + user = new User(getUserInfos()); + session.save(user); + session.getTransaction().commit(); + } + return user; + } + } diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java index 5e3290a73..caf859ff5 100644 --- a/src/main/java/org/hbp/mip/model/User.java +++ b/src/main/java/org/hbp/mip/model/User.java @@ -5,9 +5,10 @@ package org.hbp.mip.model; import javax.persistence.*; -import java.security.Principal; import java.util.LinkedList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Entity @Table(name = "user_mip") @@ -39,10 +40,39 @@ public class User { public User() { } - public User(Principal principal) + public User(String userInfo) { - this.username = principal.getName(); - this.fullname = this.username; + Pattern p; + Matcher m; + + p = Pattern.compile("username=([\\w ]+)"); + m = p.matcher(userInfo); + if (m.find()) { + System.out.println(m.group(1)); + this.username = m.group(1); + } + + p = Pattern.compile("displayName=([\\w ]+)"); + m = p.matcher(userInfo); + if (m.find()) { + System.out.println(m.group(1)); + this.fullname = m.group(1); + } + + p = Pattern.compile("givenName=([\\w ]+)"); + m = p.matcher(userInfo); + if (m.find()) { + System.out.println(m.group(1)); + this.firstname = m.group(1); + } + + p = Pattern.compile("familyName=([\\w ]+)"); + m = p.matcher(userInfo); + if (m.find()) { + System.out.println(m.group(1)); + this.lastname = m.group(1); + } + } public Long getId() { -- GitLab