From 50180569e0ab1435f0683217f1e7575f1651fb1c Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Tue, 14 Nov 2023 18:44:53 +0900 Subject: [PATCH 1/7] feat: signup back --- src/auth/auth.controller.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index aa4d54f..bcda338 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -251,6 +251,34 @@ export class AuthController { } } + @Get('/signup/back') + @UseGuards(SignupGuard) + @ApiBadRequestResponse({ + description: 'invalid signup token', + }) + @ApiCreatedResponse({ + description: 'new signup token', + type: SignupTokenResponseDto, + }) + @ApiOperation({ + summary: '회원가입 뒤로가기', + description: '이전 signup token 발행', + }) + async signupBack(@Req() req: Request, @Res() res: Response) { + try { + const { id, infoId, page } = req.user as SignupPayload; + const signupToken = await this.authService.getSignupToken({ + id: id, + infoId: infoId, + page: page - 2, + }); + + return res.json({ signupToken: signupToken }); + } catch (err) { + res.status(err.status).json(err); + } + } + @Post('/login') @ApiOperation({ deprecated: true }) async login(@Body() loginDto: LoginDto, @Res() res: Response) { From a741177be1c7a4a46616349d48e4e19a0454e653 Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:59:09 +0900 Subject: [PATCH 2/7] fix: chatting authorization header to auth --- src/chat/chat.controller.ts | 2 +- src/chat/chat.service.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chat/chat.controller.ts b/src/chat/chat.controller.ts index abe0712..1fb47a5 100644 --- a/src/chat/chat.controller.ts +++ b/src/chat/chat.controller.ts @@ -13,7 +13,7 @@ export class ChatController { @UseGuards(AuthGuard('access')) @ApiCreatedResponse({ description: 'user chatting room list', - type: RoomInfoDto, + type: [RoomInfoDto], }) @ApiHeader({ name: 'authorization', diff --git a/src/chat/chat.service.ts b/src/chat/chat.service.ts index e7f127e..0abc664 100644 --- a/src/chat/chat.service.ts +++ b/src/chat/chat.service.ts @@ -27,7 +27,7 @@ export class ChatService { ) {} async validateSocket(client: Socket) { - const authHeader = client.handshake.headers['authorization']; + const authHeader = client.handshake.auth['authorization']; if (!authHeader || authHeader == undefined) { client.disconnect(true); From 54de03cd3b0ef2403bcdf866c1b4e5101dbabdb5 Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 16:15:53 +0900 Subject: [PATCH 3/7] fix: rollback --- src/chat/chat.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chat/chat.service.ts b/src/chat/chat.service.ts index 0abc664..e7f127e 100644 --- a/src/chat/chat.service.ts +++ b/src/chat/chat.service.ts @@ -27,7 +27,7 @@ export class ChatService { ) {} async validateSocket(client: Socket) { - const authHeader = client.handshake.auth['authorization']; + const authHeader = client.handshake.headers['authorization']; if (!authHeader || authHeader == undefined) { client.disconnect(true); From db44dc46e8cea777ee43e51d2aa5df105fe872f1 Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:18:24 +0900 Subject: [PATCH 4/7] fix: socket error by userSex null --- src/auth/guard/signup.guard.ts | 1 + src/chat/models/socketUser.model.ts | 2 ++ src/user/user.service.ts | 12 +++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/auth/guard/signup.guard.ts b/src/auth/guard/signup.guard.ts index 7daa4bb..5710bfd 100644 --- a/src/auth/guard/signup.guard.ts +++ b/src/auth/guard/signup.guard.ts @@ -28,6 +28,7 @@ export class SignupGuard extends AuthGuard('signup') { infoId: userInfo.id, page: 0, }); + console.log(userInfo.id); res.json({ signupToken: newToken }); return false; } diff --git a/src/chat/models/socketUser.model.ts b/src/chat/models/socketUser.model.ts index 31a0bb6..6b1486e 100644 --- a/src/chat/models/socketUser.model.ts +++ b/src/chat/models/socketUser.model.ts @@ -44,6 +44,8 @@ export class SocketUser extends Document { @Prop({ type: String, + default: undefined, + required: false, enum: Sex, }) @IsEnum(Sex) diff --git a/src/user/user.service.ts b/src/user/user.service.ts index d44becf..03d8d9c 100644 --- a/src/user/user.service.ts +++ b/src/user/user.service.ts @@ -25,19 +25,21 @@ export class UserService { const rand = Math.floor(Math.random() * 100000); const index = rand % nicknames.length; const nickname = nicknames[index].toString() + rand.toString(); - const user = this.userRepository.create({ userNickname: nickname }); - return this.userRepository.save(user); + const user = await this.userRepository.create({ userNickname: nickname }); + return await this.userRepository.save(user); } async createUserInfo(user: UserEntity) { - const userInfo = this.userInfoRepository.create({ user: user }); - return this.userInfoRepository.save(userInfo); + const userInfoEntity = await this.userInfoRepository.create({ user: user }); + const userInfo = await this.userInfoRepository.save(userInfoEntity); + this.updateUser(user.id, 'userInfo', userInfo); + return userInfo; } async updateUser( id: number, field: string, - value: string | BlurtingGroupEntity, + value: string | UserInfoEntity | BlurtingGroupEntity, ) { const user = await this.userRepository.findOne({ where: { id: id } }); user[field] = value; From 2abeed116b30dbeaef776f0057e8ef96eaac72cd Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:44:38 +0900 Subject: [PATCH 5/7] refactor: signup guard / start --- src/auth/auth.controller.ts | 25 +++++++++++++++++++++++++ src/auth/guard/signup.guard.ts | 17 ----------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index bcda338..ddd65eb 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -168,6 +168,31 @@ export class AuthController { } } + @Get('/signup/start') + @ApiCreatedResponse({ + description: 'new signup token', + type: SignupTokenResponseDto, + }) + @ApiOperation({ + summary: '회원가입 시작', + description: '첫 signup token 발행', + }) + async signupStart(@Req() req: Request, @Res() res: Response) { + try { + const user = await this.userService.createUser(); + const userInfo = await this.userService.createUserInfo(user); + const signupToken = await this.authService.getSignupToken({ + id: user.id, + infoId: userInfo.id, + page: 0, + }); + + return res.json({ signupToken: signupToken }); + } catch (err) { + res.status(err.status).json(err); + } + } + @Post('/signup/phonenumber') @UseGuards(SignupGuard) @ApiOperation({ summary: '휴대폰 인증 요청 - 첫 endpoint' }) diff --git a/src/auth/guard/signup.guard.ts b/src/auth/guard/signup.guard.ts index 5710bfd..ae1fdd8 100644 --- a/src/auth/guard/signup.guard.ts +++ b/src/auth/guard/signup.guard.ts @@ -16,23 +16,6 @@ export class SignupGuard extends AuthGuard('signup') { } async canActivate(context: ExecutionContext): Promise { - const req = context.switchToHttp().getRequest(); - const res = context.switchToHttp().getResponse(); - const token = req.headers.authorization?.split('Bearer ')[1]; - - if (!token) { - const user = await this.userService.createUser(); - const userInfo = await this.userService.createUserInfo(user); - const newToken = await this.authService.getSignupToken({ - id: user.id, - infoId: userInfo.id, - page: 0, - }); - console.log(userInfo.id); - res.json({ signupToken: newToken }); - return false; - } - const result = super.canActivate(context); if (typeof result === 'boolean' || result instanceof Promise) { return result; From eb80c8994630564c6ea215b1a8d0e6bac51dd2f4 Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:45:07 +0900 Subject: [PATCH 6/7] refactor: validate socket with auth and headers --- src/chat/chat.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/chat/chat.service.ts b/src/chat/chat.service.ts index e7f127e..dc5035a 100644 --- a/src/chat/chat.service.ts +++ b/src/chat/chat.service.ts @@ -28,14 +28,19 @@ export class ChatService { async validateSocket(client: Socket) { const authHeader = client.handshake.headers['authorization']; + const authAuth = client.handshake.auth['authorization']; + let token; - if (!authHeader || authHeader == undefined) { + if (authHeader && authHeader != undefined) { + token = authHeader.split(' ')[1]; + } else if (authAuth && authAuth != undefined) { + token = authAuth.split(' ')[1]; + } else { client.disconnect(true); return false; } try { - const token = authHeader.split(' ')[1]; const decoded = jwt.verify(token, process.env.ACCESS_TOKEN_SECRET_KEY); client.data.userId = decoded['id']; } catch (error) { From 7927930bf18419b73567aaf05887bb600a96ae67 Mon Sep 17 00:00:00 2001 From: kyeah <39901387+dmobtxx19@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:33:42 +0900 Subject: [PATCH 7/7] fix: roomInfo sort null error --- src/chat/chat.service.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/chat/chat.service.ts b/src/chat/chat.service.ts index dc5035a..d17aaf9 100644 --- a/src/chat/chat.service.ts +++ b/src/chat/chat.service.ts @@ -135,6 +135,8 @@ export class ChatService { ); return roomInfo.sort((a, b) => { + if (a.latest_time == null) return -1; + if (b.latest_time == null) return 1; return b.latest_time.getTime() - a.latest_time.getTime(); }); }