TSK-1773: make routing-rest-enabled endpoint use the configured env
This commit is contained in:
parent
2c89353fc7
commit
610eabd3f5
|
|
@ -1,20 +1,26 @@
|
||||||
<div class="administration-overview">
|
<div class="administration-overview">
|
||||||
<nav mat-tab-nav-bar class="administration-overview__navbar" backgroundColor="#f5f5f5" >
|
<nav backgroundColor="#f5f5f5" class="administration-overview__navbar" mat-tab-nav-bar>
|
||||||
<a mat-tab-link class="administration-overview__navbar-links" routerLink="/taskana/administration/workbaskets" [active]="selectedTab == 'workbaskets'"
|
<a (click)="selectedTab = 'workbaskets'" [active]="selectedTab == 'workbaskets'"
|
||||||
(click)="selectedTab = 'workbaskets'">Workbaskets</a>
|
class="administration-overview__navbar-links" mat-tab-link
|
||||||
<a mat-tab-link class="administration-overview__navbar-links" routerLink="/taskana/administration/classifications" [active]="selectedTab == 'classifications'"
|
routerLink="/taskana/administration/workbaskets">Workbaskets</a>
|
||||||
(click)="selectedTab = 'classifications'">Classifications</a>
|
<a (click)="selectedTab = 'classifications'" [active]="selectedTab == 'classifications'"
|
||||||
<a mat-tab-link class="administration-overview__navbar-links" routerLink="/taskana/administration/access-items-management"
|
class="administration-overview__navbar-links" mat-tab-link
|
||||||
[active]="selectedTab == 'access-items-management'" (click)="selectedTab = 'access-items-management'">Access Items
|
routerLink="/taskana/administration/classifications">Classifications</a>
|
||||||
|
<a (click)="selectedTab = 'access-items-management'"
|
||||||
|
[active]="selectedTab == 'access-items-management'"
|
||||||
|
class="administration-overview__navbar-links"
|
||||||
|
mat-tab-link routerLink="/taskana/administration/access-items-management">Access Items
|
||||||
Management</a>
|
Management</a>
|
||||||
<a mat-tab-link class="administration-overview__navbar-links" routerLink="/taskana/administration/task-routing"
|
<a (click)="selectedTab = 'task-routing'" *ngIf="(routingAccess)"
|
||||||
[active]="selectedTab == 'task-routing'" (click)="selectedTab = 'task-routing'" *ngIf="(routingAccess$ | async)">Task Routing</a>
|
[active]="selectedTab == 'task-routing'"
|
||||||
|
class="administration-overview__navbar-links" mat-tab-link
|
||||||
|
routerLink="/taskana/administration/task-routing">Task Routing</a>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="administration-overview__domain">
|
<div class="administration-overview__domain">
|
||||||
<mat-form-field appearance="legacy">
|
<mat-form-field appearance="legacy">
|
||||||
<mat-select [value]="selectedDomain" matTooltip="Select domain">
|
<mat-select [value]="selectedDomain" matTooltip="Select domain">
|
||||||
<mat-option *ngFor="let domain of domains" [value]="domain" (click)="switchDomain(domain)">
|
<mat-option (click)="switchDomain(domain)" *ngFor="let domain of domains" [value]="domain">
|
||||||
{{domain? domain : 'MASTER DOMAIN'}}
|
{{domain ? domain : 'MASTER DOMAIN'}}
|
||||||
</mat-option>
|
</mat-option>
|
||||||
</mat-select>
|
</mat-select>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { Component, Input, OnInit } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { Router, ActivatedRoute } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { Observable, of, Subject } from 'rxjs';
|
import { Observable, Subject } from 'rxjs';
|
||||||
import { DomainService } from '../../../shared/services/domain/domain.service';
|
import { DomainService } from '../../../shared/services/domain/domain.service';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
import { TaskanaEngineService } from '../../../shared/services/taskana-engine/taskana-engine.service';
|
import { TaskanaEngineService } from '../../../shared/services/taskana-engine/taskana-engine.service';
|
||||||
|
|
@ -17,7 +17,7 @@ export class AdministrationOverviewComponent implements OnInit {
|
||||||
|
|
||||||
destroy$ = new Subject<void>();
|
destroy$ = new Subject<void>();
|
||||||
url$: Observable<any>;
|
url$: Observable<any>;
|
||||||
routingAccess$: Observable<boolean> = of(false);
|
routingAccess = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
|
@ -35,8 +35,12 @@ export class AdministrationOverviewComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.routingAccess$ = this.taskanaEngineService.isCustomRoutingRulesEnabled$;
|
this.taskanaEngineService
|
||||||
this.routingAccess$.pipe(takeUntil(this.destroy$)).subscribe();
|
.isCustomRoutingRulesEnabled()
|
||||||
|
.pipe(takeUntil(this.destroy$))
|
||||||
|
.subscribe((value) => {
|
||||||
|
this.routingAccess = value;
|
||||||
|
});
|
||||||
this.domainService
|
this.domainService
|
||||||
.getDomains()
|
.getDomains()
|
||||||
.pipe(takeUntil(this.destroy$))
|
.pipe(takeUntil(this.destroy$))
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,40 @@
|
||||||
<mat-nav-list class="navlist">
|
<mat-nav-list class="navlist">
|
||||||
<a mat-list-item class="navlist__item navlist__admin" [routerLink]=[administrationsUrl]
|
<a (click)="toggleSidenav()" *ngIf="administrationAccess" [routerLinkActive]="['active']"
|
||||||
[routerLinkActive]="['active']" *ngIf="administrationAccess" (click)="toggleSidenav()">Administration</a>
|
[routerLink]=[administrationsUrl] class="navlist__item navlist__admin" mat-list-item>Administration</a>
|
||||||
<div class="navlist__admin-item">
|
<div class="navlist__admin-item">
|
||||||
<a mat-list-item class="navlist__item navlist__admin-workbaskets" [routerLink]=[workbasketsUrl]
|
<a (click)="toggleSidenav()" *ngIf="administrationAccess" [routerLinkActive]="['active__sub']"
|
||||||
[routerLinkActive]="['active__sub']" *ngIf="administrationAccess" (click)="toggleSidenav()">Workbaskets</a>
|
[routerLink]=[workbasketsUrl] class="navlist__item navlist__admin-workbaskets"
|
||||||
<a mat-list-item class="navlist__item navlist__admin-classifications" [routerLink]=[classificationUrl]
|
mat-list-item>Workbaskets</a>
|
||||||
[routerLinkActive]="['active__sub']" *ngIf="administrationAccess"
|
<a (click)="toggleSidenav()" *ngIf="administrationAccess" [routerLinkActive]="['active__sub']"
|
||||||
(click)="toggleSidenav()">Classifications</a>
|
[routerLink]=[classificationUrl] class="navlist__item navlist__admin-classifications"
|
||||||
<a mat-list-item class="navlist__item navlist__admin-access-items" [routerLink]=[accessUrl]
|
mat-list-item>Classifications</a>
|
||||||
[routerLinkActive]="['active__sub']" (click)="toggleSidenav()" *ngIf="administrationAccess">Access Items</a>
|
<a (click)="toggleSidenav()" *ngIf="administrationAccess" [routerLinkActive]="['active__sub']"
|
||||||
<a mat-list-item class="navlist__item navlist__admin-task-routing" [routerLink]=[routingUrl]
|
[routerLink]=[accessUrl] class="navlist__item navlist__admin-access-items" mat-list-item>Access
|
||||||
[routerLinkActive]="['active__sub']" (click)="toggleSidenav()" *ngIf="(routingAccess$ | async)">Task Routing</a>
|
Items</a>
|
||||||
</div>
|
<a (click)="toggleSidenav()" *ngIf="(routingAccess)" [routerLinkActive]="['active__sub']"
|
||||||
<a mat-list-item class="navlist__item navlist__monitor" [routerLink]=[monitorUrl] [routerLinkActive]="['active']"
|
[routerLink]=[routingUrl] class="navlist__item navlist__admin-task-routing" mat-list-item>Task
|
||||||
*ngIf="monitorAccess" (click)="toggleSidenav()">Monitor</a>
|
Routing</a>
|
||||||
<a mat-list-item class="navlist__item navlist__workplace" [routerLink]=[workplaceUrl]
|
</div>
|
||||||
[routerLinkActive]="['active']" *ngIf="workplaceAccess" (click)="toggleSidenav()">Workplace</a>
|
<a (click)="toggleSidenav()" *ngIf="monitorAccess" [routerLinkActive]="['active']"
|
||||||
<div class="navlist__admin-item">
|
[routerLink]=[monitorUrl]
|
||||||
<a mat-list-item class="navlist__item navlist__workplace--workbaskets"
|
class="navlist__item navlist__monitor" mat-list-item>Monitor</a>
|
||||||
[routerLinkActive]="['active__sub']" *ngIf="workplaceAccess" [routerLink]=[workplaceUrl] [queryParams]="{component: 'workbaskets'}"
|
<a (click)="toggleSidenav()" *ngIf="workplaceAccess" [routerLinkActive]="['active']"
|
||||||
(click)="toggleSidenav()">Workbaskets</a>
|
[routerLink]=[workplaceUrl] class="navlist__item navlist__workplace"
|
||||||
<a mat-list-item class="navlist__item navlist__workplace--task-search"
|
mat-list-item>Workplace</a>
|
||||||
[routerLinkActive]="['active__sub']" *ngIf="workplaceAccess" [routerLink]=[workplaceUrl] [queryParams]="{component: 'task-search'}"
|
<div class="navlist__admin-item">
|
||||||
(click)="toggleSidenav()">Task Search</a>
|
<a (click)="toggleSidenav()" *ngIf="workplaceAccess"
|
||||||
</div>
|
[queryParams]="{component: 'workbaskets'}" [routerLinkActive]="['active__sub']"
|
||||||
<a mat-list-item class="navlist__item navlist__history" [routerLink]=[historyUrl] [routerLinkActive]="['active']"
|
[routerLink]=[workplaceUrl] class="navlist__item navlist__workplace--workbaskets"
|
||||||
*ngIf="historyAccess" (click)="toggleSidenav()">History</a>
|
mat-list-item>Workbaskets</a>
|
||||||
<a mat-list-item class="navlist__item navlist__setting" [routerLink]=[settingsURL] [routerLinkActive]="['active']"
|
<a (click)="toggleSidenav()" *ngIf="workplaceAccess"
|
||||||
*ngIf="settingsAccess" (click)="toggleSidenav()">Settings</a>
|
[queryParams]="{component: 'task-search'}" [routerLinkActive]="['active__sub']"
|
||||||
|
[routerLink]=[workplaceUrl] class="navlist__item navlist__workplace--task-search"
|
||||||
|
mat-list-item>Task Search</a>
|
||||||
|
</div>
|
||||||
|
<a (click)="toggleSidenav()" *ngIf="historyAccess" [routerLinkActive]="['active']"
|
||||||
|
[routerLink]=[historyUrl]
|
||||||
|
class="navlist__item navlist__history" mat-list-item>History</a>
|
||||||
|
<a (click)="toggleSidenav()" *ngIf="settingsAccess" [routerLinkActive]="['active']"
|
||||||
|
[routerLink]=[settingsURL]
|
||||||
|
class="navlist__item navlist__setting" mat-list-item>Settings</a>
|
||||||
</mat-nav-list>
|
</mat-nav-list>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
import { MatGridListModule } from '@angular/material/grid-list';
|
||||||
import { MatListModule } from '@angular/material/list';
|
import { MatListModule } from '@angular/material/list';
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
import { EMPTY, of } from 'rxjs';
|
import { EMPTY } from 'rxjs';
|
||||||
|
|
||||||
const SidenavServiceSpy: Partial<SidenavService> = {
|
const SidenavServiceSpy: Partial<SidenavService> = {
|
||||||
toggleSidenav: jest.fn().mockReturnValue(EMPTY)
|
toggleSidenav: jest.fn().mockReturnValue(EMPTY)
|
||||||
|
|
@ -24,7 +24,7 @@ const SidenavServiceSpy: Partial<SidenavService> = {
|
||||||
const TaskanaEngineServiceSpy: Partial<TaskanaEngineService> = {
|
const TaskanaEngineServiceSpy: Partial<TaskanaEngineService> = {
|
||||||
hasRole: jest.fn().mockReturnValue(EMPTY),
|
hasRole: jest.fn().mockReturnValue(EMPTY),
|
||||||
isHistoryProviderEnabled: jest.fn().mockReturnValue(EMPTY),
|
isHistoryProviderEnabled: jest.fn().mockReturnValue(EMPTY),
|
||||||
isCustomRoutingRulesEnabled$: EMPTY
|
isCustomRoutingRulesEnabled: jest.fn().mockReturnValue(EMPTY)
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('SidenavListComponent', () => {
|
describe('SidenavListComponent', () => {
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,6 @@ import { MonitorGuard } from 'app/shared/guards/monitor.guard';
|
||||||
import { UserGuard } from 'app/shared/guards/user.guard';
|
import { UserGuard } from 'app/shared/guards/user.guard';
|
||||||
import { TaskanaEngineService } from '../../services/taskana-engine/taskana-engine.service';
|
import { TaskanaEngineService } from '../../services/taskana-engine/taskana-engine.service';
|
||||||
import { SidenavService } from '../../services/sidenav/sidenav.service';
|
import { SidenavService } from '../../services/sidenav/sidenav.service';
|
||||||
import { Observable, of } from 'rxjs';
|
|
||||||
import { takeUntil } from 'rxjs/operators';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'taskana-sidenav-list',
|
selector: 'taskana-sidenav-list',
|
||||||
|
|
@ -29,7 +27,7 @@ export class SidenavListComponent implements OnInit {
|
||||||
monitorAccess = false;
|
monitorAccess = false;
|
||||||
workplaceAccess = false;
|
workplaceAccess = false;
|
||||||
historyAccess = false;
|
historyAccess = false;
|
||||||
routingAccess$: Observable<boolean> = of(false);
|
routingAccess = false;
|
||||||
settingsAccess = false;
|
settingsAccess = false;
|
||||||
|
|
||||||
constructor(private taskanaEngineService: TaskanaEngineService, private sidenavService: SidenavService) {}
|
constructor(private taskanaEngineService: TaskanaEngineService, private sidenavService: SidenavService) {}
|
||||||
|
|
@ -41,8 +39,9 @@ export class SidenavListComponent implements OnInit {
|
||||||
this.taskanaEngineService.isHistoryProviderEnabled().subscribe((value) => {
|
this.taskanaEngineService.isHistoryProviderEnabled().subscribe((value) => {
|
||||||
this.historyAccess = value;
|
this.historyAccess = value;
|
||||||
});
|
});
|
||||||
this.routingAccess$ = this.taskanaEngineService.isCustomRoutingRulesEnabled$;
|
this.taskanaEngineService.isCustomRoutingRulesEnabled().subscribe((value) => {
|
||||||
this.routingAccess$.subscribe();
|
this.routingAccess = value;
|
||||||
|
});
|
||||||
this.settingsAccess = this.administrationAccess;
|
this.settingsAccess = this.administrationAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export class TaskRoutingGuard implements CanActivate {
|
||||||
next: ActivatedRouteSnapshot,
|
next: ActivatedRouteSnapshot,
|
||||||
state: RouterStateSnapshot
|
state: RouterStateSnapshot
|
||||||
): Observable<boolean> | Promise<boolean> | boolean {
|
): Observable<boolean> | Promise<boolean> | boolean {
|
||||||
return this.taskanaEngineService.isCustomRoutingRulesEnabled$.pipe(
|
return this.taskanaEngineService.isCustomRoutingRulesEnabled().pipe(
|
||||||
map((value) => {
|
map((value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
return value;
|
return value;
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,12 @@ import { environment } from 'environments/environment';
|
||||||
import { UserInfo } from 'app/shared/models/user-info';
|
import { UserInfo } from 'app/shared/models/user-info';
|
||||||
import { Version } from 'app/shared/models/version';
|
import { Version } from 'app/shared/models/version';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { map, shareReplay } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TaskanaEngineService {
|
export class TaskanaEngineService {
|
||||||
currentUserInfo: UserInfo;
|
currentUserInfo: UserInfo;
|
||||||
|
|
||||||
constructor(private httpClient: HttpClient) {}
|
constructor(private httpClient: HttpClient) {}
|
||||||
|
|
||||||
// GET
|
// GET
|
||||||
|
|
@ -38,14 +39,14 @@ export class TaskanaEngineService {
|
||||||
return this.httpClient.post<string>(`${environment.taskanaLogoutUrl}`, '');
|
return this.httpClient.post<string>(`${environment.taskanaLogoutUrl}`, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isCustomRoutingRulesEnabled(): Observable<boolean> {
|
||||||
|
return this.httpClient.get<boolean>(`${environment.taskanaRestUrl}/v1/routing-rules/routing-rest-enabled`);
|
||||||
|
}
|
||||||
|
|
||||||
isHistoryProviderEnabled(): Observable<boolean> {
|
isHistoryProviderEnabled(): Observable<boolean> {
|
||||||
return this.httpClient.get<boolean>(`${environment.taskanaRestUrl}/v1/history-provider-enabled`);
|
return this.httpClient.get<boolean>(`${environment.taskanaRestUrl}/v1/history-provider-enabled`);
|
||||||
}
|
}
|
||||||
|
|
||||||
isCustomRoutingRulesEnabled$ = this.httpClient
|
|
||||||
.get<boolean>(`${environment.taskanaRestUrl}/v1/routing-rules/routing-rest-enabled`)
|
|
||||||
.pipe(shareReplay(1));
|
|
||||||
|
|
||||||
private findRole(roles2Find: string[]) {
|
private findRole(roles2Find: string[]) {
|
||||||
return this.currentUserInfo.roles.find((role) => roles2Find.some((roleLookingFor) => role === roleLookingFor));
|
return this.currentUserInfo.roles.find((role) => roles2Find.some((roleLookingFor) => role === roleLookingFor));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue