diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html index e94bdf35d04587be74db60faaf75b1f6e0011ba1..4750a3c659fbb82e93aa63513c38725ea0ce1c7b 100644 --- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html +++ b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html @@ -64,7 +64,7 @@ </mat-expansion-panel-header> <mat-selection-list #usersSelected [disabled]="!securityService.isCurrentUserSMPAdmin()" - [compareWith]="compareTableItemById" + [compareWith]="compareUserByUserId" [formControl]="dialogForm.controls['users']" style="height: 200px; overflow-y: scroll; overflow-x: auto;"> <!-- // if username is null then there must be an cerificate id! --> diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts index 3e85e6702d0e230308360bfab5c35495c4bb4a75..1c18a51a82c174926b864f6525dc59b423f38214 100644 --- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts +++ b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts @@ -228,12 +228,12 @@ export class ServiceGroupDetailsDialogComponent implements OnInit { } - compareTableItemById(item1, item2): boolean { - return item1.id === item2.id; + compareUserByUserId(item1, item2): boolean { + return item1.userId === item2.userId; } compareDomain(domain: DomainRo, serviceGroupDomain: ServiceGroupDomainEditRo): boolean { - return domain.id === serviceGroupDomain.domainId; + return domain.domainCode === serviceGroupDomain.domainCode; } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java index 697363e34be439c2af513f6b155514d2652b8de5..26cce3e8f62f383c11e52ec063da25c153766e18 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java @@ -16,6 +16,7 @@ import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import eu.europa.ec.edelivery.smp.services.SMLIntegrationService; import eu.europa.ec.edelivery.smp.services.ui.filters.ServiceGroupFilter; +import eu.europa.ec.edelivery.smp.utils.SessionSecurityUtils; import eu.europa.ec.smp.api.exceptions.XmlInvalidAgainstSchemaException; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -38,9 +39,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import static eu.europa.ec.edelivery.smp.data.ui.ServiceGroupValidationRO.ERROR_CODE_INVALID_EXTENSION; -import static eu.europa.ec.edelivery.smp.data.ui.ServiceGroupValidationRO.ERROR_CODE_OK; -import static eu.europa.ec.edelivery.smp.data.ui.ServiceGroupValidationRO.ERROR_CODE_SERVICE_GROUP_EXISTS; +import static eu.europa.ec.edelivery.smp.data.ui.ServiceGroupValidationRO.*; import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*; @Service @@ -466,28 +465,6 @@ public class UIServiceGroupService extends UIServiceBase<DBServiceGroup, Service return participantSMLRecordList; } - /** - * Method validates if domain list in consistent - code and sml subdomain are used only oncet - * - * @param serviceGroupRO - * @return - * - protected List<ServiceGroupDomainRO> validateDomainList(ServiceGroupRO serviceGroupRO) { - List<ServiceGroupDomainRO> serviceGroupDomainROList = serviceGroupRO.getServiceGroupDomains(); - // validate (if domains are added only once) and create domain list for service group. - serviceGroupDomainROList.forEach(dro -> { - List<ServiceGroupDomainRO> result = serviceGroupDomainROList.stream() - .filter(domainToAdd -> Objects.equals(domainToAdd.getDomainCode(), dro.getDomainCode()) - || Objects.equals(domainToAdd.getSmlSubdomain(), dro.getSmlSubdomain())) - .collect(Collectors.toList()); - if (result.size() != 1) { - throw new SMPRuntimeException(DUPLICATE_DOMAIN_FOR_SG, serviceGroupRO.getParticipantIdentifier(), - serviceGroupRO.getParticipantScheme(), dro.getDomainCode(), dro.getSmlSubdomain()); - } - }); - return serviceGroupDomainROList; - }*/ - /** * Update users on service group. Method is OK for update and add new domain * @@ -499,7 +476,8 @@ public class UIServiceGroupService extends UIServiceBase<DBServiceGroup, Service dbServiceGroup.getUsers().clear(); List<UserRO> lstUsers = serviceGroupRO.getUsers(); for (UserRO userRO : lstUsers) { - Optional<DBUser> optUser = userDao.findUserByUsername(userRO.getUsername()); + Long userid = SessionSecurityUtils.decryptEntityId(userRO.getUserId()); + Optional<DBUser> optUser = userDao.findUser(userid); if (!optUser.isPresent()) { throw new SMPRuntimeException(INTERNAL_ERROR, "Database changed", "User "+userRO.getUsername()+ " not exists! (Refresh data)"); @@ -586,14 +564,10 @@ public class UIServiceGroupService extends UIServiceBase<DBServiceGroup, Service //also add domain to service group serviceGroupRo.getServiceGroupDomains().add(servGrpDomain); }); - // add users + // add users add just encrypted ID dbServiceGroup.getUsers().forEach(usr -> { UserRO userRO = new UserRO(); - userRO.setUserId(usr.getId()+""); - userRO.setUsername(usr.getUsername()); - userRO.setActive(usr.isActive()); - userRO.setEmailAddress(usr.getEmailAddress()); - userRO.setRole(usr.getRole()); + userRO.setUserId(SessionSecurityUtils.encryptedEntityId(usr.getId())); serviceGroupRo.getUsers().add(userRO); }); // do not add service extension to gain performance. diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/ServiceGroupResourceTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/ServiceGroupResourceTest.java index 1a6b82a998b5d2ab0048346c0e40432eb801aca0..99b1c79031965d8524ce3d56c323f4f65ed95e70 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/ServiceGroupResourceTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/ServiceGroupResourceTest.java @@ -134,7 +134,7 @@ public class ServiceGroupResourceTest { assertNotNull(sgro.getParticipantScheme()); assertNotNull(sgro.getParticipantIdentifier()); assertEquals(1, sgro.getUsers().size()); - assertEquals("sg_admin", sgro.getUsers().get(0).getUsername()); + assertNotNull(sgro.getUsers().get(0).getUserId()); }); } @@ -155,7 +155,7 @@ public class ServiceGroupResourceTest { assertEquals(PARTICIPANT_IDENTIFIER, res.getParticipantIdentifier()); assertEquals(PARTICIPANT_SCHEME, res.getParticipantScheme()); assertEquals(1, res.getUsers().size()); - assertEquals("test_user_hashed_pass", res.getUsers().get(0).getUsername()); + assertNotNull(res.getUsers().get(0).getUserId()); assertEquals(1, res.getServiceGroupDomains().size()); assertEquals(1, res.getServiceMetadata().size());