Browse Source

Refactoring

pull/7251/head
Thomas Kaul 4 weeks ago
parent
commit
21b1ca3860
  1. 42
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts
  2. 2
      apps/api/src/app/user/user.service.ts
  3. 12
      libs/common/src/lib/permissions.ts

42
apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts

@ -132,9 +132,12 @@ export class AssetProfilesController {
@Param('dataSource') dataSource: DataSource, @Param('dataSource') dataSource: DataSource,
@Param('symbol') symbol: string @Param('symbol') symbol: string
): Promise<AssetProfileSplit> { ): Promise<AssetProfileSplit> {
const { id: symbolProfileId } = await this.validateCanManageSplits({ const { id: symbolProfileId } = await this.validateAccessToSplits({
dataSource, dataSource,
symbol symbol,
permission: permissions.createAssetProfileSplit,
permissionOfOwnAssetProfile:
permissions.createAssetProfileSplitOfOwnAssetProfile
}); });
return this.assetProfilesService.createSplit({ return this.assetProfilesService.createSplit({
@ -151,9 +154,12 @@ export class AssetProfilesController {
@Param('id') id: string, @Param('id') id: string,
@Param('symbol') symbol: string @Param('symbol') symbol: string
): Promise<void> { ): Promise<void> {
const { id: symbolProfileId } = await this.validateCanManageSplits({ const { id: symbolProfileId } = await this.validateAccessToSplits({
dataSource, dataSource,
symbol symbol,
permission: permissions.deleteAssetProfileSplit,
permissionOfOwnAssetProfile:
permissions.deleteAssetProfileSplitOfOwnAssetProfile
}); });
return this.assetProfilesService.deleteSplit({ id, symbolProfileId }); return this.assetProfilesService.deleteSplit({ id, symbolProfileId });
@ -180,11 +186,15 @@ export class AssetProfilesController {
); );
} }
private async validateCanManageSplits({ private async validateAccessToSplits({
dataSource, dataSource,
permission,
permissionOfOwnAssetProfile,
symbol symbol
}: { }: {
dataSource: DataSource; dataSource: DataSource;
permission: string;
permissionOfOwnAssetProfile: string;
symbol: string; symbol: string;
}) { }) {
const [assetProfile] = await this.symbolProfileService.getSymbolProfiles([ const [assetProfile] = await this.symbolProfileService.getSymbolProfiles([
@ -198,28 +208,16 @@ export class AssetProfilesController {
); );
} }
const canManageAllAssetProfiles = const canAccessAllAssetProfiles = hasPermission(
hasPermission(
this.request.user.permissions,
permissions.createMarketData
) &&
hasPermission(
this.request.user.permissions, this.request.user.permissions,
permissions.updateMarketData permission
); );
const canManageOwnAssetProfile = const canAccessOwnAssetProfile =
assetProfile.userId === this.request.user.id && assetProfile.userId === this.request.user.id &&
hasPermission( hasPermission(this.request.user.permissions, permissionOfOwnAssetProfile);
this.request.user.permissions,
permissions.createMarketDataOfOwnAssetProfile
) &&
hasPermission(
this.request.user.permissions,
permissions.updateMarketDataOfOwnAssetProfile
);
if (!canManageAllAssetProfiles && !canManageOwnAssetProfile) { if (!canAccessAllAssetProfiles && !canAccessOwnAssetProfile) {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN), getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN StatusCodes.FORBIDDEN

2
apps/api/src/app/user/user.service.ts

@ -549,9 +549,11 @@ export class UserService {
currentPermissions, currentPermissions,
permissions.accessHoldingsChart, permissions.accessHoldingsChart,
permissions.createAccess, permissions.createAccess,
permissions.createAssetProfileSplitOfOwnAssetProfile,
permissions.createMarketDataOfOwnAssetProfile, permissions.createMarketDataOfOwnAssetProfile,
permissions.createOwnTag, permissions.createOwnTag,
permissions.createWatchlistItem, permissions.createWatchlistItem,
permissions.deleteAssetProfileSplitOfOwnAssetProfile,
permissions.readAiPrompt, permissions.readAiPrompt,
permissions.readMarketDataOfOwnAssetProfile, permissions.readMarketDataOfOwnAssetProfile,
permissions.updateMarketDataOfOwnAssetProfile permissions.updateMarketDataOfOwnAssetProfile

12
libs/common/src/lib/permissions.ts

@ -12,6 +12,9 @@ export const permissions = {
createAccountBalance: 'createAccountBalance', createAccountBalance: 'createAccountBalance',
createActivity: 'createActivity', createActivity: 'createActivity',
createApiKey: 'createApiKey', createApiKey: 'createApiKey',
createAssetProfileSplit: 'createAssetProfileSplit',
createAssetProfileSplitOfOwnAssetProfile:
'createAssetProfileSplitOfOwnAssetProfile',
createMarketData: 'createMarketData', createMarketData: 'createMarketData',
createMarketDataOfOwnAssetProfile: 'createMarketDataOfOwnAssetProfile', createMarketDataOfOwnAssetProfile: 'createMarketDataOfOwnAssetProfile',
createOwnTag: 'createOwnTag', createOwnTag: 'createOwnTag',
@ -23,6 +26,9 @@ export const permissions = {
deleteAccount: 'deleteAccount', deleteAccount: 'deleteAccount',
deleteAccountBalance: 'deleteAccountBalance', deleteAccountBalance: 'deleteAccountBalance',
deleteActivity: 'deleteActivity', deleteActivity: 'deleteActivity',
deleteAssetProfileSplit: 'deleteAssetProfileSplit',
deleteAssetProfileSplitOfOwnAssetProfile:
'deleteAssetProfileSplitOfOwnAssetProfile',
deleteAuthDevice: 'deleteAuthDevice', deleteAuthDevice: 'deleteAuthDevice',
deleteOwnUser: 'deleteOwnUser', deleteOwnUser: 'deleteOwnUser',
deletePlatform: 'deletePlatform', deletePlatform: 'deletePlatform',
@ -80,6 +86,8 @@ export function getPermissions(aRole: Role): string[] {
permissions.createWatchlistItem, permissions.createWatchlistItem,
permissions.deleteAccountBalance, permissions.deleteAccountBalance,
permissions.deleteWatchlistItem, permissions.deleteWatchlistItem,
permissions.createAssetProfileSplit,
permissions.createAssetProfileSplitOfOwnAssetProfile,
permissions.createMarketData, permissions.createMarketData,
permissions.createMarketDataOfOwnAssetProfile, permissions.createMarketDataOfOwnAssetProfile,
permissions.createOwnTag, permissions.createOwnTag,
@ -88,6 +96,8 @@ export function getPermissions(aRole: Role): string[] {
permissions.deleteAccess, permissions.deleteAccess,
permissions.deleteAccount, permissions.deleteAccount,
permissions.deleteActivity, permissions.deleteActivity,
permissions.deleteAssetProfileSplit,
permissions.deleteAssetProfileSplitOfOwnAssetProfile,
permissions.deleteAuthDevice, permissions.deleteAuthDevice,
permissions.deletePlatform, permissions.deletePlatform,
permissions.deleteTag, permissions.deleteTag,
@ -128,6 +138,7 @@ export function getPermissions(aRole: Role): string[] {
permissions.createAccount, permissions.createAccount,
permissions.createAccountBalance, permissions.createAccountBalance,
permissions.createActivity, permissions.createActivity,
permissions.createAssetProfileSplitOfOwnAssetProfile,
permissions.createMarketDataOfOwnAssetProfile, permissions.createMarketDataOfOwnAssetProfile,
permissions.createOwnTag, permissions.createOwnTag,
permissions.createWatchlistItem, permissions.createWatchlistItem,
@ -135,6 +146,7 @@ export function getPermissions(aRole: Role): string[] {
permissions.deleteAccount, permissions.deleteAccount,
permissions.deleteAccountBalance, permissions.deleteAccountBalance,
permissions.deleteActivity, permissions.deleteActivity,
permissions.deleteAssetProfileSplitOfOwnAssetProfile,
permissions.deleteAuthDevice, permissions.deleteAuthDevice,
permissions.deleteWatchlistItem, permissions.deleteWatchlistItem,
permissions.readAiPrompt, permissions.readAiPrompt,

Loading…
Cancel
Save