mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
80113: Set ableToEdit on GroupDTOModel
This commit is contained in:
@@ -141,29 +141,35 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
if (groups.page.length === 0) {
|
if (groups.page.length === 0) {
|
||||||
return observableOf(buildPaginatedList(groups.pageInfo, []));
|
return observableOf(buildPaginatedList(groups.pageInfo, []));
|
||||||
}
|
}
|
||||||
return observableCombineLatest(groups.page.map((group: Group) => {
|
return this.authorizationService.isAuthorized(FeatureID.AdministratorOf).pipe(
|
||||||
if (!this.deletedGroupsIds.includes(group.id)) {
|
switchMap((isSiteAdmin: boolean) => {
|
||||||
return observableCombineLatest([
|
return observableCombineLatest(groups.page.map((group: Group) => {
|
||||||
this.authorizationService.isAuthorized(FeatureID.CanDelete, hasValue(group) ? group.self : undefined),
|
if (hasValue(group) && !this.deletedGroupsIds.includes(group.id)) {
|
||||||
this.hasLinkedDSO(group),
|
return observableCombineLatest([
|
||||||
this.getSubgroups(group),
|
this.authorizationService.isAuthorized(FeatureID.CanDelete, group.self),
|
||||||
this.getMembers(group)
|
this.canManageGroup$(isSiteAdmin, group),
|
||||||
]).pipe(
|
this.hasLinkedDSO(group),
|
||||||
map(([isAuthorized, hasLinkedDSO, subgroups, members]:
|
this.getSubgroups(group),
|
||||||
[boolean, boolean, RemoteData<PaginatedList<Group>>, RemoteData<PaginatedList<EPerson>>]) => {
|
this.getMembers(group)
|
||||||
const groupDtoModel: GroupDtoModel = new GroupDtoModel();
|
]).pipe(
|
||||||
groupDtoModel.ableToDelete = isAuthorized && !hasLinkedDSO;
|
map(([canDelete, canManageGroup, hasLinkedDSO, subgroups, members]:
|
||||||
groupDtoModel.group = group;
|
[boolean, boolean, boolean, RemoteData<PaginatedList<Group>>, RemoteData<PaginatedList<EPerson>>]) => {
|
||||||
groupDtoModel.subgroups = subgroups.payload;
|
const groupDtoModel: GroupDtoModel = new GroupDtoModel();
|
||||||
groupDtoModel.epersons = members.payload;
|
groupDtoModel.ableToDelete = canDelete && !hasLinkedDSO;
|
||||||
return groupDtoModel;
|
groupDtoModel.ableToEdit = canManageGroup;
|
||||||
}
|
groupDtoModel.group = group;
|
||||||
)
|
groupDtoModel.subgroups = subgroups.payload;
|
||||||
);
|
groupDtoModel.epersons = members.payload;
|
||||||
}
|
return groupDtoModel;
|
||||||
})).pipe(map((dtos: GroupDtoModel[]) => {
|
}
|
||||||
return buildPaginatedList(groups.pageInfo, dtos);
|
)
|
||||||
}));
|
);
|
||||||
|
}
|
||||||
|
})).pipe(map((dtos: GroupDtoModel[]) => {
|
||||||
|
return buildPaginatedList(groups.pageInfo, dtos);
|
||||||
|
}));
|
||||||
|
})
|
||||||
|
);
|
||||||
})
|
})
|
||||||
).subscribe((value: PaginatedList<GroupDtoModel>) => {
|
).subscribe((value: PaginatedList<GroupDtoModel>) => {
|
||||||
this.groupsDto$.next(value);
|
this.groupsDto$.next(value);
|
||||||
@@ -174,6 +180,14 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
this.subs.push(this.searchSub);
|
this.subs.push(this.searchSub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canManageGroup$(isSiteAdmin: boolean, group: Group): Observable<boolean> {
|
||||||
|
if (isSiteAdmin) {
|
||||||
|
return observableOf(true);
|
||||||
|
} else {
|
||||||
|
return this.authorizationService.isAuthorized(FeatureID.CanManageGroup, group.self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete Group
|
* Delete Group
|
||||||
*/
|
*/
|
||||||
|
@@ -10,6 +10,7 @@ export enum FeatureID {
|
|||||||
ReinstateItem = 'reinstateItem',
|
ReinstateItem = 'reinstateItem',
|
||||||
EPersonRegistration = 'epersonRegistration',
|
EPersonRegistration = 'epersonRegistration',
|
||||||
CanManageGroups = 'canManageGroups',
|
CanManageGroups = 'canManageGroups',
|
||||||
|
CanManageGroup = 'canManageGroup',
|
||||||
IsCollectionAdmin = 'isCollectionAdmin',
|
IsCollectionAdmin = 'isCollectionAdmin',
|
||||||
IsCommunityAdmin = 'isCommunityAdmin',
|
IsCommunityAdmin = 'isCommunityAdmin',
|
||||||
CanDownload = 'canDownload',
|
CanDownload = 'canDownload',
|
||||||
|
@@ -17,6 +17,11 @@ export class GroupDtoModel {
|
|||||||
*/
|
*/
|
||||||
public ableToDelete: boolean;
|
public ableToDelete: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not the current user is able to edit the linked group
|
||||||
|
*/
|
||||||
|
public ableToEdit: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of subgroups of this group
|
* List of subgroups of this group
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user