Browse Source

Add support to remove a received access on the access page

pull/7701/head
Thomas Kaul 1 week ago
parent
commit
d631618fe0
  1. 5
      apps/api/src/app/access/access.controller.ts
  2. 10
      apps/client/src/app/components/access-table/access-table.component.html
  3. 5
      apps/client/src/app/components/access-table/access-table.component.ts
  4. 9
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  5. 9
      apps/client/src/app/components/user-account-access/user-account-access.html

5
apps/api/src/app/access/access.controller.ts

@ -117,7 +117,10 @@ export class AccessController {
public async deleteAccess(@Param('id') id: string): Promise<AccessModel> {
const originalAccess = await this.accessService.access({
id,
userId: this.request.user.id
OR: [
{ granteeUserId: this.request.user.id },
{ userId: this.request.user.id }
]
});
if (!originalAccess) {

10
apps/client/src/app/components/access-table/access-table.component.html

@ -61,7 +61,9 @@
class="no-max-width"
xPosition="before"
>
@if (user()?.settings?.isExperimentalFeatures) {
@if (
!isReceivedAccess() && user()?.settings?.isExperimentalFeatures
) {
<button mat-menu-item (click)="onUpdateAccess(element.id)">
<span class="align-items-center d-flex">
<ion-icon class="mr-2" name="create-outline" />
@ -78,7 +80,7 @@
</button>
}
@if (
user()?.settings?.isExperimentalFeatures ||
(!isReceivedAccess() && user()?.settings?.isExperimentalFeatures) ||
element.type === 'PUBLIC'
) {
<hr class="my-0" />
@ -86,7 +88,11 @@
<button mat-menu-item (click)="onDeleteAccess(element.id)">
<span class="align-items-center d-flex">
<ion-icon class="mr-2" name="remove-circle-outline" />
@if (isReceivedAccess()) {
<span i18n>Remove</span>
} @else {
<span i18n>Revoke</span>
}
</span>
</button>
</mat-menu>

5
apps/client/src/app/components/access-table/access-table.component.ts

@ -52,6 +52,7 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
})
export class GfAccessTableComponent {
public readonly accesses = input.required<Access[]>();
public readonly isReceivedAccess = input<boolean>(false);
public readonly showActions = input<boolean>(false);
public readonly user = input.required<User>();
@ -119,7 +120,9 @@ export class GfAccessTableComponent {
this.accessDeleted.emit(aId);
},
confirmType: ConfirmationDialogType.Warn,
title: $localize`Do you really want to revoke this granted access?`
title: this.isReceivedAccess()
? $localize`Do you really want to remove this received access?`
: $localize`Do you really want to revoke this granted access?`
});
}

9
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -36,7 +36,7 @@ import { addIcons } from 'ionicons';
import { addOutline, eyeOffOutline, eyeOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
import { EMPTY } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { catchError, switchMap } from 'rxjs/operators';
import { GfCreateOrUpdateAccessDialogComponent } from './create-or-update-access-dialog/create-or-update-access-dialog.component';
import { CreateOrUpdateAccessDialogParams } from './create-or-update-access-dialog/interfaces/interfaces';
@ -142,7 +142,12 @@ export class GfUserAccountAccessComponent implements OnInit {
protected onDeleteAccess(aId: string) {
this.dataService
.deleteAccess(aId)
.pipe(takeUntilDestroyed(this.destroyRef))
.pipe(
switchMap(() => {
return this.userService.get(true);
}),
takeUntilDestroyed(this.destroyRef)
)
.subscribe({
next: () => {
this.update();

9
apps/client/src/app/components/user-account-access/user-account-access.html

@ -53,7 +53,14 @@
<div class="container">
@if (accessesGet.length > 0) {
<h1 class="h3 mb-3 text-center" i18n>Received Access</h1>
<gf-access-table class="mb-5" [accesses]="accessesGet" [user]="user" />
<gf-access-table
class="mb-5"
[accesses]="accessesGet"
[isReceivedAccess]="true"
[showActions]="hasPermissionToDeleteAccess"
[user]="user"
(accessDeleted)="onDeleteAccess($event)"
/>
}
<h1 class="align-items-center d-flex h3 justify-content-center mb-3">
<span i18n>Granted Access</span>

Loading…
Cancel
Save