Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
overthestream committed Nov 16, 2023
2 parents 67e9117 + 7927930 commit 837b66e
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 24 deletions.
53 changes: 53 additions & 0 deletions src/auth/auth.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,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' })
Expand Down Expand Up @@ -252,6 +277,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) {
Expand Down
16 changes: 0 additions & 16 deletions src/auth/guard/signup.guard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,6 @@ export class SignupGuard extends AuthGuard('signup') {
}

async canActivate(context: ExecutionContext): Promise<boolean> {
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,
});
res.json({ signupToken: newToken });
return false;
}

const result = super.canActivate(context);
if (typeof result === 'boolean' || result instanceof Promise) {
return result;
Expand Down
2 changes: 1 addition & 1 deletion src/chat/chat.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export class ChatController {
@UseGuards(AuthGuard('access'))
@ApiCreatedResponse({
description: 'user chatting room list',
type: RoomInfoDto,
type: [RoomInfoDto],
})
@ApiHeader({
name: 'authorization',
Expand Down
11 changes: 9 additions & 2 deletions src/chat/chat.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -130,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();
});
}
Expand Down
2 changes: 2 additions & 0 deletions src/chat/models/socketUser.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ export class SocketUser extends Document {

@Prop({
type: String,
default: undefined,
required: false,
enum: Sex,
})
@IsEnum(Sex)
Expand Down
12 changes: 7 additions & 5 deletions src/user/user.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 837b66e

Please sign in to comment.