From 641c3baaefecb997ae974bae2d41a5ec21a32dfb Mon Sep 17 00:00:00 2001 From: csehatt741 Date: Thu, 20 Mar 2025 15:35:35 +0100 Subject: [PATCH] Code review changes --- apps/api/src/app/user/user.controller.ts | 32 +++++++++++-------- apps/api/src/app/user/user.service.ts | 8 +++-- .../admin-users/admin-users.component.ts | 9 +++--- .../components/admin-users/admin-users.html | 2 +- apps/client/src/app/services/data.service.ts | 16 +++++----- .../lib/interfaces/access-token.interface.ts | 3 -- libs/common/src/lib/interfaces/index.ts | 4 +-- .../access-token-response.interface.ts | 3 ++ 8 files changed, 41 insertions(+), 36 deletions(-) delete mode 100644 libs/common/src/lib/interfaces/access-token.interface.ts create mode 100644 libs/common/src/lib/interfaces/responses/access-token-response.interface.ts diff --git a/apps/api/src/app/user/user.controller.ts b/apps/api/src/app/user/user.controller.ts index f7984074f..eacd57c83 100644 --- a/apps/api/src/app/user/user.controller.ts +++ b/apps/api/src/app/user/user.controller.ts @@ -2,7 +2,11 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; -import { AccessToken, User, UserSettings } from '@ghostfolio/common/interfaces'; +import { + AccessTokenResponse, + User, + UserSettings +} from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import type { RequestWithUser } from '@ghostfolio/common/types'; @@ -85,6 +89,19 @@ export class UserController { }); } + @Post(':id/access-token') + @HasPermission(permissions.accessAdminControl) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async generateAccessToken( + @Param('id') id: string + ): Promise { + const { accessToken } = await this.userService.generateAccessToken({ + userId: id + }); + + return { accessToken }; + } + @Get() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async getUser( @@ -123,19 +140,6 @@ export class UserController { }; } - @Post(':id/security-token') - @HasPermission(permissions.accessAdminControl) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async generateSecurityToken( - @Param('id') id: string - ): Promise { - const accessToken = await this.userService.generateAccessToken({ - userId: id - }); - - return { accessToken }; - } - @Put('setting') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async updateUserSetting(@Body() data: UpdateUserSettingDto) { diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 09d9b2184..fc1ebbd9f 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -464,7 +464,9 @@ export class UserService { } if (data.provider === 'ANONYMOUS') { - const accessToken = await this.generateAccessToken({ userId: user.id }); + const { accessToken } = await this.generateAccessToken({ + userId: user.id + }); return { ...user, accessToken }; } @@ -576,7 +578,7 @@ export class UserService { userId }: { userId: string; - }): Promise { + }): Promise<{ accessToken: string }> { const accessToken = this.createAccessToken(userId, getRandomString(10)); const hashedAccessToken = this.createAccessToken( @@ -589,6 +591,6 @@ export class UserService { where: { id: userId } }); - return accessToken; + return { accessToken }; } } diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 792e1f434..06bd8ef1a 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -141,16 +141,15 @@ export class AdminUsersComponent implements OnDestroy, OnInit { }); } - public onGenerateSecurityToken(aId: string) { + public onGenerateAccessToken(aId: string) { this.notificationService.confirm({ confirmFn: () => { this.dataService - .generateSecurityToken(aId) + .generateAccessToken(aId) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ accessToken }) => { - this.notificationService.prompt({ - confirmFn: () => undefined, - defaultValue: accessToken, + this.notificationService.alert({ + message: accessToken, title: $localize`Security token` }); }); diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index 3424463e7..c70bbe0a1 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -243,7 +243,7 @@ }