From 17d97bb3b3a2470764de32b074da3ade8fb73f05 Mon Sep 17 00:00:00 2001 From: amentis Date: Wed, 10 Jan 2024 17:46:45 +0200 Subject: [PATCH] add inapp notification events in main app --- .../model/persist/UserRequestPersist.java | 78 +++++++++++++++++++ .../description/DescriptionServiceImpl.java | 51 ++++++------ .../DescriptionTemplateServiceImpl.java | 8 +- .../eu/eudat/service/dmp/DmpServiceImpl.java | 56 +++++++------ .../eu/eudat/service/user/UserService.java | 5 +- .../eudat/service/user/UserServiceImpl.java | 38 ++++++--- .../eudat/controllers/v2/UserController.java | 33 ++++---- 7 files changed, 191 insertions(+), 78 deletions(-) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/persist/UserRequestPersist.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserRequestPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserRequestPersist.java new file mode 100644 index 000000000..5c3b4dbd0 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/UserRequestPersist.java @@ -0,0 +1,78 @@ +package eu.eudat.model.persist; + +import eu.eudat.commons.validation.BaseValidator; +import eu.eudat.commons.validation.ValidatorFactory; +import eu.eudat.commons.validation.specification.Specification; +import eu.eudat.convention.ConventionService; +import eu.eudat.errorcode.ErrorThesaurusProperties; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Scope; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +public class UserRequestPersist { + + private UUID userId; + public static final String _userId = "userId"; + + private String email; + public static final String _email = "email"; + + public UUID getUserId() { + return userId; + } + + public void setUserId(UUID userId) { + this.userId = userId; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Component(UserRequestPersistValidator.ValidatorName) + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public static class UserRequestPersistValidator extends BaseValidator { + + public static final String ValidatorName = "UserRequestPersistValidator"; + + private final MessageSource messageSource; + + private final ValidatorFactory validatorFactory; + + protected UserRequestPersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource, ValidatorFactory validatorFactory) { + super(conventionService, errors); + this.messageSource = messageSource; + this.validatorFactory = validatorFactory; + } + + @Override + protected Class modelClass() { + return UserRequestPersist.class; + } + + @Override + protected List specifications(UserRequestPersist item) { + return Arrays.asList( + this.spec() + .must(() -> this.isValidGuid(item.getUserId())) + .failOn(UserRequestPersist._userId).failWith(messageSource.getMessage("Validation_Required", new Object[]{UserRequestPersist._userId}, LocaleContextHolder.getLocale())), + + this.spec() + .must(() -> !this.isEmpty(item.getEmail())) + .failOn(UserRequestPersist._email).failWith(messageSource.getMessage("Validation_Required", new Object[]{UserRequestPersist._email}, LocaleContextHolder.getLocale())) + ); + } + } + +} + diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index 2d16b5796..7d2ddbb87 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -217,34 +217,39 @@ public class DescriptionServiceImpl implements DescriptionService { if (!dmpUser.getUserId().equals(this.userScope.getUserIdSafe())){ UserEntity user = this.queryFactory.query(UserQuery.class).ids(dmpUser.getUserId()).first(); if (user != null){ - NotificationIntegrationEvent event = new NotificationIntegrationEvent(); - event.setUserId(this.userScope.getUserId()); - - UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(user.getId()); - query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal)); - - List contactPairs = new ArrayList<>(); - contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue())); - NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); - event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); - - event = this.applyNotificationType(description.getStatus(), event); - NotificationFieldData data = new NotificationFieldData(); - List fieldInfoList = new ArrayList<>(); - fieldInfoList.add(new FieldInfo("{recipient}", DataType.String, user.getName())); - fieldInfoList.add(new FieldInfo("{reasonName}", DataType.String, this.queryFactory.query(UserQuery.class).ids(this.userScope.getUserId()).first().getName())); - fieldInfoList.add(new FieldInfo("{name}", DataType.String, description.getLabel())); - fieldInfoList.add(new FieldInfo("{id}", DataType.String, description.getId().toString())); - data.setFields(fieldInfoList); - event.setData(jsonHandlingService.toJsonSafe(data)); - - eventHandler.handle(event); + this.createDescriptionNotificationEvent(description, user, NotificationContactType.EMAIL); + this.createDescriptionNotificationEvent(description, user, NotificationContactType.IN_APP); } } } } + private void createDescriptionNotificationEvent(DescriptionEntity description, UserEntity user, NotificationContactType type) throws InvalidApplicationException { + NotificationIntegrationEvent event = new NotificationIntegrationEvent(); + event.setUserId(this.userScope.getUserId()); + + UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(user.getId()); + query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal)); + + List contactPairs = new ArrayList<>(); + contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue())); + NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); + event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); + event.setContactTypeHint(type); + + event = this.applyNotificationType(description.getStatus(), event); + NotificationFieldData data = new NotificationFieldData(); + List fieldInfoList = new ArrayList<>(); + fieldInfoList.add(new FieldInfo("{recipient}", DataType.String, user.getName())); + fieldInfoList.add(new FieldInfo("{reasonName}", DataType.String, this.queryFactory.query(UserQuery.class).ids(this.userScope.getUserId()).first().getName())); + fieldInfoList.add(new FieldInfo("{name}", DataType.String, description.getLabel())); + fieldInfoList.add(new FieldInfo("{id}", DataType.String, description.getId().toString())); + data.setFields(fieldInfoList); + event.setData(jsonHandlingService.toJsonSafe(data)); + + eventHandler.handle(event); + } + private NotificationIntegrationEvent applyNotificationType(DescriptionStatus status, NotificationIntegrationEvent event) { switch (status) { case Draft: diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java index eea650f6e..570605017 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/descriptiontemplate/DescriptionTemplateServiceImpl.java @@ -227,7 +227,8 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic data.setUserId(user.getUserId()); data.setRole(user.getRole()); this.entityManager.persist(data); - this.sendJoinMail(data); + this.sendDescriptionTemplateInvitationEvent(data, NotificationContactType.EMAIL); + this.sendDescriptionTemplateInvitationEvent(data, NotificationContactType.IN_APP); } updatedCreatedIds.add(data.getId()); } @@ -236,7 +237,7 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic this.deleterFactory.deleter(UserDescriptionTemplateDeleter.class).delete(toDelete); } - private void sendJoinMail(UserDescriptionTemplateEntity userDescriptionTemplate) throws InvalidApplicationException { + private void sendDescriptionTemplateInvitationEvent(UserDescriptionTemplateEntity userDescriptionTemplate, NotificationContactType type) throws InvalidApplicationException { NotificationIntegrationEvent event = new NotificationIntegrationEvent(); event.setTenant(tenantScope.getTenant()); event.setUserId(userScope.getUserIdSafe()); @@ -251,7 +252,7 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue())); NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); + event.setContactTypeHint(type); event.setNotificationType(notificationProperties.getDescriptionTemplateInvitationType()); NotificationFieldData data = new NotificationFieldData(); List fieldInfoList = new ArrayList<>(); @@ -261,7 +262,6 @@ public class DescriptionTemplateServiceImpl implements DescriptionTemplateServic data.setFields(fieldInfoList); event.setData(jsonHandlingService.toJsonSafe(data)); eventHandler.handle(event); - } private void addOwner(DescriptionTemplateEntity descriptionTemplateEntity) throws InvalidApplicationException { diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java index 4110c7471..d3706f62f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java @@ -186,33 +186,38 @@ public class DmpServiceImpl implements DmpService { if (!dmpUser.getUserId().equals(this.userScope.getUserIdSafe())){ UserEntity user = this.queryFactory.query(UserQuery.class).ids(dmpUser.getUserId()).first(); if (user != null){ - NotificationIntegrationEvent event = new NotificationIntegrationEvent(); - event.setUserId(this.userScope.getUserId()); - UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(user.getId()); - query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal)); - - List contactPairs = new ArrayList<>(); - contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue())); - NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); - event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); - - event = this.applyNotificationType(dmp.getStatus(), event); - NotificationFieldData data = new NotificationFieldData(); - List fieldInfoList = new ArrayList<>(); - fieldInfoList.add(new FieldInfo("{recipient}", DataType.String, user.getName())); - fieldInfoList.add(new FieldInfo("{reasonName}", DataType.String, this.queryFactory.query(UserQuery.class).ids(this.userScope.getUserId()).first().getName())); - fieldInfoList.add(new FieldInfo("{name}", DataType.String, dmp.getLabel())); - fieldInfoList.add(new FieldInfo("{id}", DataType.String, dmp.getId().toString())); - data.setFields(fieldInfoList); - event.setData(jsonHandlingService.toJsonSafe(data)); - - eventHandler.handle(event); + this.createDmpNotificationEvent(dmp, user, NotificationContactType.EMAIL); + this.createDmpNotificationEvent(dmp, user, NotificationContactType.IN_APP); } } } } + private void createDmpNotificationEvent(DmpEntity dmp, UserEntity user, NotificationContactType type) throws InvalidApplicationException { + NotificationIntegrationEvent event = new NotificationIntegrationEvent(); + event.setUserId(this.userScope.getUserId()); + UserContactInfoQuery query = this.queryFactory.query(UserContactInfoQuery.class).userIds(user.getId()); + query.setOrder(new Ordering().addAscending(UserContactInfo._ordinal)); + + List contactPairs = new ArrayList<>(); + contactPairs.add(new ContactPair(ContactInfoType.Email, query.first().getValue())); + NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); + event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); + event.setContactTypeHint(type); + + event = this.applyNotificationType(dmp.getStatus(), event); + NotificationFieldData data = new NotificationFieldData(); + List fieldInfoList = new ArrayList<>(); + fieldInfoList.add(new FieldInfo("{recipient}", DataType.String, user.getName())); + fieldInfoList.add(new FieldInfo("{reasonName}", DataType.String, this.queryFactory.query(UserQuery.class).ids(this.userScope.getUserId()).first().getName())); + fieldInfoList.add(new FieldInfo("{name}", DataType.String, dmp.getLabel())); + fieldInfoList.add(new FieldInfo("{id}", DataType.String, dmp.getId().toString())); + data.setFields(fieldInfoList); + event.setData(jsonHandlingService.toJsonSafe(data)); + + eventHandler.handle(event); + } + private NotificationIntegrationEvent applyNotificationType(DmpStatus status, NotificationIntegrationEvent event) { switch (status) { case Draft: @@ -737,6 +742,11 @@ public class DmpServiceImpl implements DmpService { private void sendDmpInvitationExistingUser(UUID userId, DmpEntity dmp, DmpUserRole role) throws InvalidApplicationException { UserEntity recipient = this.queryFactory.query(UserQuery.class).ids(userId).isActive(IsActive.Active).first(); String email = this.queryFactory.query(UserContactInfoQuery.class).userIds(recipient.getId()).first().getValue(); + this.createDmpInvitationExistingUserEvent(recipient, dmp, role, email, NotificationContactType.EMAIL); + this.createDmpInvitationExistingUserEvent(recipient, dmp, role, email, NotificationContactType.IN_APP); + } + + private void createDmpInvitationExistingUserEvent(UserEntity recipient, DmpEntity dmp, DmpUserRole role, String email, NotificationContactType type) throws InvalidApplicationException { NotificationIntegrationEvent event = new NotificationIntegrationEvent(); event.setUserId(this.userScope.getUserIdSafe()); @@ -745,7 +755,7 @@ public class DmpServiceImpl implements DmpService { contactPairs.add(new ContactPair(ContactInfoType.Email, email)); NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); + event.setContactTypeHint(type); event.setNotificationType(notificationProperties.getDmpInvitationExistingUserType()); NotificationFieldData data = new NotificationFieldData(); List fieldInfoList = new ArrayList<>(); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/user/UserService.java b/dmp-backend/core/src/main/java/eu/eudat/service/user/UserService.java index 43d92541c..3abb979ba 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/user/UserService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/user/UserService.java @@ -2,6 +2,7 @@ package eu.eudat.service.user; import com.fasterxml.jackson.core.JsonProcessingException; import eu.eudat.model.User; +import eu.eudat.model.persist.UserRequestPersist; import eu.eudat.model.persist.UserPersist; import eu.eudat.model.persist.UserRolePatchPersist; import gr.cite.tools.exception.MyApplicationException; @@ -31,9 +32,9 @@ public interface UserService { User patchRoles(UserRolePatchPersist model, FieldSet fields) throws InvalidApplicationException; - void sendMergeAccountConfirmation(String email) throws InvalidApplicationException, JAXBException; + void sendMergeAccountConfirmation(UserRequestPersist model) throws InvalidApplicationException, JAXBException; - void sendRemoveCredentialConfirmation(String email) throws InvalidApplicationException, JAXBException; + void sendRemoveCredentialConfirmation(UserRequestPersist model) throws InvalidApplicationException, JAXBException; void confirmMergeAccount(String token) throws InvalidApplicationException; diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/user/UserServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/user/UserServiceImpl.java index 4da3a1f1b..bf3427072 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/user/UserServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/user/UserServiceImpl.java @@ -343,20 +343,28 @@ public class UserServiceImpl implements UserService { //endregion //notifications - public void sendMergeAccountConfirmation(String email) throws InvalidApplicationException, JAXBException { - String token = this.createActionConfirmation(email, ActionConfirmationType.MergeAccount); + public void sendMergeAccountConfirmation(UserRequestPersist model) throws InvalidApplicationException, JAXBException { + UserEntity user = this.queryFactory.query(UserQuery.class).ids(model.getUserId()).isActive(IsActive.Active).first(); + if (user == null){ + throw new MyApplicationException("User don't exist"); + } + String token = this.createActionConfirmation(model.getEmail(), ActionConfirmationType.MergeAccount); + createMergeNotificationEvent(token, user, model.getEmail(), NotificationContactType.EMAIL); + createMergeNotificationEvent(token, user, model.getEmail(), NotificationContactType.IN_APP); + } + private void createMergeNotificationEvent(String token, UserEntity user, String email, NotificationContactType type) throws InvalidApplicationException { NotificationIntegrationEvent event = new NotificationIntegrationEvent(); - event.setUserId(this.userScope.getUserIdSafe()); + event.setUserId(user.getId()); List contactPairs = new ArrayList<>(); contactPairs.add(new ContactPair(ContactInfoType.Email, email)); NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); + event.setContactTypeHint(type); event.setNotificationType(notificationProperties.getMergeAccountConfirmationType()); NotificationFieldData data = new NotificationFieldData(); List fieldInfoList = new ArrayList<>(); - fieldInfoList.add(new FieldInfo("{userName}", DataType.String, this.queryFactory.query(UserQuery.class).ids(this.userScope.getUserIdSafe()).first().getName())); + fieldInfoList.add(new FieldInfo("{userName}", DataType.String, user.getName())); fieldInfoList.add(new FieldInfo("{confirmationToken}", DataType.String, token)); fieldInfoList.add(new FieldInfo("{expiration_time}", DataType.String, this.secondsToTime(this.notificationProperties.getEmailExpirationTimeSeconds()))); data.setFields(fieldInfoList); @@ -364,26 +372,34 @@ public class UserServiceImpl implements UserService { eventHandler.handle(event); } - public void sendRemoveCredentialConfirmation(String email) throws InvalidApplicationException, JAXBException { + public void sendRemoveCredentialConfirmation(UserRequestPersist model) throws InvalidApplicationException, JAXBException { - UserContactInfoEntity userContactInfo = this.queryFactory.query(UserContactInfoQuery.class).types(ContactInfoType.Email).userIds(this.userScope.getUserIdSafe()).values(email).first(); + UserQuery userQuery = this.queryFactory.query(UserQuery.class).ids(model.getUserId()).isActive(IsActive.Active); + if (userQuery == null || userQuery.count() == 0){ + throw new MyApplicationException("User don't exist"); + } + UserContactInfoEntity userContactInfo = this.queryFactory.query(UserContactInfoQuery.class).types(ContactInfoType.Email).userIds(model.getUserId()).values(model.getEmail()).first(); if(userContactInfo == null){ throw new MyApplicationException("Email does not exist in this user!"); } - UserCredentialQuery query = this.queryFactory.query(UserCredentialQuery.class).userIds(this.userScope.getUserIdSafe()); + UserCredentialQuery query = this.queryFactory.query(UserCredentialQuery.class).userIds(model.getUserId()); if (query == null || query.count() == 0){ throw new MyApplicationException("This user don't have credential!"); } - String token = this.createActionConfirmation(email, ActionConfirmationType.RemoveCredential); + String token = this.createActionConfirmation(model.getEmail(), ActionConfirmationType.RemoveCredential); + this.createRemoveCredentialNotificationEvent(token, model.getEmail(), model.getUserId(), NotificationContactType.EMAIL); + this.createRemoveCredentialNotificationEvent(token, model.getEmail(), model.getUserId(), NotificationContactType.IN_APP); + } + private void createRemoveCredentialNotificationEvent(String token, String email, UUID userId, NotificationContactType type) throws InvalidApplicationException { NotificationIntegrationEvent event = new NotificationIntegrationEvent(); - event.setUserId(this.userScope.getUserIdSafe()); + event.setUserId(userId); List contactPairs = new ArrayList<>(); contactPairs.add(new ContactPair(ContactInfoType.Email, email)); NotificationContactData contactData = new NotificationContactData(contactPairs, null, null); event.setContactHint(jsonHandlingService.toJsonSafe(contactData)); - event.setContactTypeHint(NotificationContactType.EMAIL); + event.setContactTypeHint(type); event.setNotificationType(notificationProperties.getRemoveCredentialConfirmationType()); NotificationFieldData data = new NotificationFieldData(); List fieldInfoList = new ArrayList<>(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/UserController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/UserController.java index 2fdfdd710..2fa93cd90 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/UserController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/UserController.java @@ -14,6 +14,7 @@ import eu.eudat.model.builder.DmpAssociatedUserBuilder; import eu.eudat.model.builder.UserBuilder; import eu.eudat.model.censorship.DmpAssociatedUserCensor; import eu.eudat.model.censorship.UserCensor; +import eu.eudat.model.persist.UserRequestPersist; import eu.eudat.model.persist.UserPersist; import eu.eudat.model.persist.UserRolePatchPersist; import eu.eudat.model.result.QueryResult; @@ -270,23 +271,24 @@ public class UserController { this.auditService.track(AuditableAction.User_Delete, "id", id); } - @GetMapping("mine/merge-account-request/{email}") + @PostMapping("mine/merge-account-request/{email}") @Transactional - public ResponseEntity> mergeAccount(@PathVariable("email") String email) throws InvalidApplicationException, JAXBException { - logger.debug(new MapLogEntry("merge account to user").And("email", email)); + @ValidationFilterAnnotation(validator = UserRequestPersist.UserRequestPersistValidator.ValidatorName, argumentName = "model") + public Boolean mergeAccount(@RequestBody UserRequestPersist model) throws InvalidApplicationException, JAXBException { + logger.debug(new MapLogEntry("merge account to user").And("email", model)); - this.userTypeService.sendMergeAccountConfirmation(email); + this.userTypeService.sendMergeAccountConfirmation(model); this.auditService.track(AuditableAction.User_MergeRequest, Map.ofEntries( - new AbstractMap.SimpleEntry("email", email) + new AbstractMap.SimpleEntry("model", model) )); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload("Merge Account Request Success")); + return true; } @GetMapping("mine/confirm-merge-account/token/{token}") @Transactional - public ResponseEntity> confirmMergeAccount(@PathVariable("token") String token) throws InvalidApplicationException, JAXBException { + public Boolean confirmMergeAccount(@PathVariable("token") String token) throws InvalidApplicationException, JAXBException { logger.debug(new MapLogEntry("confirm merge account to user").And("token", token)); this.userTypeService.confirmMergeAccount(token); @@ -295,26 +297,27 @@ public class UserController { new AbstractMap.SimpleEntry("token", token) )); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload("Merge Account Confirm Success")); + return true; } @GetMapping("mine/remove-credential-request/{email}") @Transactional - public ResponseEntity> removeCredentialAccount(@PathVariable("email") String email) throws InvalidApplicationException, JAXBException { - logger.debug(new MapLogEntry("remove credential request to user").And("email", email)); + @ValidationFilterAnnotation(validator = UserRequestPersist.UserRequestPersistValidator.ValidatorName, argumentName = "model") + public Boolean removeCredentialAccount(@RequestBody UserRequestPersist model) throws InvalidApplicationException, JAXBException { + logger.debug(new MapLogEntry("remove credential request to user").And("model", model)); - this.userTypeService.sendRemoveCredentialConfirmation(email); + this.userTypeService.sendRemoveCredentialConfirmation(model); this.auditService.track(AuditableAction.User_RemoveCredentialRequest, Map.ofEntries( - new AbstractMap.SimpleEntry("email", email) + new AbstractMap.SimpleEntry("email", model) )); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload("Remove Credential Request Success")); + return true; } @GetMapping("mine/confirm-remove-credential/token/{token}") @Transactional - public ResponseEntity> confirmRemoveCredentialAccount(@PathVariable("token") String token) throws InvalidApplicationException, JAXBException { + public Boolean confirmRemoveCredentialAccount(@PathVariable("token") String token) throws InvalidApplicationException, JAXBException { logger.debug(new MapLogEntry("confirm remove credential to user").And("token", token)); this.userTypeService.confirmRemoveCredential(token); @@ -323,6 +326,6 @@ public class UserController { new AbstractMap.SimpleEntry("model", token) )); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload("Remove Credential Account Success")); + return true; } }