diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index addb1853e6bf8cc48b6759464963583e119f1da4..0b1ff5c70503cc0c3206d786259bfcec3432b59f 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 5e3290a73ada547b40e8c577d7ca39110092857d..caf859ff5e5835f57efefc3761f0a3215a3bf53a 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() {