diff --git a/smp-angular/src/app/common/panels/membership-panel/membership-panel.component.html b/smp-angular/src/app/common/panels/membership-panel/membership-panel.component.html index 2a3c9f39b746234abe389a94a3208d8d8dd96793..287e139c5c4b0a2dd653f5989c39492c67b8670f 100644 --- a/smp-angular/src/app/common/panels/membership-panel/membership-panel.component.html +++ b/smp-angular/src/app/common/panels/membership-panel/membership-panel.component.html @@ -24,7 +24,7 @@ </button> </mat-toolbar-row> </mat-toolbar> - <h3>{{title}}</h3> + <h3 style="word-wrap: break-word; max-width: 750px">{{title}}</h3> <div class="domain-member-container mat-elevation-z2"> <div class="domain-member-loading-shade" *ngIf="isLoadingResults"> diff --git a/smp-angular/src/app/edit/edit-domain/domain-group-panel/domain-group.component.html b/smp-angular/src/app/edit/edit-domain/domain-group-panel/domain-group.component.html index 44c866fa45a9cd58021e8d03ea05542874b4ad23..a2121d539f6b31981ba1d136a94d50d98f3d0dd5 100644 --- a/smp-angular/src/app/edit/edit-domain/domain-group-panel/domain-group.component.html +++ b/smp-angular/src/app/edit/edit-domain/domain-group-panel/domain-group.component.html @@ -28,7 +28,7 @@ </button> </mat-toolbar-row> </mat-toolbar> - <h3>{{title}}</h3> + <h3 style="word-wrap: break-word; max-width: 750px">{{title}}</h3> <div class="group-container mat-elevation-z2"> <div class="group-loading-shade" *ngIf="isLoadingResults"> diff --git a/smp-angular/src/app/edit/edit-domain/edit-domain.component.html b/smp-angular/src/app/edit/edit-domain/edit-domain.component.html index 0e51675ba44ce98be0a4fbb64742f03cd376a70b..1a987111ef815bac24c2984c024293ca3e510bc9 100644 --- a/smp-angular/src/app/edit/edit-domain/edit-domain.component.html +++ b/smp-angular/src/app/edit/edit-domain/edit-domain.component.html @@ -37,14 +37,12 @@ </div> <ng-template #searchDomainPanel> - <div *ngIf="!!domainList && domainList.length>0"> <mat-form-field id="domain-filter"> <mat-label>Filter Domain by domain code</mat-label> <input matInput (keyup)="applyDomainFilter($event)" placeholder="Domain code" #inputDomainFilter> </mat-form-field> - <table class="mat-elevation-z2" id="admin-domain-table" - mat-table [dataSource]="dataSource"> + <table class="mat-elevation-z2" id="edit-domain-table" mat-table [dataSource]="dataSource" matSort> <ng-container matColumnDef="domainCode"> <th mat-header-cell *matHeaderCellDef mat-sort-header>Domain code</th> <td mat-cell *matCellDef="let row" [matTooltip]="row.domainCode">{{row.domainCode}}</td> @@ -59,14 +57,15 @@ "{{inputDomainFilter.value}}" </td> <ng-template #noDataFound> - <td class="mat-cell" colspan="2">No data</td> + <td class="mat-cell" colspan="2">User is not administrator of any of the domains</td> </ng-template> </tr> </table> - <mat-paginator class="mat-elevation-z2" id="domain-paginator" - [hidePageSize]="true" - [showFirstLastButtons]="true" - [pageSize]="5" aria-label="Select page"></mat-paginator> - </div> + + <mat-paginator class="mat-elevation-z2" id="edit-domain-paginator" #editDomainPaginator + [hidePageSize]="true" + [showFirstLastButtons]="true" + [pageSize]="5" + aria-label="Select page"></mat-paginator> </ng-template> diff --git a/smp-angular/src/app/edit/edit-domain/edit-domain.component.ts b/smp-angular/src/app/edit/edit-domain/edit-domain.component.ts index 6ee63bb669ac60c147517a9225619a9c026eff6d..6af9df722d9f98ed4619e7e699fb1249dff2897c 100644 --- a/smp-angular/src/app/edit/edit-domain/edit-domain.component.ts +++ b/smp-angular/src/app/edit/edit-domain/edit-domain.component.ts @@ -48,8 +48,7 @@ export class EditDomainComponent implements OnInit, AfterViewInit, BeforeLeaveGu }; } - ngAfterViewInit() { - + ngAfterViewInit():void { this.dataSource.paginator = this.paginator; this.dataSource.sort = this.sort; // MatTab has only onTabChanged which is a bit to late. Register new listener to internal diff --git a/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.html b/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.html index ccf6117414d2ea3fe117e4f25a5c0743741205b7..350a9552ec28dd017e6767edea8a7b09bbed74f0 100644 --- a/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.html +++ b/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.html @@ -29,7 +29,7 @@ </button> </mat-toolbar-row> </mat-toolbar> - <h3>{{title}}</h3> + <h3 style="word-wrap: break-word; max-width: 750px">{{title}}</h3> <div class="edit-resource-container mat-elevation-z2"> <div class="edit-resource-loading-shade" *ngIf="isLoadingResults"> @@ -83,7 +83,7 @@ (page)="onPageChanged($event)" [hidePageSize]="true" [showFirstLastButtons]="true" - [pageSize]="10" + [pageSize]="5" [disabled]="disabledForm" aria-label="Select pages"></mat-paginator> </div> diff --git a/smp-angular/src/app/edit/edit-resources/edit-resource.component.html b/smp-angular/src/app/edit/edit-resources/edit-resource.component.html index c3e9abd5a2d79d13428c4ff30407037ed143e8da..0bf08343530d235edaa0fbc0daeaa2128e87bb07 100644 --- a/smp-angular/src/app/edit/edit-resources/edit-resource.component.html +++ b/smp-angular/src/app/edit/edit-resources/edit-resource.component.html @@ -136,7 +136,7 @@ (page)="onPageChanged($event)" [hidePageSize]="true" [showFirstLastButtons]="true" - [pageSize]="10" + [pageSize]="5" aria-label="Select pages"></mat-paginator> </div> </div> diff --git a/smp-angular/src/app/edit/edit-resources/resource-details-panel/resource-details-panel.component.html b/smp-angular/src/app/edit/edit-resources/resource-details-panel/resource-details-panel.component.html index 8d0ac6a5e80aa3aad33950afd14a0001631d4bfc..a1e73e281708448d8ee5caafec4906adbd797ecd 100644 --- a/smp-angular/src/app/edit/edit-resources/resource-details-panel/resource-details-panel.component.html +++ b/smp-angular/src/app/edit/edit-resources/resource-details-panel/resource-details-panel.component.html @@ -12,7 +12,7 @@ </button> </mat-toolbar-row> </mat-toolbar> - <h3>{{title}}</h3> + <h3 style="word-wrap: break-word; max-width: 750px">{{title}}</h3> <form [formGroup]="resourceForm"> <mat-form-field style="width:100%"> <mat-label>Resource type</mat-label> diff --git a/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.html b/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.html index 27c6a246bce1ff0536f2a1f446692ebcaf7b0b8e..4304500e5c4bd7d45f10a4278a40650b655bf0a4 100644 --- a/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.html +++ b/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.html @@ -88,11 +88,12 @@ <input matInput name="technicalContactUrl" id="technicalContactUrl_id" matTooltip="Technical contact for the service" [formControl]="dialogForm.controls['technicalContactUrl']" maxlength="255" type="url" > </mat-form-field> + <div class="required-fields">* required fields</div> </div> </form> </mat-dialog-content> -<div class="required-fields">* required fields</div> + <mat-dialog-actions> <button id="generateSubresourceButton" mat-raised-button color="primary" [mat-dialog-close]="true" [disabled]="!dialogForm.valid"> diff --git a/smp-angular/src/app/edit/edit-resources/subresource-panel/subresource-panel.component.html b/smp-angular/src/app/edit/edit-resources/subresource-panel/subresource-panel.component.html index 1b4f59c294e79d27a6dcc3800b3b5028ab03ee73..24595fbff5be2fefdaa670dcfd2b427c8d75d88d 100644 --- a/smp-angular/src/app/edit/edit-resources/subresource-panel/subresource-panel.component.html +++ b/smp-angular/src/app/edit/edit-resources/subresource-panel/subresource-panel.component.html @@ -74,7 +74,7 @@ <mat-paginator class="mat-elevation-z2" [hidePageSize]="true" [showFirstLastButtons]="true" - [pageSize]="3" + [pageSize]="5" [disabled]="disabledForm" aria-label="Select pages"></mat-paginator> </div> 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 f5be4ca365a9b1b8710f20ca5b0b8f3f35766a8d..5c221737894569dac450f58cc3389315a147018b 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 @@ -162,9 +162,10 @@ </mat-card-content> </mat-card> + <div class="required-fields">* required fields</div> </mat-dialog-content> -<div class="required-fields">* required fields</div> + <mat-dialog-actions> <button mat-raised-button color="primary" (click)="submitForm()" [disabled]="!dialogForm.valid"> diff --git a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html index 200d590da5148e620b8dc319df631d416de399bb..e6604b7705d144203558d3fed1dc3000b7a47de0 100644 --- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html +++ b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html @@ -100,10 +100,8 @@ </mat-card-content> </mat-card> </div> + <div class="required-fields">* required fields</div> </mat-dialog-content> - - -<div class="required-fields">* required fields</div> <mat-dialog-actions> <button mat-raised-button color="primary" (click)="submitForm()" [disabled]="!dialogForm.valid"> diff --git a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html index 4e5e778c3b1ed4951190cbc577e8b4f1066129ec..9a34471ff57ef08490714871c90902e64192d858 100644 --- a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html +++ b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html @@ -108,9 +108,10 @@ </mat-card-content> </mat-card> </form> + <div class="required-fields">* required fields</div> </mat-dialog-content> -<div class="required-fields">* required fields</div> + <mat-dialog-actions> <button mat-raised-button color="primary" [mat-dialog-close]="true" [disabled]="!dialogForm.valid"> diff --git a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.html b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.html index ef83f744692a38c9e2ab1d464699c91dd449d575..214a7a645dea4201ad27df546492ab6c2e5e34a5 100644 --- a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.html +++ b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.html @@ -103,6 +103,7 @@ <mat-paginator class="mat-elevation-z2" id="domain-paginator" [hidePageSize]="true" [showFirstLastButtons]="true" - [pageSize]="10" aria-label="Select page"></mat-paginator> + [pageSize]="5" + aria-label="Select page"></mat-paginator> </ng-template> diff --git a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts index 9794b9fc145baad452833ef974cff019420419eb..ff60dbb4fb495e0cd826a455412d1433ee5bf4d4 100644 --- a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts +++ b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts @@ -174,6 +174,10 @@ export class AdminDomainComponent implements OnInit, OnDestroy, AfterViewInit, B this.alertService.error("ERROR: " + domain.actionMessage); } this.dataSource.data = this.domainList; + + if (domain.status == EntityStatus.NEW) { + this.paginator.lastPage(); + } } applyDomainFilter(event: Event) { diff --git a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.html b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.html index 93cd74c27b1742079cace9a084287098bf90534a..06792a74f4aa593484eb362ff2e5931457dfd8d0 100644 --- a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.html +++ b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.html @@ -62,7 +62,7 @@ <mat-paginator class="mat-elevation-z2" id="extension-paginator" [hidePageSize]="true" [showFirstLastButtons]="true" - [pageSize]="10" aria-label="Select page"></mat-paginator> + [pageSize]="5" aria-label="Select page"></mat-paginator> </ng-template> diff --git a/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.html b/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.html index d9744c33d8b3d1a0a290acc25c156f990318fdc4..87c346951be217b040f62d7771597f8fabb25dc9 100644 --- a/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.html +++ b/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.html @@ -1,8 +1,7 @@ <h2 mat-dialog-title>{{formTitle}}</h2> -<mat-dialog-content style="height:300px;width:800px"> +<mat-dialog-content style="height:380px;width:800px"> <form [formGroup]="dialogForm"> <mat-card> - <mat-card-title>Import keystore</mat-card-title> <mat-card-content> <fieldset style="border: none;"> <label style="width:100%"> @@ -59,9 +58,10 @@ </mat-card> </form> + <div class="required-fields">* required fields</div> </mat-dialog-content> -<div class="required-fields">* required fields</div> + <mat-dialog-actions> <button mat-raised-button color="primary" (click)="importKeystore()" [disabled]="!dialogForm.valid"> <mat-icon>vpn_key</mat-icon> diff --git a/smp-angular/src/app/system-settings/admin-users/admin-user.component.html b/smp-angular/src/app/system-settings/admin-users/admin-user.component.html index 60b434d8950dda2eef2e0597a025302c18021960..a43284bebd3e0253406900f43b99f85344c06bd9 100644 --- a/smp-angular/src/app/system-settings/admin-users/admin-user.component.html +++ b/smp-angular/src/app/system-settings/admin-users/admin-user.component.html @@ -71,7 +71,7 @@ [length]="resultsLength" (page)="onPageChanged($event)" [hidePageSize]="true" - [pageSize]="10" + [pageSize]="5" [showFirstLastButtons]="true" aria-label="Select page"></mat-paginator> </ng-template> diff --git a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html b/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html index b9eb68da9310fa5eca6d181eb183a4fa57b5a5bf..e153d55edf3838da2c9afde5e71dadaf6f8cc638 100644 --- a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html +++ b/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html @@ -139,10 +139,10 @@ </mat-card-content> </mat-card> </form> - + <div class="required-fields">* required fields</div> </mat-dialog-content> -<div class="required-fields">* required fields</div> + <mat-dialog-actions> <button mat-raised-button color="primary" (click)="submitForm()" [disabled]="!domainForm.valid"> <mat-icon>check_circle</mat-icon> diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/exceptions/ErrorCode.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/exceptions/ErrorCode.java index cba897728b8bf7171d091780cf521291ad829e47..6ea193026d2d2c686e265e285b60dab3208da275 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/exceptions/ErrorCode.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/exceptions/ErrorCode.java @@ -25,7 +25,7 @@ public enum ErrorCode { ILLEGAL_STATE_DOMAIN_MULTIPLE_ENTRY(500,"SMP:113",ErrorBusinessCode.TECHNICAL,"More than one domain entry (domain: '%s') is defined in database!"), MISSING_DOMAIN(400,"SMP:114",ErrorBusinessCode.MISSING_FIELD,"More than one domain registered on SMP. The domain must be defined!"), ILLEGAL_STATE_DOMAIN_GROUP_MULTIPLE_ENTRY(500,"SMP:115",ErrorBusinessCode.TECHNICAL,"More than one group for domain entry (group: '%s', domain: '%s') is defined in database!"), - + INVALID_DOMAIN_DATA (400,"SMP:116",ErrorBusinessCode.INVALID_INPUT_DATA,"Invalid domain data! %s"), // user error messages INVALID_USER_NO_IDENTIFIERS (400,"SMP:120",ErrorBusinessCode.MISSING_FIELD,"Invalid user - no identifiers!"), diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java index c031dc2a2ad94b2434844da899ef9bbe42f3d6f5..c0bf1fce845f0a297aa55c7d6df2aede34fb7831 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java @@ -13,6 +13,8 @@ import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; import eu.europa.ec.edelivery.smp.data.ui.enums.EntityROStatus; import eu.europa.ec.edelivery.smp.exceptions.BadRequestException; import eu.europa.ec.edelivery.smp.exceptions.ErrorBusinessCode; +import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; +import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import org.apache.commons.lang3.StringUtils; @@ -96,6 +98,10 @@ public class UIDomainService extends UIServiceBase<DBDomain, DomainRO> { @Transactional public void createDomainData(DomainRO data) { + + if (domainDao.getDomainByCode(data.getDomainCode()).isPresent()){ + throw new SMPRuntimeException(ErrorCode.INVALID_DOMAIN_DATA, "Domain with code ["+data.getDomainCode()+"] already exists!"); + }; DBDomain domain = new DBDomain(); domain.setDomainCode(data.getDomainCode()); domain.setDefaultResourceTypeIdentifier(data.getDefaultResourceTypeIdentifier()); diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthorizationService.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthorizationService.java index 97009a35fef09e3b772bf0952cfb72093cd2f112..3fc61cefc9837350be6c147ca08f6788a4123afe 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthorizationService.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthorizationService.java @@ -208,7 +208,7 @@ public class SMPAuthorizationService { * @param userRO * @return updated user data according to SMP configuration */ - protected UserRO getUpdatedUserData(UserRO userRO) { + public UserRO getUpdatedUserData(UserRO userRO) { userRO.setShowPasswordExpirationWarning(userRO.getPasswordExpireOn() != null && OffsetDateTime.now().plusDays(configurationService.getPasswordPolicyUIWarningDaysBeforeExpire()) .isAfter(userRO.getPasswordExpireOn())); diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java index 99f0440dad350894b1128d72dac365dcc4590137..e0fb35aeccd73e2cedd3fea9d725689f46928c9d 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java @@ -86,7 +86,7 @@ public class UserController { // refresh user from DB UserRO userRO = uiUserService.getUserById(entityId); // return clean user to UI - return authorizationService.sanitize(userRO); + return authorizationService.getUpdatedUserData(userRO); } /**