diff --git a/apps/api/src/app/access/access.controller.ts b/apps/api/src/app/access/access.controller.ts index e987e8756..35b1d485b 100644 --- a/apps/api/src/app/access/access.controller.ts +++ b/apps/api/src/app/access/access.controller.ts @@ -21,7 +21,7 @@ import { } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; -import { Access as AccessModel, Prisma } from '@prisma/client'; +import { Access as AccessModel } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AccessService } from './access.service'; @@ -87,17 +87,13 @@ export class AccessController { } try { - const settings: AccessSettings = data.filters?.length - ? { filters: data.filters } - : {}; - return this.accessService.createAccess({ alias: data.alias || undefined, granteeUser: data.granteeUserId ? { connect: { id: data.granteeUserId } } : undefined, permissions: data.permissions, - settings: settings as Prisma.InputJsonValue, + settings: this.accessService.buildSettings(data.filters), user: { connect: { id: this.request.user.id } } }); } catch { @@ -159,10 +155,6 @@ export class AccessController { } try { - const settings: AccessSettings = data.filters?.length - ? { filters: data.filters } - : {}; - return this.accessService.updateAccess({ data: { alias: data.alias, @@ -170,7 +162,7 @@ export class AccessController { ? { connect: { id: data.granteeUserId } } : { disconnect: true }, permissions: data.permissions, - settings: settings as Prisma.InputJsonValue + settings: this.accessService.buildSettings(data.filters) }, where: { id } }); diff --git a/apps/api/src/app/access/access.service.ts b/apps/api/src/app/access/access.service.ts index 70e46dc36..e50a6c7d0 100644 --- a/apps/api/src/app/access/access.service.ts +++ b/apps/api/src/app/access/access.service.ts @@ -1,4 +1,5 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; +import { AccessSettings, Filter } from '@ghostfolio/common/interfaces'; import { AccessWithGranteeUser } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; @@ -39,6 +40,12 @@ export class AccessService { }); } + public buildSettings(filters?: Filter[]) { + const settings: AccessSettings = filters?.length ? { filters } : {}; + + return settings as Prisma.InputJsonValue; + } + public async createAccess(data: Prisma.AccessCreateInput): Promise { return this.prismaService.access.create({ data diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts index b33952070..1b56ae798 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts @@ -25,7 +25,6 @@ import { } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { - AbstractControl, FormBuilder, FormGroup, FormsModule, @@ -143,9 +142,7 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit { const permissionsControl = this.accessForm.get('permissions'); if (accessType === 'PRIVATE') { - granteeUserIdControl?.setValidators([ - (control: AbstractControl) => Validators.required(control) - ]); + granteeUserIdControl?.setValidators(Validators.required); this.accessForm.get('filters')?.setValue(null); } else { granteeUserIdControl?.clearValidators(); @@ -153,10 +150,6 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit { permissionsControl?.setValue( access?.permissions[0] ?? AccessPermission.READ_RESTRICTED ); - - if (this.canApplyFilters) { - this.loadHoldings(); - } } granteeUserIdControl?.updateValueAndValidity(); @@ -164,9 +157,7 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit { this.changeDetectorRef.markForCheck(); }); - if (this.canApplyFilters) { - this.loadHoldings(); - } + this.loadHoldings(); } protected onCancel() {