Skip to content

Commit d872648

Browse files
committed
fix(admin): open the correct new window after the mouse middle click
* There was the main problem when a user was logged in by service-access and tried to open the new window with the mouse middle click. * The problem when the new window was redirected to the home page was fixed and also was fixed the problem when the new window didn't reflect the current type of the authentication. * Some other small bugs related to the routing were fixed and also some refactoring was accomplished.
1 parent 85e6fee commit d872648

File tree

31 files changed

+154
-121
lines changed

31 files changed

+154
-121
lines changed

apps/admin-gui/src/app/admin/pages/admin-page/admin-services/service-detail-page/service-detail-page.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<div class="page-title-headline d-flex align-items-center">
1515
<a
1616
data-cy="service-name-link"
17+
[perunWebAppsMiddleClickRouterLink]="['/admin/services', service.id.toString()]"
18+
(auxclick)="$event.preventDefault()"
1719
[routerLink]="['/admin/services', service.id]"
1820
class="service-link"
1921
queryParamsHandling="merge">

apps/admin-gui/src/app/admin/pages/admin-page/admin-services/service-detail-page/service-overview/service-overview.component.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Component, OnInit } from '@angular/core';
22
import { MenuItem } from '@perun-web-apps/perun/models';
3+
import { Service } from '@perun-web-apps/perun/openapi';
4+
import { EntityStorageService } from '@perun-web-apps/perun/services';
35

