diff --git a/config/application.yml b/config/application.yml index c70467fcc6e7f032ec8bcb7ade6e39d8c4039a02..da656fbf35652e4ed0c629b933f308e21c9a22ec 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 5c2e951fa8e9641554b52a88bdc928199e98a0fd..4c4d911fbe721d8cc28c28e2d0fbe764f1ec19bc 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 cbfddbb67f951e5a73728b884d2e6f18ee0b47e9..e280d1732a7af3cb13fddf50ddf3719063e00feb 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 1d03600cf7969d219da68cf2b4e91cb0a463b687..9a70a4829a6735858b48b5003d067ced44ffe7fc 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 59681d143ded7134c01862d5af1cbc61442143d3..11e2f817135cff483321b9dd16cb3836f50e53d4 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 0bbe660d12b82c1edda94e20983cfc2b22ab3c1d..2d9c99dd8df7d7a2bfbcf4b095aaecc3be84f983 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 e2f549d04375a1abd574dfd2d7ddfdf6c870fa14..93cf4f98104a945b14d8689c182f0bbf12aec16e 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 7eef8445fce729c7e75e97d930fe7e139c43b0d5..9d283991f37a1e72277f9b85d8905b9f45725da8 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>