mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-27 13:02:59 +02:00
add ip, ua columns to the recent logs
update translations Signed-off-by: Maksym Trofimenko <maksym@container-registry.com>
This commit is contained in:
parent
a69ab377c3
commit
eb5fc28340
@ -56,6 +56,12 @@
|
|||||||
<clr-dg-column>{{
|
<clr-dg-column>{{
|
||||||
'AUDIT_LOG.OPERATION' | translate
|
'AUDIT_LOG.OPERATION' | translate
|
||||||
}}</clr-dg-column>
|
}}</clr-dg-column>
|
||||||
|
<clr-dg-column *ngIf="isIPTracked()">{{
|
||||||
|
'AUDIT_LOG.IP_ADDRESS' | translate
|
||||||
|
}}</clr-dg-column>
|
||||||
|
<clr-dg-column *ngIf="isUATracked()">{{
|
||||||
|
'AUDIT_LOG.USER_AGENT' | translate
|
||||||
|
}}</clr-dg-column>
|
||||||
<clr-dg-column>{{
|
<clr-dg-column>{{
|
||||||
'AUDIT_LOG.TIMESTAMP' | translate
|
'AUDIT_LOG.TIMESTAMP' | translate
|
||||||
}}</clr-dg-column>
|
}}</clr-dg-column>
|
||||||
@ -67,6 +73,12 @@
|
|||||||
<clr-dg-cell>{{ l.resource }}</clr-dg-cell>
|
<clr-dg-cell>{{ l.resource }}</clr-dg-cell>
|
||||||
<clr-dg-cell>{{ l.resource_type }}</clr-dg-cell>
|
<clr-dg-cell>{{ l.resource_type }}</clr-dg-cell>
|
||||||
<clr-dg-cell>{{ l.operation }}</clr-dg-cell>
|
<clr-dg-cell>{{ l.operation }}</clr-dg-cell>
|
||||||
|
<clr-dg-cell *ngIf="isIPTracked()">{{
|
||||||
|
l.client_ip
|
||||||
|
}}</clr-dg-cell>
|
||||||
|
<clr-dg-cell *ngIf="isUATracked()">{{
|
||||||
|
l.user_agent
|
||||||
|
}}</clr-dg-cell>
|
||||||
<clr-dg-cell>{{
|
<clr-dg-cell>{{
|
||||||
l.op_time | harborDatetime : 'short'
|
l.op_time | harborDatetime : 'short'
|
||||||
}}</clr-dg-cell>
|
}}</clr-dg-cell>
|
||||||
|
@ -10,6 +10,7 @@ import { AuditlogService } from '../../../../../ng-swagger-gen/services/auditlog
|
|||||||
import { HttpHeaders, HttpResponse } from '@angular/common/http';
|
import { HttpHeaders, HttpResponse } from '@angular/common/http';
|
||||||
import { delay } from 'rxjs/operators';
|
import { delay } from 'rxjs/operators';
|
||||||
import { SharedTestingModule } from '../../../shared/shared.module';
|
import { SharedTestingModule } from '../../../shared/shared.module';
|
||||||
|
import { AppConfigService } from '../../../services/app-config.service';
|
||||||
|
|
||||||
describe('RecentLogComponent (inline template)', () => {
|
describe('RecentLogComponent (inline template)', () => {
|
||||||
let component: RecentLogComponent;
|
let component: RecentLogComponent;
|
||||||
@ -20,6 +21,9 @@ describe('RecentLogComponent (inline template)', () => {
|
|||||||
return undefined;
|
return undefined;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
let fakeAppConfigService = {
|
||||||
|
handleError: () => {},
|
||||||
|
};
|
||||||
const mockedAuditLogs: AuditLog[] = [];
|
const mockedAuditLogs: AuditLog[] = [];
|
||||||
for (let i = 0; i < 18; i++) {
|
for (let i = 0; i < 18; i++) {
|
||||||
let item: AuditLog = {
|
let item: AuditLog = {
|
||||||
@ -83,6 +87,7 @@ describe('RecentLogComponent (inline template)', () => {
|
|||||||
providers: [
|
providers: [
|
||||||
{ provide: ErrorHandler, useValue: fakedErrorHandler },
|
{ provide: ErrorHandler, useValue: fakedErrorHandler },
|
||||||
{ provide: AuditlogService, useValue: fakedAuditlogService },
|
{ provide: AuditlogService, useValue: fakedAuditlogService },
|
||||||
|
{ provide: AppConfigService, useValue: fakeAppConfigService },
|
||||||
],
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
});
|
});
|
||||||
|
@ -17,6 +17,7 @@ import { finalize } from 'rxjs/operators';
|
|||||||
import { AuditlogService } from '../../../../../ng-swagger-gen/services/auditlog.service';
|
import { AuditlogService } from '../../../../../ng-swagger-gen/services/auditlog.service';
|
||||||
import { AuditLog } from '../../../../../ng-swagger-gen/models/audit-log';
|
import { AuditLog } from '../../../../../ng-swagger-gen/models/audit-log';
|
||||||
import { ClrDatagridStateInterface } from '@clr/angular';
|
import { ClrDatagridStateInterface } from '@clr/angular';
|
||||||
|
import { AppConfigService } from '../../../services/app-config.service';
|
||||||
import {
|
import {
|
||||||
getPageSizeFromLocalStorage,
|
getPageSizeFromLocalStorage,
|
||||||
PageSizeMapKeys,
|
PageSizeMapKeys,
|
||||||
@ -43,7 +44,8 @@ export class RecentLogComponent {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private logService: AuditlogService,
|
private logService: AuditlogService,
|
||||||
private errorHandler: ErrorHandler
|
private errorHandler: ErrorHandler,
|
||||||
|
private appConfigService: AppConfigService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public get inProgress(): boolean {
|
public get inProgress(): boolean {
|
||||||
@ -74,7 +76,18 @@ export class RecentLogComponent {
|
|||||||
this.defaultFilter = $event['target'].value;
|
this.defaultFilter = $event['target'].value;
|
||||||
this.doFilter(this.currentTerm);
|
this.doFilter(this.currentTerm);
|
||||||
}
|
}
|
||||||
|
isIPTracked(): boolean {
|
||||||
|
if (this.appConfigService?.configurations?.audit_log_track_ip_address) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
isUATracked(): boolean {
|
||||||
|
if (this.appConfigService?.configurations?.audit_log_track_user_agent) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
load(state?: ClrDatagridStateInterface) {
|
load(state?: ClrDatagridStateInterface) {
|
||||||
if (state && state.page) {
|
if (state && state.page) {
|
||||||
this.pageSize = state.page.size;
|
this.pageSize = state.page.size;
|
||||||
|
@ -533,11 +533,11 @@
|
|||||||
"OF": "von",
|
"OF": "von",
|
||||||
"NOT_FOUND": "Es konnten keine Logdaten gefunden werden!",
|
"NOT_FOUND": "Es konnten keine Logdaten gefunden werden!",
|
||||||
"RESOURCE": "Ressource",
|
"RESOURCE": "Ressource",
|
||||||
"RESOURCE_TYPE": "Ressourcen-Typ",
|
"RESOURCE_TYPE": "Ressourcen Typ",
|
||||||
"TRACK_IP": "IP-Address in Audit Log",
|
"TRACK_IP": "IP-Adresse im Audit-Log",
|
||||||
"TRACK_IP_TOOLTIP": "Capture the client's IP addresses on each request and store them in the audit log.",
|
"TRACK_IP_TOOLTIP": "Die IP-Adresse des Clients wird bei jeder Anfrage erfasst und im Audit-Protokoll gespeichert.",
|
||||||
"TRACK_UA": "User-Agent in Audit Log",
|
"TRACK_UA": "Benutzer-Agent im Audit-Log",
|
||||||
"TRACK_UA_TOOLTIP": "Capture the client's User-Agent on each request and store it in the audit log."
|
"TRACK_UA_TOOLTIP": "Der Benutzer-Agent des Clients wird bei jeder Anfrage erfasst und im Audit-Protokoll gespeichert."
|
||||||
},
|
},
|
||||||
"REPLICATION": {
|
"REPLICATION": {
|
||||||
"PUSH_BASED_ONLY": "Only for the push-based replication",
|
"PUSH_BASED_ONLY": "Only for the push-based replication",
|
||||||
|
@ -536,7 +536,7 @@
|
|||||||
"RESOURCE": "Resource",
|
"RESOURCE": "Resource",
|
||||||
"RESOURCE_TYPE": "Resource Type",
|
"RESOURCE_TYPE": "Resource Type",
|
||||||
"IP_ADDRESS": "IP Address",
|
"IP_ADDRESS": "IP Address",
|
||||||
"USER_AGENT": "User Agent",
|
"USER_AGENT": "User-Agent",
|
||||||
"TRACK_IP": "IP-Address in Audit Log",
|
"TRACK_IP": "IP-Address in Audit Log",
|
||||||
"TRACK_IP_TOOLTIP": "Capture the client's IP addresses on each request and store them in the audit log.",
|
"TRACK_IP_TOOLTIP": "Capture the client's IP addresses on each request and store them in the audit log.",
|
||||||
"TRACK_UA": "User-Agent in Audit Log",
|
"TRACK_UA": "User-Agent in Audit Log",
|
||||||
|
Loading…
Reference in New Issue
Block a user