46
@Component({
57
selector: 'app-service-overview',
@@ -8,22 +10,26 @@ import { MenuItem } from '@perun-web-apps/perun/models';
810
})
911
export class ServiceOverviewComponent implements OnInit {
1012
navItems: MenuItem[] = [];
13+
service: Service;
14+
15+
constructor(private entityStorageService: EntityStorageService) {}
1116

1217
ngOnInit(): void {
18+
this.service = this.entityStorageService.getEntity();
1319
this.initNavItems();
1420
}
1521

1622
private initNavItems(): void {
1723
this.navItems = [
1824
{
1925
cssIcon: 'perun-attributes',
20-
url: 'required-attributes',
26+
url: `/admin/services/${this.service.id}/required-attributes`,
2127
label: 'MENU_ITEMS.SERVICE.REQUIRED_ATTRIBUTES',
2228
style: 'service-btn',
2329
},
2430
{
2531
cssIcon: 'perun-service_destination',
26-
url: 'destinations',
32+
url: `/admin/services/${this.service.id}/destinations`,
2733
label: 'MENU_ITEMS.SERVICE.DESTINATIONS',
2834
style: 'service-btn',
2935
},

apps/admin-gui/src/app/facilities/pages/facility-detail-page/facility-detail-page.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
<div class="page-title-headline d-flex align-items-center">
1414
<a
1515
class="facility-link"
16+
[perunWebAppsMiddleClickRouterLink]="['/facilities', facility.id.toString()]"
17+
(auxclick)="$event.preventDefault()"
1618
[routerLink]="['/facilities', facility.id]"
1719
queryParamsHandling="merge"
1820
>{{facility.name}}</a

apps/admin-gui/src/app/facilities/pages/resource-detail-page/resource-detail-page.component.html

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111
</mat-icon>
1212
<div class="page-title-block">
1313
<div class="page-title-headline d-flex align-items-center">
14-
<a [routerLink]="[baseUrl]" class="resource-link" queryParamsHandling="merge">
14+
<a
15+
[perunWebAppsMiddleClickRouterLink]="[baseUrl]"
16+
(auxclick)="$event.preventDefault()"
17+
[routerLink]="[baseUrl]"
18+
class="resource-link"
19+
queryParamsHandling="merge">
1520
{{resource.name}}
1621
</a>
1722
<span class="text-muted"> &nbsp;#{{resource.id}} </span>
@@ -32,6 +37,8 @@
3237
<a
3338
*ngIf="voLinkAuth"
3439
attr.data-cy="{{resource.vo.name}}"
40+
[perunWebAppsMiddleClickRouterLink]="['/organizations', resource.vo.id.toString()]"
41+
(auxclick)="$event.preventDefault()"
3542
[routerLink]="['/organizations', resource.vo.id]"
3643
queryParamsHandling="merge"
3744
class="resource-link"
@@ -46,6 +53,8 @@
4653
*ngIf="facilityLinkAuth"
4754
attr.data-cy="{{resource.facility.name}}"
4855
queryParamsHandling="merge"
56+
[perunWebAppsMiddleClickRouterLink]="['/facilities', resource.facilityId.toString()]"
57+
(auxclick)="$event.preventDefault()"
4958
[routerLink]="['/facilities', resource.facilityId]"
5059
>{{resource.facility.name}}</a
5160
>

apps/admin-gui/src/app/facilities/pages/resource-detail-page/resource-overview/resource-overview.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class ResourceOverviewComponent implements OnInit {
5656
if (this.routePolicyService.canNavigate('resources-services', this.resource)) {
5757
this.navItems.push({
5858
cssIcon: 'perun-service',
59-
url: `/${urlStart}/resources/${this.resource.id}/services`,
59+
url: `${urlStart}/resources/${this.resource.id}/services`,
6060
label: 'MENU_ITEMS.RESOURCE.ASSIGNED_SERVICES',
6161
style: 'resource-btn',
6262
});

apps/admin-gui/src/app/shared/components/hosts-list/hosts-list.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<tr *matHeaderRowDef="displayedColumns" mat-header-row></tr>
5555
<tr
5656
*matRowDef="let host; columns: displayedColumns;"
57-
[perunWebAppsMiddleClickRouterLink]="disableRouting ? null : ['/facilities', this.facilityId, 'hosts', host.id]"
57+
[perunWebAppsMiddleClickRouterLink]="disableRouting ? null : ['/facilities', this.facilityId.toString(), 'hosts', host.id.toString()]"
5858
[routerLink]="disableRouting ? null : ['/facilities', this.facilityId, 'hosts', host.id]"
5959
class="dark-hover-list-item"
6060
mat-row></tr>

apps/admin-gui/src/app/users/components/user-profile/user-profile.component.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99
</mat-icon>
1010
<div class="page-title-block">
1111
<div class="page-title-headline d-flex align-items-center">
12-
<a [routerLink]="['/myProfile']" class="user-link" queryParamsHandling="merge">
12+
<a
13+
[perunWebAppsMiddleClickRouterLink]="['/myProfile']"
14+
(auxclick)="$event.preventDefault()"
15+
[routerLink]="['/myProfile']"
16+
class="user-link"
17+
queryParamsHandling="merge">
1318
{{user | userFullName}}
1419
</a>
1520
<span class="text-muted"> &nbsp;#{{user.id}} </span>

apps/admin-gui/src/app/users/pages/user-detail-page/user-accounts/user-accounts.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ <h1 class="page-title">{{'USER_DETAIL.ACCOUNTS.TITLE' | translate}}</h1>
2020
<span class="subtitle mr-2">{{'USER_DETAIL.ACCOUNTS.MEMBER' | translate}}:</span>
2121
<a
2222
class="member-link"
23+
[perunWebAppsMiddleClickRouterLink]="['/organizations', selectedVo.id.toString(), 'members', member.id.toString()]"
24+
(auxclick)="$event.preventDefault()"
2325
[routerLink]="['/organizations', selectedVo.id, 'members', member.id]"
2426
queryParamsHandling="merge"
2527
>{{member.id}}

apps/admin-gui/src/app/users/pages/user-detail-page/user-dashboard/dashboard-recently-viewed-button-field/dashboard-recently-viewed-button-field.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
<div *ngFor="let item of items" class="item-itself-container" mat-ripple>
99
<a
1010
class="{{item.style}} item-itself"
11+
[perunWebAppsMiddleClickRouterLink]="[item.url]"
12+
(auxclick)="$event.preventDefault()"
1113
[routerLink]="item.url"
1214
queryParamsHandling="merge"
1315
matTooltip="{{item.tooltip}}">

apps/admin-gui/src/app/users/pages/user-detail-page/user-overview/user-overview.component.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class UserOverviewComponent implements OnInit {
4545
this.userService.getUserById(Number(params['userId'])).subscribe((user) => {
4646
this.user = user;
4747
this.isServiceUser = user.serviceUser;
48-
this.initNavItems();
48+
this.initNavItems(`/admin/users/${this.user.id}`);
4949
});
5050
} else {
5151
this.inMyProfile = true;
@@ -58,7 +58,7 @@ export class UserOverviewComponent implements OnInit {
5858
this.handleMailNotDefined();
5959

6060
this.mailDataSource = new MatTableDataSource<Attribute>([this.preferredMail]);
61-
this.initNavItems();
61+
this.initNavItems('/myProfile');
6262
});
6363
}
6464
});
@@ -96,17 +96,17 @@ export class UserOverviewComponent implements OnInit {
9696
}
9797
}
9898

99-
private initNavItems(): void {
99+
private initNavItems(urlStart: string): void {
100100
this.navItems = [
101101
{
102102
cssIcon: 'perun-vo',
103-
url: `organizations`,
103+
url: `${urlStart}/organizations`,
104104
label: 'MENU_ITEMS.ADMIN.ORGANIZATIONS',
105105
style: 'user-btn',
106106
},
107107
{
108108
cssIcon: 'perun-group',
109-
url: `groups`,
109+
url: `${urlStart}/groups`,
110110
label: 'MENU_ITEMS.ADMIN.GROUPS',
111111
style: 'user-btn',
112112
},
@@ -115,61 +115,61 @@ export class UserOverviewComponent implements OnInit {
115115
this.navItems.push(
116116
{
117117
cssIcon: 'perun-user',
118-
url: `accounts`,
118+
url: `${urlStart}/accounts`,
119119
label: 'MENU_ITEMS.USER.ACCOUNTS',
120120
style: 'user-btn',
121121
},
122122
{
123123
cssIcon: 'perun-identity',
124-
url: `identities`,
124+
url: `${urlStart}/identities`,
125125
label: 'MENU_ITEMS.USER.IDENTITIES',
126126
style: 'user-btn',
127127
},
128128
{
129129
cssIcon: 'perun-facility-white',
130-
url: `facilities`,
130+
url: `${urlStart}/facilities`,
131131
label: 'MENU_ITEMS.USER.FACILITIES',
132132
style: 'user-btn',
133133
},
134134
{
135135
cssIcon: 'perun-resource',
136-
url: `resources`,
136+
url: `${urlStart}/resources`,
137137
label: 'MENU_ITEMS.USER.RESOURCES',
138138
style: 'user-btn',
139139
}
140140
);
141141
}
142142
this.navItems.push({
143143
cssIcon: 'perun-attributes',
144-
url: `attributes`,
144+
url: `${urlStart}/attributes`,
145145
label: 'MENU_ITEMS.USER.ATTRIBUTES',
146146
style: 'user-btn',
147147
});
148148
this.navItems.push({
149149
cssIcon: 'perun-roles',
150-
url: `roles`,
150+
url: `${urlStart}/roles`,
151151
label: 'MENU_ITEMS.USER.ROLES',
152152
style: 'user-btn',
153153
});
154154
if (this.isServiceUser) {
155155
this.navItems.push({
156156
cssIcon: 'perun-manager',
157-
url: `associated-users`,
157+
url: `${urlStart}/associated-users`,
158158
label: 'MENU_ITEMS.USER.ASSOCIATED_USERS',
159159
style: 'user-btn',
160160
});
161161
} else {
162162
this.navItems.push({
163163
cssIcon: 'perun-service-identity',
164-
url: `service-identities`,
164+
url: `${urlStart}/service-identities`,
165165
label: 'MENU_ITEMS.USER.SERVICE_IDENTITIES',
166166
style: 'user-btn',
167167
});
168168
}
169169
if (!window.location.pathname.startsWith('/admin')) {
170170
this.navItems.push({
171171
cssIcon: 'perun-settings2',
172-
url: `settings`,
172+
url: `${urlStart}/settings`,
173173
label: 'MENU_ITEMS.ADMIN.SETTINGS',
174174
style: 'user-btn',
175175
});

apps/admin-gui/src/app/users/pages/user-detail-page/user-settings/user-settings-overview/user-settings-overview.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ export class UserSettingsOverviewComponent implements OnInit {
4444
this.navItems.push(
4545
{
4646
cssIcon: 'perun-settings2',
47-
url: 'passwordReset',
47+
url: '/myProfile/settings/passwordReset',
4848
label: 'MENU_ITEMS.USER.PASSWORD_RESET',
4949
style: 'user-btn',
5050
},
5151
{
5252
cssIcon: 'perun-settings1',
53-
url: 'guiConfig',
53+
url: '/myProfile/settings/guiConfig',
5454
label: 'MENU_ITEMS.USER.GUI_CONFIG',
5555
style: 'user-btn',
5656
}

apps/admin-gui/src/app/users/pages/user-detail-page/user-settings/user-settings-service-identities/service-identity-authentication/service-identity-authentication-overview/service-identity-authentication-overview.component.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Component, OnInit } from '@angular/core';
22
import { MenuItem } from '@perun-web-apps/perun/models';
3+
import { EntityStorageService } from '@perun-web-apps/perun/services';
4+
import { User } from '@perun-web-apps/perun/openapi';
35

46
@Component({
57
selector: 'app-service-identity-authentication-overview',
@@ -8,28 +10,32 @@ import { MenuItem } from '@perun-web-apps/perun/models';
810
})
911
export class ServiceIdentityAuthenticationOverviewComponent implements OnInit {
1012
navItems: MenuItem[] = [];
13+
serviceAccount: User;
14+
15+
constructor(private entityStorageService: EntityStorageService) {}
1116

1217
ngOnInit(): void {
18+
this.serviceAccount = this.entityStorageService.getEntity();
1319
this.initNavItems();
1420
}
1521

1622
private initNavItems(): void {
1723
this.navItems = [
1824
{
1925
cssIcon: 'perun-logins',
20-
url: `logins`,
26+
url: `/myProfile/service-identities/${this.serviceAccount.id}/authentication/logins`,
2127
label: 'MENU_ITEMS.USER.LOGINS',
2228
style: 'user-btn',
2329
},
2430
{
2531
cssIcon: 'perun-certificates',
26-
url: `certificates`,
32+
url: `/myProfile/service-identities/${this.serviceAccount.id}/authentication/certificates`,
2733
label: 'MENU_ITEMS.USER.CERTIFICATES',
2834
style: 'user-btn',
2935
},
3036
{
3137
cssIcon: 'perun-key',
32-
url: `ssh-keys`,
38+
url: `/myProfile/service-identities/${this.serviceAccount.id}/authentication/ssh-keys`,
3339
label: 'MENU_ITEMS.USER.SSH_KEYS',
3440
style: 'user-btn',
3541
},

apps/admin-gui/src/app/users/pages/user-detail-page/user-settings/user-settings-service-identities/service-identity-detail-page/service-identity-detail-page.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<div class="page-title-block">
1212
<div class="page-title-headline d-flex align-items-center">
1313
<a
14+
[perunWebAppsMiddleClickRouterLink]="['/myProfile/service-identities', user.id.toString()]"
15+
(auxclick)="$event.preventDefault()"
1416
[routerLink]="['/myProfile/service-identities', user.id]"
1517
class="user-link"
1618
queryParamsHandling="merge">

apps/admin-gui/src/app/users/pages/user-detail-page/user-settings/user-settings-service-identities/service-identity-detail-page/service-identity-overview/service-identity-overview.component.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Component, OnInit } from '@angular/core';
22
import { MenuItem } from '@perun-web-apps/perun/models';
3+
import { EntityStorageService } from '@perun-web-apps/perun/services';
4+
import { User } from '@perun-web-apps/perun/openapi';
35

46
@Component({
57
selector: 'app-service-identity-overview',
@@ -8,34 +10,38 @@ import { MenuItem } from '@perun-web-apps/perun/models';
810
})
911
export class ServiceIdentityOverviewComponent implements OnInit {
1012
navItems: MenuItem[] = [];
13+
serviceAccount: User;
14+
15+
constructor(private entityStorageService: EntityStorageService) {}
1116

1217
ngOnInit(): void {
18+
this.serviceAccount = this.entityStorageService.getEntity();
1319
this.initNavItems();
1420
}
1521

1622
private initNavItems(): void {
1723
this.navItems = [
1824
{
1925
cssIcon: 'perun-manager',
20-
url: `associated-users`,
26+
url: `/myProfile/service-identities/${this.serviceAccount.id}/associated-users`,
2127
label: 'MENU_ITEMS.USER.ASSOCIATED_USERS',
2228
style: 'user-btn',
2329
},
2430
{
2531
cssIcon: 'perun-notification',
26-
url: 'mailing-lists',
32+
url: `/myProfile/service-identities/${this.serviceAccount.id}/mailing-lists`,
2733
label: 'MENU_ITEMS.USER.MAILING_LISTS',
2834
style: 'user-btn',
2935
},
3036
{
3137
cssIcon: 'perun-statistics',
32-
url: 'data-quotas',
38+
url: `/myProfile/service-identities/${this.serviceAccount.id}/data-quotas`,
3339
label: 'MENU_ITEMS.USER.DATA_QUOTAS',
3440
style: 'user-btn',
3541
},
3642
{
3743
cssIcon: 'perun-authentication',
38-
url: `authentication`,
44+
url: `/myProfile/service-identities/${this.serviceAccount.id}/authentication`,
3945
label: 'MENU_ITEMS.USER.AUTHENTICATION',
4046
style: 'user-btn',
4147
},

apps/admin-gui/src/app/vos/components/application-list-details/application-list-details.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@
9696
<tr
9797
*matRowDef="let application; columns: displayedColumns;"
9898
[class.cursor-pointer]="!disableRouting"
99-
[perunWebAppsMiddleClickRouterLink]="selectApplication(application)"
100-
[routerLink]="selectApplication(application)"
99+
[perunWebAppsMiddleClickRouterLink]="application | selectApplicationLink: disableRouting : group : member"
100+
[routerLink]="application | selectApplicationLink: disableRouting : group : member"
101101
class="dark-hover-list-item"
102102
mat-row></tr>
103103
</table>

0 commit comments

Comments
 (0)