Skip to content

Commit f81e49c

Browse files
authored
Merge pull request #676 from openziti/675-sessions-and-terminators
Updates and cleanup for sessions and terminators list pages
2 parents d25c799 + fa44967 commit f81e49c

22 files changed

+228
-57
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "io.netfoundry.zac",
3-
"version": "3.12.0",
3+
"version": "3.12.1",
44
"description": "Ziti Administration Console",
55
"main": "server.js",
66
"type": "module",

projects/ziti-console-lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openziti/ziti-console-lib",
3-
"version": "0.12.1",
3+
"version": "0.12.2",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/openziti/ziti-console"

projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-name/table-cell-name.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ export class TableCellNameComponent implements ICellRendererAngularComp {
3939
if (!result?.confirmed) {
4040
return;
4141
}
42-
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
42+
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${get(this.item, this.cellParams.itemProp, this.item.id)}`);
4343
})
4444
return;
4545
}
46-
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
46+
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${get(this.item, this.cellParams.itemProp, this.item.id)}`);
4747
}
4848

4949
get cellText() {

projects/ziti-console-lib/src/lib/features/data-table/data-table.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,5 +155,6 @@
155155
[image]="noItemsImage"
156156
[isEmpty]="!rowData || rowData.length === 0"
157157
[typeName]="this.entityTypeLabel"
158+
[hasAdd]="showNoItemsAdd"
158159
></lib-no-items>
159-
</ng-template>
160+
</ng-template>

projects/ziti-console-lib/src/lib/features/data-table/data-table.component.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -740,9 +740,24 @@ export class DataTableComponent implements OnChanges, OnInit {
740740

741741
updateEntityTypeLabel() {
742742
switch(this.svc.tableId) {
743+
case 'api-sessions':
744+
this.entityTypeLabel = 'API Sessions';
745+
break;
746+
case 'auth-policies':
747+
this.entityTypeLabel = 'Auth Policies';
748+
break;
749+
case 'certificate-authorities':
750+
this.entityTypeLabel = 'Certificate Authorities';
751+
break;
752+
case 'ext-jwt-signers':
753+
this.entityTypeLabel = 'External JWT Signers';
754+
break;
743755
case 'identities':
744756
this.entityTypeLabel = 'Identities';
745757
break;
758+
case 'posture-checks':
759+
this.entityTypeLabel = 'Posture Checks';
760+
break;
746761
case 'edge-routers':
747762
this.entityTypeLabel = 'Edge Routers';
748763
break;
@@ -752,6 +767,9 @@ export class DataTableComponent implements OnChanges, OnInit {
752767
case 'configurations':
753768
this.entityTypeLabel = 'Configs';
754769
break;
770+
case 'config-types':
771+
this.entityTypeLabel = 'Config Types';
772+
break;
755773
case 'service-policies':
756774
this.entityTypeLabel = 'Service Policies';
757775
break;
@@ -760,6 +778,15 @@ export class DataTableComponent implements OnChanges, OnInit {
760778
break;
761779
case 'service-edge-router-policies':
762780
this.entityTypeLabel = 'Service Edge Router Policies';
781+
break
782+
case 'sessions':
783+
this.entityTypeLabel = 'Sessions';
784+
break;
785+
case 'terminators':
786+
this.entityTypeLabel = 'Terminators';
787+
break;
788+
case 'transit-routers':
789+
this.entityTypeLabel = 'Transit Routers';
763790
break;
764791
}
765792
}
@@ -810,7 +837,11 @@ export class DataTableComponent implements OnChanges, OnInit {
810837
this.menuColumnDefinition.headerComponentParams;
811838
} else if ( (this.options.noSelect && this.options.noMenu)) {
812839
// Don't add any additional columns
813-
} else if (this._view !== 'upload') {
840+
} else if ( (this.options.noSelect && !this.options.noMenu)) {
841+
this.mergedColumnDefinitions.push(this.menuColumnDefinition);
842+
} else if ( !this.options.noSelect && this.options.noMenu) {
843+
this.mergedColumnDefinitions.push(this.selectColumnDefinition);
844+
} else if (this._view !== 'upload') {
814845
this.mergedColumnDefinitions.splice(0, 0, this.selectColumnDefinition);
815846
this.mergedColumnDefinitions.push(this.menuColumnDefinition);
816847
}

projects/ziti-console-lib/src/lib/features/no-items/no-items.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<div (click)="iconClick()">
33
<div [ngStyle]="background" class="icon"></div>
44
<div class="title">
5-
This network currently has no {{ typeName }} to display.<br/><span [hidden]="!hasAdd"
5+
This network currently has no {{ typeName }} to display.<br/>
6+
<span [hidden]="!hasAdd"
67
>Tap on the <span class="addExample"></span> to add one.</span
78
>
89
</div>

projects/ziti-console-lib/src/lib/features/projectable-forms/identity/identity-form.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ export class IdentityFormComponent extends ProjectableForm implements OnInit, On
288288
});
289289
}
290290

291-
validate() {
291+
validate(identity?) {
292292
this.errors = {};
293293
if (isEmpty(this.formData.name)) {
294294
this.errors['name'] = true;

projects/ziti-console-lib/src/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@
185185
<code class="oidc-error-message-source">{{oidcErrorMessageSource}}: </code>
186186
<code class="oidc-error-message-detail">{{oidcErrorMessageDetail}}</code>
187187
<code class="oidc-error-message-detail2" *ngIf="oidcErrorMessageDetail2">{{oidcErrorMessageDetail2}}</code>
188+
<code class="oidc-error-message-detail2" *ngIf="oidcErrorMessageDetail3">{{oidcErrorMessageDetail3}}</code>
188189
</div>
189190
<div class="oidc-token-claims-container" *ngIf="oidcAuthTokenClaims">
190191
<code class="oidc-token-claims-title">OAuth Token Claims: </code>

projects/ziti-console-lib/src/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export class JwtSignerFormComponent extends ProjectableForm implements OnInit, O
6969
oidcErrorMessageSource;
7070
oidcErrorMessageDetail;
7171
oidcErrorMessageDetail2;
72+
oidcErrorMessageDetail3;
7273
jwksValidationError;
7374
oidcAuthTokenClaims;
7475
oidcClaims;
@@ -480,6 +481,7 @@ export class JwtSignerFormComponent extends ProjectableForm implements OnInit, O
480481
this.oidcErrorMessageSource = undefined;
481482
this.oidcErrorMessageDetail = undefined;
482483
this.oidcErrorMessageDetail2 = undefined;
484+
this.oidcErrorMessageDetail3 = undefined;
483485
this.jwksValidationError = undefined;
484486
const jwksValid = await this.testJWKS();
485487
if (!jwksValid) {
@@ -529,6 +531,7 @@ export class JwtSignerFormComponent extends ProjectableForm implements OnInit, O
529531
this.oidcErrorMessageSource = errorMessageSource;
530532
if (oidcAuthTokenClaims) {
531533
this.oidcAuthTokenClaims = JSON.parse(oidcAuthTokenClaims);
534+
this.oidcErrorMessageDetail3 = 'Check the list of auth token claims below to confirm if your provider is returning the correct details.'
532535
this.validateTokenClaims(this.oidcAuthTokenClaims, this.overrideFormData);
533536
}
534537
}

projects/ziti-console-lib/src/lib/models/api-session.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ export class APISession {
88
identityId: string;
99
service: any;
1010
edgeRouters: any[];
11-
apiSessionId: string;
12-
apiSession: any;
11+
isCertExtendable: boolean;
12+
isMfaComplete: boolean;
13+
isMfaRequired: boolean;
1314
updatedAt: any;
1415
createdAt: any;
1516
id: string;

projects/ziti-console-lib/src/lib/pages/api-sessions/api-sessions-page.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
[totalCount]="totalCount"
1414
[emptyMsg]="'No API Sessions defined'"
1515
[filterApplied]="filterApplied"
16-
[filterColumn]="'identity'"
17-
[filterName]="'identity'"
16+
[filterColumn]="'id'"
17+
[filterName]="'ID'"
1818
[menuItems]="svc.menuItems"
1919
(gridReady)="gridReady($event)"
2020
>

projects/ziti-console-lib/src/lib/pages/api-sessions/api-sessions-page.service.ts

Lines changed: 55 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,57 @@ export class ApiSessionsPageService extends ListPageServiceClass {
8383

8484
return [
8585
{
86-
colId: 'identity',
87-
field: 'identity.name',
88-
headerName: 'Identity',
86+
colId: 'id',
87+
field: 'id',
88+
headerName: 'ID',
8989
headerComponent: TableColumnDefaultComponent,
9090
headerComponentParams: this.headerComponentParams,
9191
cellRenderer: TableCellNameComponent,
9292
cellRendererParams: { pathRoot: this.basePath },
93+
resizable: true,
94+
cellClass: 'nf-cell-vert-align tCol',
95+
width: this.remToPx(10),
96+
hide: false,
9397
onCellClicked: (data) => {
9498
if (this.hasSelectedText()) {
9599
return;
96100
}
97101
this.openEditForm(data?.data?.id);
98102
},
103+
},
104+
{
105+
colId: 'identity.name',
106+
field: 'identity.name',
107+
headerName: 'Identity Name',
108+
headerComponent: TableColumnDefaultComponent,
109+
cellRenderer: TableCellNameComponent,
110+
cellRendererParams: { pathRoot: 'identities', itemProp: 'identity.id' },
111+
onCellClicked: (data) => {
112+
if (this.hasSelectedText()) {
113+
return;
114+
}
115+
this.openIdentityForm(data?.data?.identityId);
116+
},
117+
resizable: true,
118+
cellClass: 'nf-cell-vert-align tCol',
119+
sortable: false,
120+
filter: true,
121+
sortColumn: this.sort.bind(this),
122+
},
123+
{
124+
colId: 'identity',
125+
field: 'identity.id',
126+
headerName: 'Identity ID',
127+
headerComponent: TableColumnDefaultComponent,
128+
headerComponentParams: this.headerComponentParams,
129+
cellRenderer: TableCellNameComponent,
130+
cellRendererParams: { pathRoot: 'identities', itemProp: 'identity.id' },
131+
onCellClicked: (data) => {
132+
if (this.hasSelectedText()) {
133+
return;
134+
}
135+
this.openIdentityForm(data?.data?.identityId);
136+
},
99137
resizable: true,
100138
cellClass: 'nf-cell-vert-align tCol',
101139
sortable: true,
@@ -106,6 +144,7 @@ export class ApiSessionsPageService extends ListPageServiceClass {
106144
colId: 'ipAddress',
107145
field: 'ipAddress',
108146
headerName: 'IP Address',
147+
headerComponentParams: this.headerComponentParams,
109148
headerComponent: TableColumnDefaultComponent,
110149
resizable: true,
111150
cellClass: 'nf-cell-vert-align tCol',
@@ -114,20 +153,22 @@ export class ApiSessionsPageService extends ListPageServiceClass {
114153
{
115154
colId: 'isMfaRequired',
116155
field: 'isMfaRequired',
117-
headerName: 'Is System',
156+
headerName: 'MFA Required',
118157
headerComponent: TableColumnDefaultComponent,
119158
resizable: true,
120159
cellClass: 'nf-cell-vert-align tCol',
121160
width: this.remToPx(10),
161+
hide: true
122162
},
123163
{
124164
colId: 'isMfaComplete',
125165
field: 'isMfaComplete',
126-
headerName: 'Is System',
166+
headerName: 'MFA Complete',
127167
headerComponent: TableColumnDefaultComponent,
128168
resizable: true,
129169
cellClass: 'nf-cell-vert-align tCol',
130170
width: this.remToPx(10),
171+
hide: true
131172
},
132173
{
133174
colId: 'lastActivity',
@@ -140,16 +181,6 @@ export class ApiSessionsPageService extends ListPageServiceClass {
140181
cellClass: 'nf-cell-vert-align tCol',
141182
width: this.remToPx(10),
142183
},
143-
{
144-
colId: 'id',
145-
field: 'id',
146-
headerName: 'ID',
147-
headerComponent: TableColumnDefaultComponent,
148-
resizable: true,
149-
cellClass: 'nf-cell-vert-align tCol',
150-
width: this.remToPx(10),
151-
hide: true
152-
},
153184
{
154185
colId: 'createdAt',
155186
field: 'createdAt',
@@ -165,9 +196,17 @@ export class ApiSessionsPageService extends ListPageServiceClass {
165196
];
166197
}
167198

199+
public openIdentityForm(itemId = '', basePath?) {
200+
if (isEmpty(itemId)) {
201+
itemId = 'create';
202+
}
203+
basePath = basePath ? basePath : this.basePath;
204+
this.router?.navigateByUrl(`identities/${itemId}`);
205+
}
206+
168207
getData(filters?: FilterObj[], sort?: any) {
169208
if (sort.sortBy === 'name') {
170-
sort.sortBy = 'identity';
209+
sort.sortBy = 'id';
171210
}
172211
// we can customize filters or sorting here before moving on...
173212
return super.getTableData('api-sessions', this.paging, filters, sort)

projects/ziti-console-lib/src/lib/pages/callback/callback.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export class CallbackComponent implements OnInit {
106106
queryParams: {
107107
oidcAuthResult: 'failed',
108108
oidcAuthErrorMessageDetail: 'Unable to initialize OAuth login. Empty response of OAuth service.',
109-
oidcAuthErrorMessageSource: 'OAuth Login Error',
109+
oidcAuthErrorMessageSource: 'OAuth Provider Error',
110110
}
111111
});
112112
}
@@ -125,7 +125,7 @@ export class CallbackComponent implements OnInit {
125125
queryParams: {
126126
oidcAuthResult: 'failed',
127127
oidcAuthErrorMessageDetail: errorMessage,
128-
oidcAuthErrorMessageSource: 'OAuth Login Error',
128+
oidcAuthErrorMessageSource: 'OAuth Provider Error',
129129
}
130130
});
131131
}
@@ -144,7 +144,7 @@ export class CallbackComponent implements OnInit {
144144
queryParams: {
145145
oidcAuthResult: 'failed',
146146
oidcAuthErrorMessageDetail: errorMessage,
147-
oidcAuthErrorMessageSource: 'OAuth Login Error',
147+
oidcAuthErrorMessageSource: 'OAuth Provider Error',
148148
}
149149
});
150150
}

projects/ziti-console-lib/src/lib/pages/jwt-signers/jwt-signers-page.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
[showAdd]="!itemsSelected"
1313
(actionClicked)="headerActionClicked($event)"></lib-list-page-header>
1414

15-
<lib-data-table [tableId]="'configurations'"
15+
<lib-data-table [tableId]="'ext-jwt-signers'"
1616
[rowData]="rowData"
1717
[columnDefinitions]="columnDefs"
1818
(actionRequested)="tableAction($event)"

projects/ziti-console-lib/src/lib/pages/sessions/sessions-page.component.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
[totalCount]="totalCount"
1414
[emptyMsg]="'No Sessions defined'"
1515
[filterApplied]="filterApplied"
16-
[filterColumn]="'service'"
17-
[filterName]="'service'"
16+
[filterColumn]="'id'"
17+
[filterName]="'id'"
1818
[menuItems]="svc.menuItems"
19+
[showNoItemsAdd]="false"
1920
(gridReady)="gridReady($event)"
2021
>
2122
</lib-data-table>

0 commit comments

Comments
 (0)