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()">&times;</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