From 846e85a8c1f3fc7e8408d223a082e1ff0f6b5f1e Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Thu, 3 Mar 2016 11:44:40 +0100 Subject: [PATCH] use new user-endpoint + fixed indentation + fixed bug 500 on get /user --- config/application.yml | 2 +- src/main/java/org/hbp/mip/MIPApplication.java | 30 ++++++++++++------- .../org/hbp/mip/controllers/ArticlesApi.java | 12 +++++--- .../org/hbp/mip/controllers/DatasetsApi.java | 3 +- .../org/hbp/mip/controllers/GroupsApi.java | 3 +- .../org/hbp/mip/controllers/ModelsApi.java | 9 ++++-- src/main/java/org/hbp/mip/model/User.java | 15 +++++----- .../resources/spring/application-context.xml | 2 +- 8 files changed, 48 insertions(+), 28 deletions(-) diff --git a/config/application.yml b/config/application.yml index c70467fcc..da656fbf3 100644 --- a/config/application.yml +++ b/config/application.yml @@ -20,7 +20,7 @@ hbp: # use-current-uri: false # For production server # pre-established-redirect-uri: https://mip.humanbrainproject.eu/services/login/hbp # For production server resource: - userInfoUri: https://services.humanbrainproject.eu/oidc/v0/api/user/me + userInfoUri: https://services.humanbrainproject.eu/oidc/userinfo logging: level: diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index 5c2e951fa..4c4d911fb 100644 --- a/src/main/java/org/hbp/mip/MIPApplication.java +++ b/src/main/java/org/hbp/mip/MIPApplication.java @@ -126,16 +126,26 @@ public static void main(String[] args) { */ public synchronized User getUser(Principal principal) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - User user = (User) session - .createQuery("from User where username= :username") - .setString("username", principal.getName()) - .uniqueResult(); - if (user == null) { - user = new User(getUserInfos()); - session.save(user); - } - session.getTransaction().commit(); + User user = null; + try { + session.beginTransaction(); + user = (User) session + .createQuery("from User where username= :username") + .setString("username", principal.getName()) + .uniqueResult(); + if (user == null) { + user = new User(getUserInfos()); + session.save(user); + } + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } + return user; } diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index cbfddbb67..e280d1732 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -93,7 +93,8 @@ public class ArticlesApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<List<Article>>(HttpStatus.OK).ok(articles); } @@ -129,7 +130,8 @@ public class ArticlesApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Void>(HttpStatus.OK); } @@ -156,7 +158,8 @@ public class ArticlesApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Article>(HttpStatus.OK).ok(article); } @@ -185,7 +188,8 @@ public class ArticlesApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Void>(HttpStatus.OK); } diff --git a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java index 1d03600cf..9a70a4829 100644 --- a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java +++ b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java @@ -45,7 +45,8 @@ public class DatasetsApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Dataset>(HttpStatus.OK).ok(dataset); } diff --git a/src/main/java/org/hbp/mip/controllers/GroupsApi.java b/src/main/java/org/hbp/mip/controllers/GroupsApi.java index 59681d143..11e2f8171 100644 --- a/src/main/java/org/hbp/mip/controllers/GroupsApi.java +++ b/src/main/java/org/hbp/mip/controllers/GroupsApi.java @@ -43,7 +43,8 @@ public class GroupsApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Group>(HttpStatus.OK).ok(group); } diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index 0bbe660d1..2d9c99dd8 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -127,7 +127,8 @@ public class ModelsApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Model>(HttpStatus.OK).ok(model); } @@ -203,7 +204,8 @@ public class ModelsApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } } return new ResponseEntity<Model>(HttpStatus.OK).ok(model); @@ -233,7 +235,8 @@ public class ModelsApi { if(session.getTransaction() != null) { session.getTransaction().rollback(); - } } + } + } return new ResponseEntity<Void>(HttpStatus.OK); } diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java index e2f549d04..93cf4f981 100644 --- a/src/main/java/org/hbp/mip/model/User.java +++ b/src/main/java/org/hbp/mip/model/User.java @@ -47,34 +47,35 @@ public class User { } public User(String userInfo) { + Pattern p; Matcher m; - p = Pattern.compile("username=([\\w ]+)"); + p = Pattern.compile("preferred_username=([\\w ]+)"); m = p.matcher(userInfo); if (m.find()) { this.username = m.group(1); } - p = Pattern.compile("displayName=([\\w ]+)"); + p = Pattern.compile("name=([\\w ]+)"); m = p.matcher(userInfo); if (m.find()) { this.fullname = m.group(1); } - p = Pattern.compile("givenName=([\\w ]+)"); + p = Pattern.compile("given_name=([\\w ]+)"); m = p.matcher(userInfo); if (m.find()) { this.firstname = m.group(1); } - p = Pattern.compile("familyName=([\\w ]+)"); + p = Pattern.compile("family_name=([\\w ]+)"); m = p.matcher(userInfo); if (m.find()) { this.lastname = m.group(1); } - p = Pattern.compile("value=([\\w.]+@[\\w.]+)"); + p = Pattern.compile("email=([\\w.]+@[\\w.]+)"); m = p.matcher(userInfo); if (m.find()) { this.email = m.group(1); @@ -96,10 +97,10 @@ public class User { this.team = m.group(1); } - p = Pattern.compile("subprojects=([A-Za-z0-9\\[\\] ]+)"); + p = Pattern.compile("picture=([\\w.:/ ]+)"); m = p.matcher(userInfo); if (m.find()) { - this.team += m.group(1); + this.picture = m.group(1); } if (this.picture == null || this.picture.isEmpty()) { diff --git a/src/main/resources/spring/application-context.xml b/src/main/resources/spring/application-context.xml index 7eef8445f..9d283991f 100644 --- a/src/main/resources/spring/application-context.xml +++ b/src/main/resources/spring/application-context.xml @@ -27,7 +27,7 @@ <property name="tokenServices"> <bean class="org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoTokenServices"> <constructor-arg name="clientId" value="996f97c5-a3ca-460e-b18b-00df3e2be89a" /> - <constructor-arg name="userInfoEndpointUrl" value="https://services.humanbrainproject.eu/oidc/v0/api/user/me" /> + <constructor-arg name="userInfoEndpointUrl" value="https://services.humanbrainproject.eu/oidc/userinfo" /> </bean> </property> </bean> -- GitLab