From 014ab67ecac0fe645e99ba1dfaa6e3e8195d0318 Mon Sep 17 00:00:00 2001 From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu> Date: Wed, 26 Apr 2023 13:21:52 +0200 Subject: [PATCH] update UI on access-tokens --- .../credential-dialog.component.html | 15 +++++++-------- .../credential-dialog.component.ts | 3 ++- .../password-change-dialog.component.html | 8 ++++---- .../user-profile-panel.component.html | 14 ++++++-------- .../access-token-panel.component.html | 14 ++++++++------ .../access-token-panel.component.ts | 1 - .../smp/data/model/user/DBCredential.java | 3 +-- 7 files changed, 28 insertions(+), 30 deletions(-) diff --git a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.html b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.html index 4a396b8c8..cfdb03cbb 100644 --- a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.html +++ b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.html @@ -2,21 +2,20 @@ <mat-dialog-content style="width:700px"> <div *ngIf="message" [ngClass]="{ 'alert-message': message, 'alert-message-success': messageType === 'success', 'alert-message-error':messageType === 'error' }" - id="alertmessage_id"> + id="alertmessage_id" [innerHTML]="message"> <span class="alert-message-close-button" (click)="clearAlert()">×</span> - {{message}} </div> <div *ngIf="!isReadOnly" class="panel" [formGroup]="credentialForm" > <mat-form-field style="width: 100%"> <mat-label>Description</mat-label> - <input matInput placeholder="Description" + <input matInput formControlName="description" maxlength="255"> </mat-form-field> <div style="display: flex;flex-flow: row wrap;"> - <mat-checkbox formControlName="active"> + <mat-checkbox formControlName="active" style="align-self: center; padding-bottom: 1em;padding-right: 2em"> Active </mat-checkbox> <mat-form-field style="flex-grow: 1"> @@ -47,7 +46,7 @@ <mat-form-field class="certificate-subject" style="width:100%"> <mat-label>Subject Name</mat-label> - <input matInput placeholder="Subject Name" formControlName="subject" id="subject_id" + <input matInput formControlName="subject" id="subject_id" readonly="true"> </mat-form-field> <mat-form-field style="width: 100%"> @@ -64,17 +63,17 @@ </mat-form-field> <mat-form-field class="certificate-issuer" style="width:100%"> <mat-label>Issuer Name</mat-label> - <input matInput placeholder="Issuer" formControlName="issuer" id="issuer_id" + <input matInput formControlName="issuer" id="issuer_id" readonly="true"> </mat-form-field> <mat-form-field class="certificate-serial-number" style="width:100%"> <mat-label>Serial Number</mat-label> - <input matInput placeholder="Serial Number" formControlName="serialNumber" + <input matInput formControlName="serialNumber" id="servialNumber_id" readonly="true"> </mat-form-field> <mat-form-field class="certificate-id" style="width:100%"> <mat-label>SMP certificate ID</mat-label> - <input matInput placeholder="SMP certificate ID" formControlName="certificateId" + <input matInput formControlName="certificateId" id="certificateId_id" resizeable="true" readonly="true"> </mat-form-field> diff --git a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts index 72c80a152..b76129183 100644 --- a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts +++ b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts @@ -161,7 +161,8 @@ export class CredentialDialogComponent { this.clearAlert(); this.userService.generateUserAccessTokenCredential(this.initCredential).subscribe((response: AccessTokenRo) => { - this.showSuccessMessage("Token with id: [" + response.identifier + "] and value: [" + response.value + "] was generated!") + this.showSuccessMessage("Token with ID: \"" + response.identifier + "\" and value: \"" + response.value + "\" was generated!" + + "<br \><br \>Copy the access token's value and save it in a safe space. <br \><b>You won't be able to see your token's value once you click Close.</b>") this.userService.notifyAccessTokenUpdated(response.credential); this.setDisabled(true); }, (err) => { diff --git a/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.html b/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.html index 040c1590b..2f4807e63 100644 --- a/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.html +++ b/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.html @@ -12,14 +12,14 @@ <mat-form-field style="width:100%"> <mat-label>Change password for Username</mat-label> - <input matInput placeholder="Username" formControlName="username" id="un_id" readonly="true"> + <input matInput formControlName="username" id="un_id" readonly="true"> </mat-form-field> <div class="password-panel" style="display: flex;flex-direction: column"> <mat-form-field *ngIf="showCurrentPasswordField" style="width:100%"> <mat-label>{{getPasswordTitle}}</mat-label> - <input matInput [placeholder]="getPasswordTitle" [type]="hideCurrPwdFiled ? 'password' : 'text'" + <input matInput [type]="hideCurrPwdFiled ? 'password' : 'text'" formControlName="current-password" required id="cp_id"> <mat-icon matSuffix (click)="hideCurrPwdFiled = !hideCurrPwdFiled">{{hideCurrPwdFiled ? 'visibility_off' : 'visibility'}}</mat-icon> @@ -27,7 +27,7 @@ <mat-form-field style="width:100%"> <mat-label>New Password</mat-label> - <input matInput placeholder="New Password" [type]="hideNewPwdFiled ? 'password' : 'text'" + <input matInput [type]="hideNewPwdFiled ? 'password' : 'text'" formControlName="new-password" required id="np_id" auto-focus-directive> <mat-icon matSuffix (click)="hideNewPwdFiled = !hideNewPwdFiled">{{hideNewPwdFiled ? 'visibility_off' : 'visibility'}}</mat-icon> @@ -40,7 +40,7 @@ <mat-form-field style="width:100%"> <mat-label>Confirm New Password</mat-label> - <input matInput placeholder="Confirm New Password" [type]="hideConfPwdFiled ? 'password' : 'text'" + <input matInput [type]="hideConfPwdFiled ? 'password' : 'text'" formControlName="confirm-new-password" required id="cnp_id"> <mat-icon matSuffix (click)="hideConfPwdFiled = !hideConfPwdFiled">{{hideConfPwdFiled ? 'visibility_off' : 'visibility'}}</mat-icon> diff --git a/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.html b/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.html index 2404d2f2e..e5406f5fd 100644 --- a/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.html +++ b/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.html @@ -3,19 +3,17 @@ <data-panel title="Account" [showTitle]="showDataPanelTitles" text="Account data"> - <div class="panel" *ngIf="isNewUser"><p style="font-weight: bold">Enter user and click 'Save' to create new user - </div> + <div class="panel" *ngIf="isNewUser"><p style="font-weight: bold">Please fill user details and click "Save" to create a new user</div> <mat-form-field class="user-profile-pane-field"> <mat-label>Username</mat-label> - <input id="username_id" matInput placeholder="Username" formControlName="username" #username + <input id="username_id" matInput formControlName="username" #username maxlength="255" required auto-focus-directive> </mat-form-field> <div style="display:flex; flex-direction: row;align-items: center"> <mat-form-field style="width:100%" class="user-profile-pane-field"> <mat-label>Application role</mat-label> - <mat-select placeholder="Application role for the user" - formControlName="role" + <mat-select formControlName="role" matTooltip="application role for the user." id="role_id" required> <mat-option *ngFor="let role of applicationRoles" @@ -23,7 +21,7 @@ {{role.key}} </mat-option> </mat-select> - <mat-hint> Choose member role</mat-hint> + <mat-hint *ngIf="!isUserDataLoggedInUserData"> Choose member role</mat-hint> </mat-form-field> <mat-checkbox @@ -38,7 +36,7 @@ text="User profile data and settings"> <mat-form-field class="user-profile-pane-field"> <mat-label>E-Mail Address</mat-label> - <input id="emailAddress_id" matInput placeholder="EMail Address" formControlName="emailAddress" + <input id="emailAddress_id" matInput formControlName="emailAddress" maxlength="127"> <div *ngIf="userForm.controls['emailAddress'].hasError('pattern') && userForm.controls['emailAddress'].touched" @@ -47,7 +45,7 @@ </mat-form-field> <mat-form-field class="user-profile-pane-field"> <mat-label>Full name (name and last name)</mat-label> - <input id="fullName_id" matInput placeholder="Full name" formControlName="fullName" + <input id="fullName_id" matInput formControlName="fullName" maxlength="127"> </mat-form-field> diff --git a/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.html b/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.html index 65beda36d..087bd3ad1 100644 --- a/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.html +++ b/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.html @@ -2,7 +2,7 @@ <div style="display: flex;flex-flow: row wrap;"> <mat-form-field style="flex-grow: 2"> <mat-label>Access token ID</mat-label> - <input matInput placeholder="Access token ID" + <input matInput [value]="credential?.name" maxlength="255" readonly> </mat-form-field> @@ -24,14 +24,16 @@ </div> <mat-form-field style="width: 100%"> <mat-label>Description</mat-label> - <input matInput placeholder="Description" + <input matInput formControlName="description" maxlength="255"> </mat-form-field> <div style="display: flex;flex-flow: row wrap;"> - <mat-checkbox formControlName="active"> + + <mat-checkbox formControlName="active" style="align-self: center; padding-bottom: 1em;padding-right: 2em"> Active </mat-checkbox> + <mat-form-field appearance="fill" style="flex-grow: 1"> <mat-label>Enter a valid date range</mat-label> <mat-date-range-input [rangePicker]="picker" > @@ -47,19 +49,19 @@ <div style="display: flex;flex-flow: row wrap;"> <mat-form-field style="flex-grow: 1"> <mat-label>Seq. failed attempts</mat-label> - <input matInput placeholder="Seq. failed attempts" + <input matInput [value]="sequentialLoginFailureCount" id="sequentialTokenLoginFailureCount_id" maxlength="255" disabled readonly> </mat-form-field> <mat-form-field style="flex-grow: 2"> <mat-label>Last failed attempt</mat-label> - <input matInput placeholder="Last failed attempt" + <input matInput [value]="lastFailedLoginAttempt" maxlength="255" disabled> </mat-form-field> <mat-form-field style="flex-grow: 2"> <mat-label>Suspended until</mat-label> - <input matInput placeholder="Suspended until" + <input matInput [value]="suspendedUtil" maxlength="255" disabled> </mat-form-field> diff --git a/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.ts b/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.ts index 2df9a9356..c83f2ac85 100644 --- a/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.ts +++ b/smp-angular/src/app/user-settings/user-access-tokens/access-token-panel/access-token-panel.component.ts @@ -17,7 +17,6 @@ export class AccessTokenPanelComponent implements BeforeLeaveGuard { dateFormat: string = 'yyyy-MM-dd' _credential: CredentialRo; - credentialForm: FormGroup; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/user/DBCredential.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/user/DBCredential.java index 82880def2..30adccf87 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/user/DBCredential.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/user/DBCredential.java @@ -26,7 +26,6 @@ import java.time.OffsetDateTime; import java.util.Objects; import static eu.europa.ec.edelivery.smp.data.dao.QueryNames.*; - @Entity @Audited @Table(name = "SMP_CREDENTIAL", @@ -39,7 +38,7 @@ import static eu.europa.ec.edelivery.smp.data.dao.QueryNames.*; @NamedQuery(name = QUERY_CREDENTIALS_BY_CI_USERNAME_CREDENTIAL_TYPE_TARGET, query = "SELECT c FROM DBCredential c " + "WHERE upper(c.user.username) = upper(:username) and c.credentialType = :credential_type and c.credentialTarget = :credential_target"), @NamedQuery(name = QUERY_CREDENTIALS_BY_USERID_CREDENTIAL_TYPE_TARGET, query = "SELECT c FROM DBCredential c " + - "WHERE c.user.id = :user_id and c.credentialType = :credential_type and c.credentialTarget = :credential_target"), + "WHERE c.user.id = :user_id and c.credentialType = :credential_type and c.credentialTarget = :credential_target order by c.id"), // case-insensitive search -- GitLab