diff --git a/apps/server/src/account/account.module.ts b/apps/server/src/account/account.module.ts index f8236c8..471538e 100644 --- a/apps/server/src/account/account.module.ts +++ b/apps/server/src/account/account.module.ts @@ -9,10 +9,11 @@ import { RefreshTokenGuard } from '@/account/guard/refreshToken.guard'; import { AuthService } from '@/account/auth.service'; import { Account } from '@/account/entity/account.entity'; import { UserService } from './user.service'; +import { UserController } from './user.controller'; @Module({ imports: [JwtModule.register({ global: true }), TypeOrmModule.forFeature([Account])], - controllers: [AuthController], + controllers: [AuthController, UserController], providers: [ AuthService, UserService, diff --git a/apps/server/src/account/dto/update-profile-image.dto.ts b/apps/server/src/account/dto/update-profile-image.dto.ts new file mode 100644 index 0000000..15a6e01 --- /dev/null +++ b/apps/server/src/account/dto/update-profile-image.dto.ts @@ -0,0 +1,7 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class UpdateProfileImageRequest { + @IsNotEmpty() + @IsString() + profileImage: string; +} diff --git a/apps/server/src/account/user.controller.ts b/apps/server/src/account/user.controller.ts new file mode 100644 index 0000000..25437e3 --- /dev/null +++ b/apps/server/src/account/user.controller.ts @@ -0,0 +1,21 @@ +import { Body, Controller, Patch, UseGuards } from '@nestjs/common'; +import { UserDto } from '@/account/dto/user.dto'; +import { ResponseMessage } from '@/common/decorator/response-message.decorator'; +import { AccessTokenGuard } from './guard/accessToken.guard'; +import { UserService } from './user.service'; +import { UpdateProfileImageRequest } from './dto/update-profile-image.dto'; +import { AuthUser } from './decorator/authUser.decorator'; +import { Account } from './entity/account.entity'; + +@UseGuards(AccessTokenGuard) +@Controller('user') +export class UserController { + constructor(private readonly userService: UserService) {} + + @Patch('profile-image') + @ResponseMessage('사용자 프로필 이미지 수정에 성공했습니다.') + async updateProfileImage(@AuthUser() user: Account, @Body() body: UpdateProfileImageRequest) { + const updatedUser = await this.userService.updateProfileImage(user.id, body.profileImage); + return new UserDto(updatedUser); + } +} diff --git a/apps/server/src/account/user.service.ts b/apps/server/src/account/user.service.ts index 8fe8c67..2e19761 100644 --- a/apps/server/src/account/user.service.ts +++ b/apps/server/src/account/user.service.ts @@ -1,13 +1,19 @@ -import { Injectable } from '@nestjs/common'; -import { Repository } from 'typeorm'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Account } from './entity/account.entity'; - -@Injectable() -export class UserService { - constructor(@InjectRepository(Account) private userRepository: Repository) {} - - async getOne(id: number) { - return this.userRepository.findOneBy({ id }); - } -} +import { Injectable } from '@nestjs/common'; +import { Repository } from 'typeorm'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Account } from './entity/account.entity'; + +@Injectable() +export class UserService { + constructor(@InjectRepository(Account) private userRepository: Repository) {} + + async getOne(id: number) { + return await this.userRepository.findOneBy({ id }); + } + + async updateProfileImage(id: number, profileImage: string) { + const user = await this.userRepository.findOneBy({ id }); + user.profileImage = profileImage; + return this.userRepository.save(user); + } +}