From 5f732fecc0b6642a431f86a97674f2c2f46f6743 Mon Sep 17 00:00:00 2001 From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu> Date: Mon, 18 Dec 2023 08:37:03 +0100 Subject: [PATCH] [EDELIVERY-11699] add expired alert to certificate panel + unify user access token and user certificate settings. --- .../src/app/security/credential.model.ts | 1 + .../access-token-panel.component.html | 54 ++++---- .../access-token-panel.component.ts | 3 +- .../user-access-tokens.component.html | 2 +- .../user-certificate-panel.component.html | 118 ++++++++++-------- .../user-certificate-panel.component.ts | 2 +- .../user-certificates.component.html | 30 ++++- .../user-certificates.component.scss | 12 ++ .../user-certificates.component.ts | 23 +++- .../mysql-4.1_integration_test_data.sql | 9 +- .../oracle-4.1_integration_test_data.sql | 14 +-- 11 files changed, 168 insertions(+), 100 deletions(-) diff --git a/smp-angular/src/app/security/credential.model.ts b/smp-angular/src/app/security/credential.model.ts index 9e0d8cade..cd6aa2aa7 100644 --- a/smp-angular/src/app/security/credential.model.ts +++ b/smp-angular/src/app/security/credential.model.ts @@ -6,6 +6,7 @@ export interface CredentialRo { credentialId?: string; name: string; active: boolean; + expired?: boolean; description?: string; updatedOn?: Date; expireOn?: Date; 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 f2576aaa3..ed1ac6187 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 @@ -1,31 +1,35 @@ -<mat-expansion-panel [expanded]="_active"> - <mat-expansion-panel-header> - {{ credential?.name }} - </mat-expansion-panel-header> - <div class="panel smp-data-panel" [formGroup]="credentialForm" (ngSubmit)="onSaveButtonClicked()"> - <div style="display: flex;flex-flow: row wrap;"> - <mat-form-field style="flex-grow: 2"> - <mat-label>Access token ID</mat-label> - <input matInput +<mat-expansion-panel [expanded]="_expanded"> + <mat-expansion-panel-header style="height: 72px"> + <div style="display: flex; flex-direction: column;width: 100%; padding-right: 10px"> + <smp-warning-panel *ngIf="!!_credential?.expired;" class="smp-certificate-warning-panel" + [padding]="false" + icon="error" + label="Access token is expired"> + </smp-warning-panel> + <div style="display: flex; flex-direction: row; justify-content: space-between; gap: 3px; padding-left: 5px;"> + <input matInput style="flex-grow: 1; padding: 5px 0" [value]="credential?.name" + [disabled]="!credential?.active" maxlength="255" readonly> - </mat-form-field> - <div style="display: inline"> - <button id="deleteButton" mat-raised-button - (click)="onDeleteButtonClicked()" - color="primary" > - <mat-icon>delete</mat-icon> - <span>Delete</span> - </button> - <button id="saveButton" mat-raised-button - (click)="onSaveButtonClicked()" - color="primary" - [disabled]="!submitButtonEnabled" > - <mat-icon>save</mat-icon> - <span>Save</span> - </button> + <div style="display: inline"> + <button id="deleteButton" mat-raised-button + (click)="onDeleteButtonClicked()" + color="primary" > + <mat-icon>delete</mat-icon> + <span>Delete</span> + </button> + <button id="saveButton" mat-raised-button + (click)="onSaveButtonClicked()" + color="primary" + [disabled]="!submitButtonEnabled" > + <mat-icon>save</mat-icon> + <span>Save</span> + </button> + </div> </div> </div> + </mat-expansion-panel-header> + <div class="panel smp-data-panel" [formGroup]="credentialForm" (ngSubmit)="onSaveButtonClicked()"> <mat-form-field style="width: 100%"> <mat-label>Description</mat-label> <input matInput @@ -80,4 +84,4 @@ </mat-form-field> </div> </div> -<mat-expansion-panel> +</mat-expansion-panel> 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 a3fc41d92..9a6e22e34 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 @@ -19,7 +19,7 @@ export class AccessTokenPanelComponent implements BeforeLeaveGuard { _credential: CredentialRo; credentialForm: FormGroup; - _active: boolean; + _expanded: boolean = false; constructor(private formBuilder: FormBuilder) { this.credentialForm = formBuilder.group({ @@ -37,7 +37,6 @@ export class AccessTokenPanelComponent implements BeforeLeaveGuard { @Input() set credential(value: CredentialRo) { this._credential = value; - this._active = value.active; if (this._credential) { this.credentialForm.controls['active'].setValue(this._credential.active); this.credentialForm.controls['description'].setValue(this._credential.description); diff --git a/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.html b/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.html index 18ea11f34..81a843da2 100644 --- a/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.html +++ b/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.html @@ -8,7 +8,7 @@ <th mat-header-cell *matHeaderCellDef> Access Tokens </th> <td mat-cell *matCellDef="let token" [ngClass]="{'datatable-row-error': token.invalid}" - [matTooltip]="token.certificateId"> + [matTooltip]="token.name"> <access-token-panel (onDeleteEvent)="onDeleteItemClicked(token)" (onSaveEvent)="onSaveItemClicked(token)" [credential]="token"></access-token-panel> diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.html b/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.html index 163c73123..bbb4ea6a9 100644 --- a/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.html +++ b/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.html @@ -1,57 +1,77 @@ -<div class="panel smp-data-panel" [formGroup]="credentialForm" (ngSubmit)="onSaveButtonClicked()"> - <smp-warning-panel *ngIf="_credential.certificate?.invalid;" class="smp-certificate-warning-panel" - [padding]="false" - icon="error" - label="Invalid certificate: {{_credential.certificate.invalidReason}}"> - </smp-warning-panel> - <div style="display: flex;flex-flow: row wrap;"> - <mat-form-field style="flex-grow: 2"> - <mat-label>Certificate ID</mat-label> - <input matInput [matTooltip]="credential?.name" - [value]="credential?.name" - maxlength="255" readonly> - </mat-form-field> - <div style="display: inline;display: flex; flex-direction: row; justify-content: space-between; gap: 3px;"> - <button id="deleteButton" mat-raised-button - (click)="onDeleteButtonClicked()" - color="primary" > - <mat-icon>delete</mat-icon> - <span>Delete</span> - </button> - <button id="saveButton" mat-raised-button - (click)="onSaveButtonClicked()" - color="primary" - [disabled]="!submitButtonEnabled" > - <mat-icon>save</mat-icon> - <span>Save</span> - </button> +<mat-expansion-panel [expanded]="_expanded" [formGroup]="credentialForm" (ngSubmit)="onSaveButtonClicked()"> + <mat-expansion-panel-header style="height: 72px"> + <div style="display: flex; flex-direction: column;width: 100%; padding-right: 10px"> + <smp-warning-panel *ngIf="_credential.certificate?.invalid;" class="smp-certificate-warning-panel" + [padding]="false" + icon="error" + label="Invalid certificate: {{_credential.certificate.invalidReason}}"> + </smp-warning-panel> + <div style="display: flex;flex-flow: row; align-items: center; width: 100%"> + + <input matInput style="flex-grow: 1; padding: 5px 0" [matTooltip]="credential?.name" + [value]="credential?.name" + [disabled]="!credential?.active" + maxlength="255" readonly> + + <div + style="display: flex; flex-direction: row; justify-content: space-between; gap: 3px; padding-left: 5px;"> + <button id="deleteButton" mat-raised-button + (click)="onDeleteButtonClicked()" + color="primary"> + <mat-icon>delete</mat-icon> + <span>Delete</span> + </button> + <button id="saveButton" mat-raised-button + (click)="onSaveButtonClicked()" + color="primary" + [disabled]="!submitButtonEnabled"> + <mat-icon>save</mat-icon> + <span>Save</span> + </button> + </div> + </div> + </div> + </mat-expansion-panel-header> + <div class="panel smp-data-panel"> + <div style="display: flex;flex-flow: row wrap;"> + <mat-form-field style="flex-grow: 2"> + <mat-label>Certificate ID</mat-label> + <input matInput [matTooltip]="credential?.certificate?.certificateId" + [value]="credential?.certificate?.certificateId" + maxlength="255" readonly> + </mat-form-field> + <button id="showButton" mat-raised-button (click)="onShowCertificateButtonClicked()" color="primary" - > + > <mat-icon>article</mat-icon> - <span>Show</span> + <span>Show Details</span> </button> + </div> - </div> - <mat-form-field style="width: 100%"> - <mat-label>Description</mat-label> - <input matInput placeholder="Description" - formControlName="description" - maxlength="255"> - </mat-form-field> - <div style="display: flex;flex-flow: row wrap;"> - <mat-checkbox formControlName="active"> - Active - </mat-checkbox> - <mat-form-field appearance="fill" style="flex-grow: 1"> - <mat-label>Validity period of the certificate</mat-label> - <mat-date-range-input > - <input matStartDate formControlName="activeFrom" placeholder="Start date"> - <input matEndDate formControlName="expireOn" placeholder="End date"> - </mat-date-range-input> - <smp-field-error *ngIf="credentialForm.controls.activeFrom.hasError('matStartDateInvalid')">Invalid active from date</smp-field-error > - <smp-field-error *ngIf="credentialForm.controls.expireOn.hasError('matEndDateInvalid')">Invalid expire on date</smp-field-error > + <mat-form-field style="width: 100%"> + <mat-label>Description</mat-label> + <input matInput placeholder="Description" + formControlName="description" + maxlength="255"> </mat-form-field> + <div style="display: flex;flex-flow: row wrap;"> + <mat-checkbox formControlName="active"> + Active + </mat-checkbox> + <mat-form-field appearance="fill" style="flex-grow: 1"> + <mat-label>Validity period of the certificate</mat-label> + <mat-date-range-input> + <input matStartDate formControlName="activeFrom" placeholder="Start date"> + <input matEndDate formControlName="expireOn" placeholder="End date"> + </mat-date-range-input> + <smp-field-error *ngIf="credentialForm.controls.activeFrom.hasError('matStartDateInvalid')">Invalid active from + date + </smp-field-error> + <smp-field-error *ngIf="credentialForm.controls.expireOn.hasError('matEndDateInvalid')">Invalid expire on date + </smp-field-error> + </mat-form-field> + </div> </div> -</div> +</mat-expansion-panel> diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.ts b/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.ts index 8f55444ab..232de7158 100644 --- a/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.ts +++ b/smp-angular/src/app/user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component.ts @@ -18,7 +18,7 @@ export class UserCertificatePanelComponent implements BeforeLeaveGuard { dateFormat: string = 'yyyy-MM-dd' _credential: CredentialRo; - + _expanded: boolean = false; credentialForm: FormGroup; constructor(private formBuilder: FormBuilder) { diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.html b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.html index 1a2b41aae..b7f5c924a 100644 --- a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.html +++ b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.html @@ -2,18 +2,36 @@ <data-panel title="User X509 Certificates" text="Register a Client X509 certificates to access the DomiSMP API using the mutual TLS authentication." [labelColumnContent]="commonToolbar"> - <user-certificate-panel *ngFor="let item of certificates; trackBy: trackListItem" - (onDeleteEvent)="onDeleteItemClicked(item)" - (onSaveEvent)="onSaveItemClicked(item)" - (onShowCertificate)="onShowItemClicked(item)" - [credential]="item"></user-certificate-panel> + + <table mat-table id="user-certificate-table" [dataSource]="dataSource" class="panel smp-data-panel"> + <ng-container matColumnDef="certificates"> + <th mat-header-cell *matHeaderCellDef>User Certificates</th> + <td mat-cell *matCellDef="let cert" + [ngClass]="{'datatable-row-error': cert.invalid}" + [matTooltip]="cert.certificateId"> + <user-certificate-panel (onDeleteEvent)="onDeleteItemClicked(cert)" + (onSaveEvent)="onSaveItemClicked(cert)" + (onShowCertificate)="onShowItemClicked(cert)" + [credential]="cert"></user-certificate-panel> + + </td> + <tr mat-header-row class="user-certificate-table-header" *matHeaderRowDef="displayedColumns"></tr> + <tr mat-row class="user-certificate-table-data" *matRowDef="let myRowData; columns: displayedColumns"></tr> + </ng-container> + </table> + + <mat-paginator class="mat-elevation-z2" id="tokens-paginator" + [hidePageSize]="true" + [showFirstLastButtons]="true" + [pageSize]="5" aria-label="Select page"></mat-paginator> </data-panel> + </div> <ng-template #commonToolbar> <button id="importNewCertificateButton" mat-raised-button color="primary" matTooltip="Import new certificate" style="margin: 2em " - (click)="createNew()"> + (click)="createNew()"> <mat-icon>article</mat-icon> <span>Import new certificate</span> </button> diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.scss b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.scss index c35cf279c..7478332cd 100644 --- a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.scss +++ b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.scss @@ -6,3 +6,15 @@ padding: 0 2em; } +#user-certificate-table { + padding: 0; + border: none; +} + +.user-certificate-table-header { + display: none; +} + +.user-certificate-table-data td { + padding: 0; +} diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts index 5fcaa9436..1148d5479 100644 --- a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts +++ b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts @@ -1,5 +1,4 @@ -import {Component, QueryList, ViewChildren,} from '@angular/core'; -import {SecurityService} from "../../security/security.service"; +import {AfterViewInit, Component, QueryList, ViewChild, ViewChildren,} from '@angular/core'; import {UserService} from "../../system-settings/user/user.service"; import {CredentialRo} from "../../security/credential.model"; import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component"; @@ -10,21 +9,26 @@ import {CredentialDialogComponent} from "../../common/dialogs/credential-dialog/ import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard"; import {UserCertificatePanelComponent} from "./user-certificate-panel/user-certificate-panel.component"; import {HttpErrorHandlerService} from "../../common/error/http-error-handler.service"; +import {MatTableDataSource} from "@angular/material/table"; +import {MatPaginator} from "@angular/material/paginator"; @Component({ templateUrl: './user-certificates.component.html', styleUrls: ['./user-certificates.component.scss'] }) -export class UserCertificatesComponent implements BeforeLeaveGuard { +export class UserCertificatesComponent implements AfterViewInit, BeforeLeaveGuard { + displayedColumns: string[] = ['certificates']; + dataSource: MatTableDataSource<CredentialRo> = new MatTableDataSource(); certificates: CredentialRo[] = []; + @ViewChild(MatPaginator) + paginator: MatPaginator; @ViewChildren(UserCertificatePanelComponent) userCertificateCredentialComponents: QueryList<UserCertificatePanelComponent>; - constructor(private securityService: SecurityService, - private httpErrorHandlerService: HttpErrorHandlerService, + constructor(private httpErrorHandlerService: HttpErrorHandlerService, private userService: UserService, public dialog: MatDialog) { @@ -39,8 +43,13 @@ export class UserCertificatesComponent implements BeforeLeaveGuard { this.userService.getUserCertificateCredentials(); } + ngAfterViewInit() { + this.dataSource.paginator = this.paginator; + } + public updateCredentials(certificates: CredentialRo[]) { this.certificates = certificates; + this.dataSource.data = this.certificates; } public updateCredential(certificate: CredentialRo) { @@ -60,6 +69,10 @@ export class UserCertificatesComponent implements BeforeLeaveGuard { ...this.certificates, certificate]; } + + this.dataSource.data = this.certificates; + // show the last page + this.paginator.lastPage(); } public trackListItem(index: number, credential: CredentialRo) { diff --git a/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql b/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql index ae7ed73d6..b7127990e 100644 --- a/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql +++ b/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql @@ -6,10 +6,11 @@ insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, insert into SMP_USER (ID, USERNAME, ACTIVE, APPLICATION_ROLE, EMAIL, CREATED_ON, LAST_UPDATED_ON) values (2, 'user', 1, 'USER', 'user@mail-example.local', NOW(), NOW()); -insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values -(4, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'USERNAME_PASSWORD','UI', NOW(), NOW()), -(5, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', NOW(), NOW()), -(6, 2, 1, 'LvglqPCs', '$2a$10$zaFAFqFIfLUZx15ZDPMvDeWBtsZLaAkrY3Vmya5e3/yCCkFq/FJCu', 'ACCESS_TOKEN', 'REST_API', NOW(), NOW()) ; +insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, ACTIVE_FROM, EXPIRE_ON, CREATED_ON, LAST_UPDATED_ON) values +(4, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'USERNAME_PASSWORD','UI', DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_ADD(NOW(), INTERVAL 3 DAY), NOW(), NOW()), +(5, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', DATE_SUB(NOW(),INTERVAL 3 DAY), DATE_ADD(NOW(), INTERVAL 3 DAY), NOW(), NOW()), +(6, 2, 1, 'LvglqPCs', '$2a$10$zaFAFqFIfLUZx15ZDPMvDeWBtsZLaAkrY3Vmya5e3/yCCkFq/FJCu', 'ACCESS_TOKEN', 'REST_API', DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_ADD(NOW(), INTERVAL 3 DAY), NOW(), NOW()), +(-1, 2, 1, 'expired', '$2a$10$zaFAFqFIfLUZx15ZDPMvDeWBtsZLaAkrY3Vmya5e3/yCCkFq/FJCu', 'ACCESS_TOKEN', 'REST_API', DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY), NOW(), NOW()) ; insert into SMP_USER (ID, USERNAME, ACTIVE, APPLICATION_ROLE, CREATED_ON, LAST_UPDATED_ON) values (3, 'soapui_test_01', 1, 'USER', NOW(), NOW()), diff --git a/smp-soapui-tests/groovy/oracle-4.1_integration_test_data.sql b/smp-soapui-tests/groovy/oracle-4.1_integration_test_data.sql index c3769b83f..8d0e7f054 100644 --- a/smp-soapui-tests/groovy/oracle-4.1_integration_test_data.sql +++ b/smp-soapui-tests/groovy/oracle-4.1_integration_test_data.sql @@ -44,17 +44,17 @@ insert into SMP_USER (ID, USERNAME, ACTIVE, APPLICATION_ROLE, EMAIL, CREATED_ON, (1, 'system', 1, 'SYSTEM_ADMIN', 'system@mail-example.local', sysdate, sysdate); insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values (2, 1, 1, 'system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'USERNAME_PASSWORD','UI', sysdate, sysdate); -insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values -(3, 1, 1, 'pat_system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', sysdate, sysdate); +insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, ACTIVE_FROM, EXPIRE_ON, CREATED_ON, LAST_UPDATED_ON) values +(3, 1, 1, 'pat_system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', sysdate-3, sysdate+3, sysdate, sysdate); insert into SMP_USER (ID, USERNAME, ACTIVE, APPLICATION_ROLE, EMAIL, CREATED_ON, LAST_UPDATED_ON) values (2, 'user', 1, 'USER', 'user@mail-example.local', sysdate, sysdate); insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values -(4, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'USERNAME_PASSWORD','UI', sysdate, sysdate); -insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values -(5, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', sysdate, sysdate); -insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, CREATED_ON, LAST_UPDATED_ON) values -(6, 2, 1, 'LvglqPCs', '$2a$10$zaFAFqFIfLUZx15ZDPMvDeWBtsZLaAkrY3Vmya5e3/yCCkFq/FJCu', 'ACCESS_TOKEN', 'REST_API', sysdate, sysdate) ; +(4, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'USERNAME_PASSWORD','UI', sysdate, sysdate); +insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET, ACTIVE_FROM, EXPIRE_ON,CREATED_ON, LAST_UPDATED_ON) values +(5, 2, 1, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'ACCESS_TOKEN', 'REST_API', sysdate-3, sysdate+3, sysdate, sysdate); +insert into SMP_CREDENTIAL (ID, FK_USER_ID, CREDENTIAL_ACTIVE, CREDENTIAL_NAME, CREDENTIAL_VALUE, CREDENTIAL_TYPE, CREDENTIAL_TARGET,ACTIVE_FROM, EXPIRE_ON, CREATED_ON, LAST_UPDATED_ON) values +(6, 2, 1, 'LvglqPCs', '$2a$10$zaFAFqFIfLUZx15ZDPMvDeWBtsZLaAkrY3Vmya5e3/yCCkFq/FJCu', 'ACCESS_TOKEN', 'REST_API', sysdate-3, sysdate+3, sysdate, sysdate) ; insert into SMP_USER (ID, USERNAME, ACTIVE, APPLICATION_ROLE, CREATED_ON, LAST_UPDATED_ON) values (3, 'soapui_test_01', 1, 'USER', sysdate, sysdate); -- GitLab