From 889397bdc28e3e62d7484409612b26c35f8d9002 Mon Sep 17 00:00:00 2001 From: Gianluca d'Agosta Date: Fri, 8 Oct 2021 16:44:49 +0200 Subject: [PATCH] Moving to production DB --- .../controller/DataController.java | 3 +- .../controller/UserController.java | 41 +++++++++++++++++-- .../entity/data/AdmittedQueryValues.java | 2 +- .../entity/data/LocalQueryParameter.java | 22 +++++----- .../entity/data/ParametricQuery.java | 6 +-- .../IdpClientManagerCached.java | 22 ++++++---- .../resources/application-test.properties | 32 +++++++++++---- src/main/resources/application.properties | 30 ++++++++++---- ...ecoRegistrationSpringApplicationTests.java | 37 ++++++++++------- 9 files changed, 138 insertions(+), 57 deletions(-) diff --git a/src/main/java/it/enea/xlab/GECORegistration/controller/DataController.java b/src/main/java/it/enea/xlab/GECORegistration/controller/DataController.java index f6a8411..f86e85d 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/controller/DataController.java +++ b/src/main/java/it/enea/xlab/GECORegistration/controller/DataController.java @@ -144,9 +144,10 @@ public class DataController { { List data = pqueryInterface.findAll(); List tmdata; + List> parameterMetadata = new ArrayList>(); List list = null; for (ParametricQuery pq : data) { - List> parameterMetadata = new ArrayList>(); + parameterMetadata = new ArrayList>(); Map> resultList = pqm.getResultList(pq); for (String key : resultList.keySet()) { diff --git a/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java b/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java index 34ad3a9..8436ee3 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java +++ b/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java @@ -449,7 +449,7 @@ public class UserController { return new ResponseEntity(new User(), HttpStatus.FORBIDDEN); } String subject = encryptionManager.encrypt(userdto.getEmail()); - User user = getUserFromSubject(subject).getBody(); + User user = userInterface.findBySubject(subject); //getUserFromSubject(subject).getBody(); if (user == null) { log.info("Used does not exist on local DB"); return new ResponseEntity(new User(), HttpStatus.FORBIDDEN); @@ -494,8 +494,9 @@ public class UserController { @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 403, message = "Token not valid"), @ApiResponse(code = 500, message = "Token is null") }) - ResponseEntity checkToken( - @ApiParam(name = "token", type = "String", value = "The user's token", example = "", required = true) @RequestParam String token) { + ResponseEntity checkToken( + @ApiParam(name = "token", type = "String", value = "The user's token", example = "", required = true) + @RequestHeader(name = "Authorization", required=false) String token) { if (token == null || token == "") { log.info("Token is empty"); return new ResponseEntity(false, HttpStatus.INTERNAL_SERVER_ERROR); @@ -557,6 +558,40 @@ public class UserController { } + @ApiOperation(value = "Check if the token is valid and return the user", response = Boolean.class, tags = "") + @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), + @ApiResponse(code = 403, message = "Token not valid or access forbidden"), + @ApiResponse(code = 500, message = "Token is null") }) + @PostMapping("/user/getUserIdFromToken") + ResponseEntity getUserFromIdToken( + @ApiParam(name = "token", type = "String", value = "The user's ID-Provider token", example = "", required = true) + @RequestHeader(name = "Authorization", required=true) String token) { + User result = new User(); + + if (token == null || token == "") { + log.info("Token is empty"); + return new ResponseEntity(0, HttpStatus.INTERNAL_SERVER_ERROR); + } + UserDto userdto = idpClientManager.getUserFromToken(token); + + if (userdto == null) { + log.info("User not found on ID-Provider - Token is not valid"); + + return new ResponseEntity(0, HttpStatus.FORBIDDEN); + } + String subject = encryptionManager.encrypt(userdto.getEmail()); + User user = getUserFromSubject(subject).getBody(); + if (user == null) { + log.info("User not found on local DB"); + + return new ResponseEntity(0, HttpStatus.FORBIDDEN); + } + user.mergeWithDto(userdto); + + return new ResponseEntity(user.getUserid().intValue(), HttpStatus.OK); + + } + @ApiOperation(value = "List the devices associated to a user", response = Boolean.class, tags = "") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), diff --git a/src/main/java/it/enea/xlab/GECORegistration/entity/data/AdmittedQueryValues.java b/src/main/java/it/enea/xlab/GECORegistration/entity/data/AdmittedQueryValues.java index f9c884c..26ebb26 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/entity/data/AdmittedQueryValues.java +++ b/src/main/java/it/enea/xlab/GECORegistration/entity/data/AdmittedQueryValues.java @@ -14,7 +14,7 @@ import lombok.Getter; import lombok.Setter; @Entity (name = "admittedqueryvalues") -@Table(name = "t_admittedqueryvalues") +@Table(name = "cruise.t_admittedqueryvalues") @Getter @Setter public class AdmittedQueryValues { diff --git a/src/main/java/it/enea/xlab/GECORegistration/entity/data/LocalQueryParameter.java b/src/main/java/it/enea/xlab/GECORegistration/entity/data/LocalQueryParameter.java index 8efa385..88ed447 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/entity/data/LocalQueryParameter.java +++ b/src/main/java/it/enea/xlab/GECORegistration/entity/data/LocalQueryParameter.java @@ -3,6 +3,7 @@ package it.enea.xlab.GECORegistration.entity.data; import java.util.List; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -17,15 +18,16 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @Entity (name = "localqueryparameter") -@Table (name= "localqueryparameters") +@Table (name= "cruise.localqueryparameters") public class LocalQueryParameter { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name="localqueryparameterid") private Long paramId; - @JsonIgnore - private Long queryid; + //@JsonIgnore + //private Long queryid; private String description; @@ -54,13 +56,13 @@ public class LocalQueryParameter { this.paramId = paramId; } - public Long getQueryid() { - return queryid; - } - - public void setQueryid(Long queryid) { - this.queryid = queryid; - } +// public Long getQueryid() { +// return queryid; +// } +// +// public void setQueryid(Long queryid) { +// this.queryid = queryid; +// } public String getDescription() { return description; diff --git a/src/main/java/it/enea/xlab/GECORegistration/entity/data/ParametricQuery.java b/src/main/java/it/enea/xlab/GECORegistration/entity/data/ParametricQuery.java index 78b82d2..cf59477 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/entity/data/ParametricQuery.java +++ b/src/main/java/it/enea/xlab/GECORegistration/entity/data/ParametricQuery.java @@ -28,7 +28,7 @@ import lombok.Setter; @Entity (name = "parametricquery") -@Table (name = "parametricquery") +@Table (name = "cruise.parametricquery") @Getter @Setter public class ParametricQuery { @@ -48,7 +48,7 @@ public class ParametricQuery { @ManyToMany @JoinTable( - name = "queries_parameters", + name = "cruise.queries_parameters", joinColumns = @JoinColumn (name = "queryid"), inverseJoinColumns = @JoinColumn(name = "paramid")) @@ -60,7 +60,7 @@ public class ParametricQuery { @ManyToMany @JoinTable( - name = "queries_admittedqueryvalues", + name = "cruise.queries_admittedqueryvalues", joinColumns = @JoinColumn (name = "queryid"), inverseJoinColumns = @JoinColumn(name = "admittedqueryvalueid")) private List admittedqueryvalues; diff --git a/src/main/java/it/enea/xlab/GECORegistration/identityManager/IdpClientManagerCached.java b/src/main/java/it/enea/xlab/GECORegistration/identityManager/IdpClientManagerCached.java index 4fd2a32..47add64 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/identityManager/IdpClientManagerCached.java +++ b/src/main/java/it/enea/xlab/GECORegistration/identityManager/IdpClientManagerCached.java @@ -1,18 +1,22 @@ package it.enea.xlab.GECORegistration.identityManager; import java.util.List; -import java.util.Map; -import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; import it.enea.scp.idp.sdk.model.UserDto; import it.enea.xlab.GECORegistration.entity.user.User; +import lombok.extern.log4j.Log4j2; //@Service +@Log4j2 public class IdpClientManagerCached extends IdpClientManager implements IIdpClientManager { - private Map usersList; + + @Autowired + IdpClientManager idpClientManager; @Override public String getTokenFromUsernameAndPassword(String username, String password) { @@ -21,10 +25,12 @@ public class IdpClientManagerCached extends IdpClientManager implements IIdpClie } @Override + //@Cacheable(value="users", key="#username") public User login(String username, String password) { + log.info("logging"); + return super.login(username, password); // TODO Auto-generated method stub - return null; - } + } @Override public boolean logout(String token) { @@ -63,9 +69,11 @@ public class IdpClientManagerCached extends IdpClientManager implements IIdpClie } @Override + @Cacheable(value="users",key="#token") public UserDto getUserFromToken(String token) { - // TODO Auto-generated method stub - return null; + log.info("getting user with token: " + token); + return super.getUserFromToken(token); + } @Override diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index 0ea5fb5..cd62c5c 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -19,23 +19,37 @@ spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy ## PostgreSQL #Test - -spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.user-datasource-idp.url=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.user-datasource-idp.username=selfuser -spring.user-datasource-idp.password=selfuser +spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.user-datasource-idp.hikari.url=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.user-datasource-idp.username=dagosta +spring.user-datasource-idp.password=D@go037A spring.user-datasource-idp.driver-class-name=org.postgresql.Driver spring.user-datasource-idp.maximumPoolSize=2 spring.user-datasource-idp.minimumIdle=1 -spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.data-datasource-idp.hikari.url=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.data-datasource-idp.username=selfuser -spring.data-datasource-idp.password=selfuser +#spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.user-datasource-idp.url=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.user-datasource-idp.username=selfuser +#spring.user-datasource-idp.password=selfuser +#spring.user-datasource-idp.driver-class-name=org.postgresql.Driver +#spring.user-datasource-idp.maximumPoolSize=2 +#spring.user-datasource-idp.minimumIdle=1 + +#spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.data-datasource-idp.hikari.url=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.data-datasource-idp.username=selfuser +#spring.data-datasource-idp.password=selfuser +#spring.data-datasource-idp.driver-class-name=org.postgresql.Driver +#spring.data-datasource-idp.maximumPoolSize=2 +#spring.data-datasource-idp.minimumIdle=1 +spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.data-datasource-idp.hikari.url=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.data-datasource-idp.username=cruise +spring.data-datasource-idp.password=crU1s&& spring.data-datasource-idp.driver-class-name=org.postgresql.Driver spring.data-datasource-idp.maximumPoolSize=2 spring.data-datasource-idp.minimumIdle=1 - #spring.jpa.show-sql=true logging.level.org.hibernate.SQL=INFO #logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4eb4604..e326a39 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -20,18 +20,32 @@ spring.data-datasource-idp.hikari.maximumPoolSize=5 spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy ## PostgreSQL -spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.user-datasource-idp.username=selfuser -spring.user-datasource-idp.password=selfuser -spring.user-datasource-idp.max-active=1 +spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.user-datasource-idp.hikari.url=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.user-datasource-idp.username=dagosta +spring.user-datasource-idp.password=D@go037A spring.user-datasource-idp.driver-class-name=org.postgresql.Driver +spring.user-datasource-idp.maximumPoolSize=2 +#spring.user-datasource-idp.minimumIdle=1 +#spring.user-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.user-datasource-idp.username=selfuser +#spring.user-datasource-idp.password=selfuser +#spring.user-datasource-idp.max-active=1 +#spring.user-datasource-idp.driver-class-name=org.postgresql.Driver -spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser -spring.data-datasource-idp.username=selfuser -spring.data-datasource-idp.password=selfuser -spring.data-datasource-idp.max-active=1 +#spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://winter.bologna.enea.it:5432/selfuser +#spring.data-datasource-idp.username=selfuser +#spring.data-datasource-idp.password=selfuser +#spring.data-datasource-idp.max-active=1 +#spring.data-datasource-idp.driver-class-name=org.postgresql.Driver + +spring.data-datasource-idp.jdbcUrl=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.data-datasource-idp.hikari.url=jdbc:postgresql://datacollector.bologna.enea.it:5432/selfuser +spring.data-datasource-idp.username=cruise +spring.data-datasource-idp.password=crU1s&& spring.data-datasource-idp.driver-class-name=org.postgresql.Driver +spring.data-datasource-idp.maximumPoolSize=1 #spring.jpa.show-sql=true #logging.level.org.hibernate.SQL=DEBUG diff --git a/src/test/java/it/enea/xlab/GECORegistration/GecoRegistrationSpringApplicationTests.java b/src/test/java/it/enea/xlab/GECORegistration/GecoRegistrationSpringApplicationTests.java index ace4bad..00c9758 100644 --- a/src/test/java/it/enea/xlab/GECORegistration/GecoRegistrationSpringApplicationTests.java +++ b/src/test/java/it/enea/xlab/GECORegistration/GecoRegistrationSpringApplicationTests.java @@ -28,6 +28,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultHandlers. import it.enea.xlab.GECORegistration.controller.UserController; import it.enea.xlab.GECORegistration.entity.user.User; import it.enea.xlab.GECORegistration.identityManager.IEncryptionManager; +import it.enea.xlab.GECORegistration.identityManager.IIdpClientManager; import it.enea.xlab.GECORegistration.identityManager.IdpClientManager; import it.enea.scp.idp.sdk.model.UserDto; @@ -66,7 +67,7 @@ class GecoRegistrationSpringApplicationTests { private MockMvc mvc; @Autowired - IdpClientManager idpClientManager; + IIdpClientManager idpClientManager; @Autowired IEncryptionManager encryptionManager; @@ -282,6 +283,21 @@ class GecoRegistrationSpringApplicationTests { .andDo(handler) .andDo(print()); + + mvc.perform( + post("/user/getUserIdFromToken") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", token)) + .andExpect(status().isOk()) + .andDo(print()); + + mvc.perform( + post("/user/isTokenValid") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", token)) + .andExpect(status().isOk()) + .andDo(print()); + mvc.perform( post("/data/getListOfFunctions") .contentType(MediaType.APPLICATION_JSON) @@ -311,7 +327,7 @@ class GecoRegistrationSpringApplicationTests { // .andDo(print()); String content ="{" - + "\"communityid\": 4,\n" + + "\"communityid\": 2,\n" + " \"queryid\":2,\n" + "\" endDate\": \"2021-09-22 23:59:59\",\n" + "\" startDate\":\"2021-09-22 00:00:00\"\n" @@ -329,7 +345,7 @@ class GecoRegistrationSpringApplicationTests { //.andExpect(jsonPath("$.result", greaterThan(2))) .andDo(print()); - content ="{\"communityid\": 4,\n" + content ="{\"communityid\": 2,\n" + " \"queryid\":1,\n" + "\" maxValue\": \"3000\",\n" + "\" minValue\":\"0\"\n" @@ -345,7 +361,7 @@ class GecoRegistrationSpringApplicationTests { .andExpect(status().isOk()) .andDo(print()); - content ="{\"communityid\": 4,\n" + content ="{\"communityid\": 2,\n" + " \"queryid\":5,\n" + "\" endDate\": \"2021-09-22 23:59:59\",\n" + "\" startDate\":\"2021-09-21 00:00:00\"\n" @@ -360,7 +376,7 @@ class GecoRegistrationSpringApplicationTests { .andExpect(status().isOk()) .andDo(print()); - content ="{\"communityid\": 4,\n" + content ="{\"communityid\": 2,\n" + " \"queryid\":2,\n" + "\" endDate\": \"2021-09-22 23:59:59\",\n" + "\" startDate\":\"2021-09-21 00:00:00\"\n" @@ -376,7 +392,7 @@ class GecoRegistrationSpringApplicationTests { .andExpect(status().isOk()) .andDo(print()); - content ="{\"communityid\": 4,\n" + content ="{\"communityid\": 2,\n" + " \"queryid\":6\n" + "}"; @@ -389,15 +405,6 @@ class GecoRegistrationSpringApplicationTests { .andExpect(status().isOk()) .andDo(print()); - - - // mvc.perform( - // post("/user/getDevices") - // .contentType(MediaType.APPLICATION_JSON) - // .param("token", token)) - // .andExpect(status().isOk()) - // .andDo(print()); - content ="{\"queryid\":4\n" + "}"; -- GitLab