Browse Source

Refactoring

pull/7146/head
Thomas Kaul 3 weeks ago
parent
commit
13014f5523
  1. 58
      apps/api/src/app/access/access.controller.ts
  2. 2
      apps/api/src/app/endpoints/public/public.controller.ts
  3. 7
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

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

@ -46,19 +46,13 @@ export class AccessController {
}); });
return accessesWithGranteeUser.map( return accessesWithGranteeUser.map(
({ ({ alias, granteeUser, id, permissions, settings }) => {
alias,
granteeUser,
id,
permissions: accessPermissions,
settings
}) => {
if (granteeUser) { if (granteeUser) {
return { return {
alias, alias,
grantee: granteeUser?.id,
id, id,
permissions: accessPermissions, permissions,
grantee: granteeUser?.id,
settings: settings as AccessSettings, settings: settings as AccessSettings,
type: 'PRIVATE' type: 'PRIVATE'
}; };
@ -66,9 +60,9 @@ export class AccessController {
return { return {
alias, alias,
grantee: 'Public',
id, id,
permissions: accessPermissions, permissions,
grantee: 'Public',
settings: settings as AccessSettings, settings: settings as AccessSettings,
type: 'PUBLIC' type: 'PUBLIC'
}; };
@ -114,6 +108,27 @@ export class AccessController {
} }
} }
@Delete(':id')
@HasPermission(permissions.deleteAccess)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async deleteAccess(@Param('id') id: string): Promise<AccessModel> {
const originalAccess = await this.accessService.access({
id,
userId: this.request.user.id
});
if (!originalAccess) {
throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN
);
}
return this.accessService.deleteAccess({
id
});
}
@HasPermission(permissions.updateAccess) @HasPermission(permissions.updateAccess)
@Put(':id') @Put(':id')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@ -166,25 +181,4 @@ export class AccessController {
); );
} }
} }
@Delete(':id')
@HasPermission(permissions.deleteAccess)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async deleteAccess(@Param('id') id: string): Promise<AccessModel> {
const originalAccess = await this.accessService.access({
id,
userId: this.request.user.id
});
if (!originalAccess) {
throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN
);
}
return this.accessService.deleteAccess({
id
});
}
} }

2
apps/api/src/app/endpoints/public/public.controller.ts

@ -69,7 +69,6 @@ export class PublicController {
hasDetails = user.subscription.type === SubscriptionType.Premium; hasDetails = user.subscription.type === SubscriptionType.Premium;
} }
// Get the portfolio filters from the access settings
const { filters: portfolioFilters = [] } = (access.settings ?? const { filters: portfolioFilters = [] } = (access.settings ??
{}) as AccessSettings; {}) as AccessSettings;
@ -99,7 +98,6 @@ export class PublicController {
user.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY; user.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY;
const filteredHoldings = Object.fromEntries( const filteredHoldings = Object.fromEntries(
Object.entries(holdings).filter(([, holding]) => { Object.entries(holdings).filter(([, holding]) => {
// Remove only cash holdings that match the base currency
const isCash = const isCash =
holding.assetProfile.assetSubClass === AssetSubClass.CASH; holding.assetProfile.assetSubClass === AssetSubClass.CASH;
const isBaseCurrency = holding.assetProfile.symbol === baseCurrency; const isBaseCurrency = holding.assetProfile.symbol === baseCurrency;

7
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

@ -61,10 +61,9 @@ import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces';
templateUrl: 'create-or-update-access-dialog.html' templateUrl: 'create-or-update-access-dialog.html'
}) })
export class GfCreateOrUpdateAccessDialogComponent implements OnInit { export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
public hasExperimentalFeatures = false;
public accounts: AccountWithPlatform[] = []; public accounts: AccountWithPlatform[] = [];
public assetClasses: Filter[] = []; public assetClasses: Filter[] = [];
public hasExperimentalFeatures = false;
public holdings: PortfolioPosition[] = []; public holdings: PortfolioPosition[] = [];
public tags: Filter[] = []; public tags: Filter[] = [];
@ -72,12 +71,16 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
protected readonly mode: 'create' | 'update'; protected readonly mode: 'create' | 'update';
private readonly changeDetectorRef = inject(ChangeDetectorRef); private readonly changeDetectorRef = inject(ChangeDetectorRef);
private readonly data = private readonly data =
inject<CreateOrUpdateAccessDialogParams>(MAT_DIALOG_DATA); inject<CreateOrUpdateAccessDialogParams>(MAT_DIALOG_DATA);
private readonly dataService = inject(DataService); private readonly dataService = inject(DataService);
private readonly destroyRef = inject(DestroyRef); private readonly destroyRef = inject(DestroyRef);
private readonly dialogRef = private readonly dialogRef =
inject<MatDialogRef<GfCreateOrUpdateAccessDialogComponent>>(MatDialogRef); inject<MatDialogRef<GfCreateOrUpdateAccessDialogComponent>>(MatDialogRef);
private readonly formBuilder = inject(FormBuilder); private readonly formBuilder = inject(FormBuilder);
private readonly notificationService = inject(NotificationService); private readonly notificationService = inject(NotificationService);
private readonly userService = inject(UserService); private readonly userService = inject(UserService);

Loading…
Cancel
Save