From bf2019276929cdf5cf13459d2c023b62d34c9a61 Mon Sep 17 00:00:00 2001 From: Gianluca d'Agosta Date: Fri, 24 Jun 2022 12:18:41 +0200 Subject: [PATCH] Modifications on email sending due to new subject generation for users --- .../controller/MailController.java | 12 +-- .../controller/UserController.java | 78 +++++++++++++------ 2 files changed, 62 insertions(+), 28 deletions(-) diff --git a/src/main/java/it/enea/xlab/GECORegistration/controller/MailController.java b/src/main/java/it/enea/xlab/GECORegistration/controller/MailController.java index 4f55bcf..ad3753c 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/controller/MailController.java +++ b/src/main/java/it/enea/xlab/GECORegistration/controller/MailController.java @@ -70,8 +70,8 @@ public class MailController { throws IOException, TemplateException, MessagingException { Map templateModel1 = new HashMap(); - String subject = encryptionManager.encrypt(user.getEmail()); - + //String subject = encryptionManager.encrypt(user.getEmail()); + String subject = user.getSubject(); templateModel1.put("link", activationLink + subject); templateModel1.put("recipientName", user.getName() + " " + user.getSurname()); try { @@ -125,10 +125,10 @@ public class MailController { @RequestBody ActivateRequest request) throws IOException, TemplateException, MessagingException { log.info ("Subject: " + request.getSubject()); String subject = request.getSubject(); - if (subject.length() < 45) { subject = subject.concat("%");} //temporal workaround... - User user = userInterface.findUserBySubject(subject); - user.setActive(true); - userInterface.save(user); + //if (subject.length() < 45) { subject = subject.concat("%");} //temporal workaround... + User user = userInterface.findUserBySubject(subject); + user.setActive(true); + userInterface.save(user); if (user.getActive() == true) { return true; } else 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 be35fc4..4fcb63a 100644 --- a/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java +++ b/src/main/java/it/enea/xlab/GECORegistration/controller/UserController.java @@ -288,6 +288,18 @@ public class UserController { } + @ApiOperation(value = "Return a list of users from their email", response = User.class, tags = "") + @GetMapping("/userFromEmail") + public ResponseEntity getUserDTOFromEmail( + @ApiParam(name = "email", type = "String", value = "Subject string", example = "", required = true) @RequestParam("email") String email) { + + UserDto user = idpClientManager.getUser(email); + return new ResponseEntity(user, + // headers, + HttpStatus.CREATED); + } + + /** * Returns a user from the Subject code At the moment, it just extact * information about the user from the subject. It is not connected to the @@ -339,16 +351,53 @@ public class UserController { public ResponseEntity registerFromForm( @ApiParam(name = "user", type = "User", value = "User representation from theinput form", example = "", required = true) @RequestBody LocalUserDTO user) { - String subject = encryptionManager.encrypt(user.getEmail()); - if (subject.isEmpty()) { + /* + * Controllo che ci sia almeno la mail. + */ + if (user.getEmail().isEmpty()) { ResultMessage msg = new ResultMessage(false, "The user has not email" ); return new ResponseEntity(msg, HttpStatus.OK); } - User users = userInterface.findBySubject(subject); - if (users == null) { - User tmpUser = new User(); - tmpUser.setSubject(subject); + + /* + * Controllo se l'utente esiste gia' sui due DB o almeno su IDP + */ + + UserDto userIDP = idpClientManager.getUser(user.getEmail()); + +// User users = userInterface.findBySubject(userIDP.getUuid()); + if (userIDP == null) { + /* + * L'utente non esiste su IDP e quindi posso procedere alla registrazione + * prima su IDP per ottenere il subject + */ + + UserDto uDto = new UserDto(); + uDto.setEmail(user.getEmail()); + uDto.setName(user.getName()); + uDto.setSurname(user.getSurname()); + uDto.setPassword(user.getPassword()); + uDto.setPasswordConfirm(user.getPassword()); + uDto.setEmailConfirmed(true); + uDto.setRole("Citizen"); + uDto.setOrganization("EnergyCommunity"); + Boolean registerdonIDP = idpClientManager.createUser(uDto); + if (!registerdonIDP) { + log.info("Error on registering on IDP"); + ResultMessage msg = new ResultMessage(false, "Error on registering on IDP" ); + return new ResponseEntity(msg, HttpStatus.OK); + }else { + uDto= idpClientManager.getUser(uDto.getEmail()); + } + + /* + * Adesso creo l'utente locale con le informazioni e le comunita'. + */ + + User tmpUser = new User(); + tmpUser.setSubject(uDto.getUuid()); + user.setSubject(uDto.getUuid()); // Inserisco le comunita for (CommunityDTO cDto : user.getUsercommunities()) { Community c = communityInterface.findByCommunityid(cDto.getCommunityid()); @@ -372,22 +421,7 @@ public class UserController { user.setUserid(tmpUser.getUserid()); - UserDto uDto = new UserDto(); - uDto.setEmail(user.getEmail()); - uDto.setName(user.getName()); - uDto.setSurname(user.getSurname()); - uDto.setPassword(user.getPassword()); - uDto.setPasswordConfirm(user.getPassword()); - uDto.setEmailConfirmed(true); - uDto.setRole("Citizen"); - uDto.setOrganization("EnergyCommunity"); - - Boolean registerdonIDP = idpClientManager.createUser(uDto); - if (!registerdonIDP) { - log.info("Error on registering on IDP"); - ResultMessage msg = new ResultMessage(false, "Error on registering on IDP" ); - return new ResponseEntity(msg, HttpStatus.OK); - } + } else { log.info("User with email " + user.getEmail() + " already exists"); -- GitLab