Skip to content

Commit 9b0d1db

Browse files
committed
Merge branch 'master' into production
2 parents 3adea66 + 792fbe2 commit 9b0d1db

File tree

54 files changed

+705
-386
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+705
-386
lines changed

apps/admin-gui-e2e/src/e2e/admin/perun-admin.cy.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ describe('Perun admin management with role Perun admin', () => {
6868
.type('testAttrE2E', {force: true})
6969
.get('[data-cy=attribute-description-input]')
7070
.type('test attribute for E2E tests', {force: true})
71-
.get('[data-cy=toggle-read-critical]')
71+
.get('[data-cy=checkbox-read-operation]')
72+
.click()
73+
.get('[data-cy=checkbox-read-critical]')
7274
.click()
7375
.get('[data-cy=create-attr-definition-button]')
7476
.click()

apps/admin-gui-e2e/src/e2e/facilities/facility-admin.cy.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ describe('Facility management with role Facility admin', () => {
132132
.get('[data-cy=attributes]')
133133
.click()
134134
.get('[data-cy=add-attributes]')
135-
.click()
135+
.click({ force: true })
136136
.get('.mat-mdc-dialog-container')
137137
.find('[data-cy=filter-input]') // finds the data-cy attribute inside the dialog container
138138
.type('Login namespace', {force: true})
@@ -165,7 +165,7 @@ describe('Facility management with role Facility admin', () => {
165165
.get(`[data-cy=${deleteAttribute}-checkbox]`)
166166
.click()
167167
.get('[data-cy=remove-attributes]')
168-
.click()
168+
.click({ force: true })
169169
.get('[data-cy=delete-attributes]')
170170
.click()
171171
.intercept('**/attributesManager/getAttributes/**')

apps/admin-gui-e2e/src/e2e/groups/group-admin.cy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ describe('Group management with role Group admin', () => {
260260
.get(`[data-cy=${dbGroupManager}-checkbox]`)
261261
.click()
262262
.get('[data-cy=remove-manager-button]')
263-
.click()
263+
.click({ force: true })
264264
.intercept('**/authzResolver/getRichAdmins**')
265265
.as('getRichAdmins')
266266
.get('[data-cy=remove-manager-button-dialog]')

apps/admin-gui-e2e/src/e2e/vos/vo-admin.cy.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('VO management with role VO admin', () => {
5050
.get('[data-cy=attributes]')
5151
.click()
5252
.get('[data-cy=add-attributes]')
53-
.click()
53+
.click({ force: true })
5454
// get attribute Notification default language
5555
.get(`[data-cy=${addedAttribute}-value]`)
5656
.type('en', {force: true})
@@ -82,7 +82,7 @@ describe('VO management with role VO admin', () => {
8282
.get('[data-cy=link-to-aup-checkbox]')
8383
.click()
8484
.get('[data-cy=remove-attributes]')
85-
.click()
85+
.click({ force: true })
8686
.intercept('**/attributesManager/getAttributes/vo**')
8787
.as('getAttributes')
8888
.get('[data-cy=delete-attributes]')

apps/admin-gui/src/app/admin/admin-routing.module.ts

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,27 @@ import { UserDestinationGraphComponent } from './pages/admin-page/admin-visualiz
1111
import { AdminUsersComponent } from './pages/admin-page/admin-users/admin-users.component';
1212
import { AdminUserDetailPageComponent } from './pages/admin-user-detail-page/admin-user-detail-page.component';
1313
import { UserOverviewComponent } from '../users/pages/user-detail-page/user-overview/user-overview.component';
14-
import { UserOrganizationsComponent } from '../users/pages/user-detail-page/user-organizations/user-organizations.component';
15-
import { UserGroupsComponent } from '../users/pages/user-detail-page/user-groups/user-groups.component';
1614
import { UserAttributesComponent } from '../users/pages/user-detail-page/user-attributes/user-attributes.component';
1715
import { AdminExtSourcesComponent } from './pages/admin-page/admin-ext-sources/admin-ext-sources.component';
1816
import { UserRolesComponent } from '../users/pages/user-detail-page/user-settings/user-roles/user-roles.component';
1917
import { UserSettingsServiceIdentitiesComponent } from '../users/pages/user-detail-page/user-settings/user-settings-service-identities/user-settings-service-identities.component';
2018
import { UserIdentitiesComponent } from '../users/pages/user-detail-page/user-identities/user-identities.component';
2119
import { AdminServicesComponent } from './pages/admin-page/admin-services/admin-services.component';
22-
import { UserResourcesComponent } from '../users/pages/user-detail-page/user-resources/user-resources.component';
2320
import { IdentityDetailComponent } from '../shared/components/identity-detail/identity-detail.component';
2421
import { ServiceDetailPageComponent } from './pages/admin-page/admin-services/service-detail-page/service-detail-page.component';
2522
import { ServiceOverviewComponent } from './pages/admin-page/admin-services/service-detail-page/service-overview/service-overview.component';
2623
import { ServiceRequiredAttributesComponent } from './pages/admin-page/admin-services/service-detail-page/service-required-attributes/service-required-attributes.component';
2724
import { UserSettingsAssociatedUsersComponent } from '../users/pages/user-detail-page/user-settings/user-settings-associated-users/user-settings-associated-users.component';
2825
import { ServiceDestinationsComponent } from './pages/admin-page/admin-services/service-detail-page/service-destinations/service-destinations.component';
2926
import { AdminOwnersComponent } from './pages/admin-page/admin-owners/admin-owners.component';
30-
import { UserFacilitiesComponent } from '../users/pages/user-detail-page/user-facilities/user-facilities.component';
3127
import { UserAccountsComponent } from '../users/pages/user-detail-page/user-accounts/user-accounts.component';
3228
import { AdminAuditLogComponent } from './pages/admin-page/admin-audit-log/admin-audit-log.component';
3329
import { AdminConsentHubsComponent } from './pages/admin-page/admin-consent-hubs/admin-consent-hubs.component';
3430
import { AdminSearcherComponent } from './pages/admin-page/admin-searcher/admin-searcher.component';
3531
import { RouteAuthGuardService } from '../shared/route-auth-guard.service';
3632
import { UserBansComponent } from '../users/pages/user-detail-page/user-bans/user-bans.component';
3733
import { AdminBlockedLoginsComponent } from './pages/admin-page/admin-blocked-logins/admin-blocked-logins.component';
34+
import { UserAssignmentsComponent } from '../users/pages/user-detail-page/user-assignments/user-assignments.component';
3835

3936
const routes: Routes = [
4037
{
@@ -135,36 +132,21 @@ const routes: Routes = [
135132
component: UserAccountsComponent,
136133
data: { animation: 'UserAccountsPage' },
137134
},
135+
{
136+
path: 'assignments',
137+
component: UserAssignmentsComponent,
138+
data: { animation: 'UserAssignmentsPage' },
139+
},
138140
{
139141
path: 'attributes',
140142
component: UserAttributesComponent,
141143
data: { animation: 'UserAttributesPage' },
142144
},
143-
{
144-
path: 'organizations',
145-
component: UserOrganizationsComponent,
146-
data: { animation: 'UserOrganizationsPage', showPrincipal: false },
147-
},
148-
{
149-
path: 'groups',
150-
component: UserGroupsComponent,
151-
data: { animation: 'UserGroupsPage', showPrincipal: false },
152-
},
153145
{
154146
path: 'identities',
155147
component: UserIdentitiesComponent,
156148
data: { animation: 'UserIdentitiesPage' },
157149
},
158-
{
159-
path: 'facilities',
160-
component: UserFacilitiesComponent,
161-
data: { animation: 'UserFacilitiesPage' },
162-
},
163-
{
164-
path: 'resources',
165-
component: UserResourcesComponent,
166-
data: { animation: 'UserRoles' },
167-
},
168150
{
169151
path: 'identities/:identityId',
170152
component: IdentityDetailComponent,

apps/admin-gui/src/app/shared/components/dialogs/add-group-manager-dialog/add-group-manager-dialog.component.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { Component, Inject, OnInit } from '@angular/core';
22
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3-
import { TranslateService } from '@ngx-translate/core';
4-
import { NotificatorService } from '@perun-web-apps/perun/services';
3+
import { NotificatorService, PerunTranslateService } from '@perun-web-apps/perun/services';
54
import { ActivatedRoute, Router } from '@angular/router';
65
import { SelectionModel } from '@angular/cdk/collections';
76
import { Observable } from 'rxjs';
87
import { UntypedFormControl } from '@angular/forms';
98
import { map, startWith } from 'rxjs/operators';
109
import {
1110
AuthzResolverService,
12-
Facility,
1311
Group,
1412
GroupsManagerService,
13+
PerunBean,
1514
RoleManagementRules,
1615
Vo,
1716
VosManagerService,
@@ -21,7 +20,7 @@ import { TABLE_SELECT_GROUP_MANAGER_DIALOG } from '@perun-web-apps/config/table-
2120
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
2221

2322
export interface AddGroupManagerDialogData {
24-
complementaryObject: Vo | Group | Facility;
23+
complementaryObject: PerunBean;
2524
availableRoles: RoleManagementRules[];
2625
theme: string;
2726
selectedRole: Role;
@@ -60,15 +59,13 @@ export class AddGroupManagerDialogComponent implements OnInit {
6059
private authzService: AuthzResolverService,
6160
private voService: VosManagerService,
6261
private groupService: GroupsManagerService,
63-
private translate: TranslateService,
62+
private translate: PerunTranslateService,
6463
private notificator: NotificatorService,
6564
protected route: ActivatedRoute,
6665
protected router: Router
6766
) {
68-
translate.get('DIALOGS.ADD_GROUPS.TITLE').subscribe((value: string) => (this.title = value));
69-
translate
70-
.get('DIALOGS.ADD_GROUPS.SUCCESS')
71-
.subscribe((value: string) => (this.successMessage = value));
67+
this.title = this.translate.instant('DIALOGS.ADD_GROUPS.TITLE');
68+
this.successMessage = this.translate.instant('DIALOGS.ADD_GROUPS.SUCCESS');
7269
}
7370

7471
displayFn(vo?: Vo): string | undefined {

apps/admin-gui/src/app/shared/components/dialogs/add-manager-dialog/add-manager-dialog.component.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
import { Component, Inject, OnInit } from '@angular/core';
22
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3-
import { TranslateService } from '@ngx-translate/core';
4-
import { NotificatorService, StoreService } from '@perun-web-apps/perun/services';
3+
import {
4+
NotificatorService,
5+
PerunTranslateService,
6+
StoreService,
7+
} from '@perun-web-apps/perun/services';
58
import { SelectionModel } from '@angular/cdk/collections';
69
import { ActivatedRoute, Router } from '@angular/router';
710
import {
811
AuthzResolverService,
9-
Facility,
10-
Group,
12+
PerunBean,
1113
RichUser,
1214
RoleManagementRules,
1315
UsersManagerService,
14-
Vo,
1516
} from '@perun-web-apps/perun/openapi';
1617
import { Role } from '@perun-web-apps/perun/models';
1718
import { TABLE_ADD_MANAGER } from '@perun-web-apps/config/table-config';
1819
import { Urns } from '@perun-web-apps/perun/urns';
1920
import { UntypedFormControl, Validators } from '@angular/forms';
2021

2122
export interface AddManagerDialogData {
22-
complementaryObject: Vo | Group | Facility;
23+
complementaryObject: PerunBean;
2324
theme: string;
2425
availableRoles: RoleManagementRules[];
2526
selectedRole: Role;
@@ -48,16 +49,14 @@ export class AddManagerDialogComponent implements OnInit {
4849
@Inject(MAT_DIALOG_DATA) private data: AddManagerDialogData,
4950
private authzService: AuthzResolverService,
5051
private usersService: UsersManagerService,
51-
private translate: TranslateService,
52+
private translate: PerunTranslateService,
5253
private notificator: NotificatorService,
5354
private storeService: StoreService,
5455
protected route: ActivatedRoute,
5556
protected router: Router
5657
) {
57-
translate.get('DIALOGS.ADD_MANAGERS.TITLE').subscribe((value: string) => (this.title = value));
58-
translate
59-
.get('DIALOGS.ADD_MANAGERS.SUCCESS')
60-
.subscribe((value: string) => (this.successMessage = value));
58+
this.title = this.translate.instant('DIALOGS.ADD_MANAGERS.TITLE');
59+
this.successMessage = this.translate.instant('DIALOGS.ADD_MANAGERS.SUCCESS');
6160
}
6261

6362
ngOnInit(): void {

apps/admin-gui/src/app/shared/components/dialogs/add-role-dialog/add-role-dialog.component.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { SelectionModel } from '@angular/cdk/collections';
1616
import { ToEnrichedFacilityPipe } from '@perun-web-apps/perun/pipes';
1717
import { DebounceFilterComponent } from '@perun-web-apps/perun/components';
18+
import { combineLatestWith } from 'rxjs/operators';
1819

1920
export interface AddRoleDialogData {
2021
entityId: number;
@@ -64,6 +65,7 @@ export class AddRoleDialogComponent implements OnInit {
6465
}
6566

6667
loadObjects(): void {
68+
this.loading = true;
6769
if (this.rules.some((rule) => rule.primaryObject === 'Facility')) {
6870
// Not callable by SELF, need to check privilege
6971
this.facilityService.getAllFacilities().subscribe({
@@ -74,12 +76,18 @@ export class AddRoleDialogComponent implements OnInit {
7476
if (this.rules.some((rule) => rule.primaryObject === 'Vo')) {
7577
this.voService.getMyVos().subscribe({ next: (vos) => (this.vos = vos) });
7678
}
79+
7780
this.groupService
7881
.getAllGroupsFromAllVos()
79-
.subscribe({ next: (groups) => (this.groups = groups) });
80-
this.resourceService.getAllResources().subscribe({
81-
next: (resources) => (this.resources = resources),
82-
});
82+
.pipe(combineLatestWith(this.resourceService.getAllResources()))
83+
.subscribe({
84+
next: ([groups, resources]) => {
85+
this.groups = groups;
86+
this.resources = resources;
87+
this.loading = false;
88+
},
89+
error: () => (this.loading = false),
90+
});
8391
}
8492

8593
cancel(): void {

apps/admin-gui/src/app/shared/components/dialogs/create-attribute-definition-dialog/create-attribute-definition-dialog.component.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,16 @@ <h1 mat-dialog-title>{{'DIALOGS.CREATE_ATTRIBUTE_DEFINITION.TITLE' | translate}}
7777
</mat-form-field>
7878
</form>
7979

80-
<perun-web-apps-attribute-unique-toggle [attDef]="attDef | async">
81-
</perun-web-apps-attribute-unique-toggle>
80+
<perun-web-apps-attribute-unique-checkbox [attDef]="attDef | async">
81+
</perun-web-apps-attribute-unique-checkbox>
8282

83-
<perun-web-apps-attribute-critical-operations-toggles
83+
<perun-web-apps-attribute-critical-operations-checkboxes
84+
[attDef]="attDef"
8485
(readOperationChanged)="finalReadOperations=$event"
8586
(readGlobalChanged)="finalReadGlobal=$event"
8687
(writeOperationChanged)="finalWriteOperations=$event"
8788
(writeGlobalChanged)="finalWriteGlobal=$event">
88-
</perun-web-apps-attribute-critical-operations-toggles>
89+
</perun-web-apps-attribute-critical-operations-checkboxes>
8990

9091
<perun-web-apps-attribute-rights-tab-group [collections]="collections">
9192
</perun-web-apps-attribute-rights-tab-group>

apps/admin-gui/src/app/shared/components/dialogs/edit-attribute-definition-dialog/edit-attribute-definition-dialog.component.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ <h1 mat-dialog-title>{{'DIALOGS.EDIT_ATTRIBUTE_DEFINITION.TITLE' | translate}}</
4242
>
4343
</div>
4444

45-
<perun-web-apps-attribute-unique-toggle [attDef]="attDef">
46-
</perun-web-apps-attribute-unique-toggle>
45+
<perun-web-apps-attribute-unique-checkbox [attDef]="attDef">
46+
</perun-web-apps-attribute-unique-checkbox>
4747

48-
<perun-web-apps-attribute-critical-operations-toggles
48+
<perun-web-apps-attribute-critical-operations-checkboxes
49+
[attDef]="attDef"
4950
[readOperation]="initReadOperations"
5051
[readGlobal]="initReadGlobal"
5152
[writeOperation]="initWriteOperations"
@@ -54,7 +55,7 @@ <h1 mat-dialog-title>{{'DIALOGS.EDIT_ATTRIBUTE_DEFINITION.TITLE' | translate}}</
5455
(readGlobalChanged)="finalReadGlobal=$event"
5556
(writeOperationChanged)="finalWriteOperations=$event"
5657
(writeGlobalChanged)="finalWriteGlobal=$event">
57-
</perun-web-apps-attribute-critical-operations-toggles>
58+
</perun-web-apps-attribute-critical-operations-checkboxes>
5859

5960
<perun-web-apps-attribute-rights-tab-group
6061
[attDef]="attDef"

0 commit comments

Comments
 (0)