From 634b1653182a22d6cdb46b695628eb27adbd03f8 Mon Sep 17 00:00:00 2001 From: Joseph Milazzo Date: Sun, 8 Dec 2024 10:32:18 -0600 Subject: [PATCH] Ensure that if a user doesn't have access to a person, person detail page redirects and informs them. --- UI/Web/src/app/_services/person.service.ts | 2 +- .../src/app/person-detail/person-detail.component.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/UI/Web/src/app/_services/person.service.ts b/UI/Web/src/app/_services/person.service.ts index f37ba2d65..676aa6e71 100644 --- a/UI/Web/src/app/_services/person.service.ts +++ b/UI/Web/src/app/_services/person.service.ts @@ -26,7 +26,7 @@ export class PersonService { } get(name: string) { - return this.httpClient.get(this.baseUrl + `person?name=${name}`); + return this.httpClient.get(this.baseUrl + `person?name=${name}`); } getRolesForPerson(personId: number) { diff --git a/UI/Web/src/app/person-detail/person-detail.component.ts b/UI/Web/src/app/person-detail/person-detail.component.ts index 3ebe918f1..63874b51d 100644 --- a/UI/Web/src/app/person-detail/person-detail.component.ts +++ b/UI/Web/src/app/person-detail/person-detail.component.ts @@ -39,6 +39,7 @@ import {translate, TranslocoDirective} from "@jsverse/transloco"; import {ChapterCardComponent} from "../cards/chapter-card/chapter-card.component"; import {ThemeService} from "../_services/theme.service"; import {DefaultModalOptions} from "../_models/default-modal-options"; +import {ToastrService} from "ngx-toastr"; @Component({ selector: 'app-person-detail', @@ -74,6 +75,7 @@ export class PersonDetailComponent { protected readonly imageService = inject(ImageService); protected readonly accountService = inject(AccountService); private readonly themeService = inject(ThemeService); + private readonly toastr = inject(ToastrService); protected readonly TagBadgeCursor = TagBadgeCursor; @@ -104,7 +106,14 @@ export class PersonDetailComponent { this.personName = personName; return this.personService.get(personName); }), - tap(person => { + tap((person) => { + + if (person == null) { + this.toastr.error(translate('toasts.unauthorized-1')); + this.router.navigateByUrl('/home'); + return; + } + this.person = person; this.personSubject.next(person); // emit the person data for subscribers this.themeService.setColorScape(person.primaryColor || '', person.secondaryColor);