Skip to content

Commit

Permalink
refactor(#10): 네이버 회원탈퇴 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
NicoDora committed Oct 13, 2023
1 parent 539f9c9 commit 60ddad9
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 37 deletions.
23 changes: 6 additions & 17 deletions src/auth/controllers/auth.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,9 @@ export class AuthController {
@Post('kakao/logout')
async kakaoLogout(@Headers('access_token') accessToken: string) {
const userId = await this.tokenService.decodeToken(accessToken);
const tokens = await this.tokenService.getUserTokens(userId);
const dbAccessToken = tokens[0].socialAccessToken;
const { kakaoAccessToken, kakaoRefreshToken } = await this.tokenService.getUserTokens(userId)[0];
await this.tokenService.deleteTokens(userId);
return await this.authService.kakaoLogout(accessToken, dbAccessToken);
return await this.authService.kakaoLogout(kakaoAccessToken, kakaoRefreshToken);
}

@ApiOperation({ summary: '카카오 회원탈퇴 API', description: '카카오 회원탈퇴 API' })
Expand All @@ -88,10 +87,9 @@ export class AuthController {
@Post('kakao/unlink')
async kakaoUnlink(@Headers('access_token') accessToken: string) {
const userId = await this.tokenService.decodeToken(accessToken);
const tokens = await this.tokenService.getUserTokens(userId);
const dbAccessToken = tokens[0].socialAccessToken;
const { kakaoAccessToken, kakaoRefreshToken } = await this.tokenService.getUserTokens(userId)[0];
await this.tokenService.deleteTokens(userId);
return await this.authService.kakaoUnlink(accessToken, dbAccessToken);
return await this.authService.kakaoUnlink(kakaoAccessToken, kakaoRefreshToken);
}

@ApiOperation({ summary: '네이버 로그아웃 API', description: '네이버 로그아웃 API' })
Expand All @@ -113,18 +111,9 @@ export class AuthController {
@Post('naver/unlink')
async naverUnlink(@Headers('access_token') accessToken: string) {
const userId = await this.tokenService.decodeToken(accessToken);
const tokens = await this.tokenService.getUserTokens(userId);
let naverAccessToken = tokens[0].socialAccessToken;

const checkValidNaverToken = await this.tokenService.checkValidNaverToken(naverAccessToken);

if (checkValidNaverToken === 401) {
const naverRefreshToken = tokens[0].socialRefreshToken;
const newNaverToken = await this.tokenService.getNewNaverToken(naverRefreshToken);
naverAccessToken = newNaverToken.access_token;
}
const { naverAccessToken, naverRefreshToken } = await this.tokenService.getUserTokens(userId)[0];
await this.tokenService.deleteTokens(userId);
return await this.authService.naverUnlink(naverAccessToken);
return await this.authService.naverUnlink(naverAccessToken, naverRefreshToken);
}

@ApiOperation({ summary: '계정 삭제 API', description: '계정 삭제 API' })
Expand Down
51 changes: 31 additions & 20 deletions src/auth/services/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,11 @@ export class AuthService {
}
}

async kakaoLogout(accessToken: string, dbAccessToken: string) {
async kakaoLogout(accessToken: string, refreshToken: string) {
try {
const checkValidKakaoToken = await this.tokenService.checkValidKakaoToken(accessToken);
if (checkValidKakaoToken === 401) {
const newKakaoToken = await this.tokenService.getNewKakaoToken(dbAccessToken);
const newKakaoToken = await this.tokenService.getNewKakaoToken(refreshToken);
accessToken = newKakaoToken.access_token;
}

Expand All @@ -184,11 +184,11 @@ export class AuthService {
}
}

async kakaoUnlink(accessToken: string, dbAccessToken: string) {
async kakaoUnlink(accessToken: string, refreshToken: string) {
try {
const checkValidKakaoToken = await this.tokenService.checkValidKakaoToken(accessToken);
if (checkValidKakaoToken === 401) {
const newKakaoToken = await this.tokenService.getNewKakaoToken(dbAccessToken);
const newKakaoToken = await this.tokenService.getNewKakaoToken(refreshToken);
accessToken = newKakaoToken.access_token;
}

Expand All @@ -207,22 +207,33 @@ export class AuthService {
}
}

async naverUnlink(accessToken: string) {
const naverUnlinkUrl = 'https://nid.naver.com/oauth2.0/token';
const naverUnlinkHeader = {
headers: {
Authorization: `Bearer ${accessToken}`,
},
};
const naverUnlinkBody = {
client_id: process.env.NAVER_CLIENT_ID,
client_secret: process.env.NAVER_CLIENT_SECRET,
grant_type: 'delete',
service_provider: 'NAVER',
};

axios.post(naverUnlinkUrl, naverUnlinkBody, naverUnlinkHeader);
return { message: "네이버 연동 해제가 완료되었습니다." };
async naverUnlink(accessToken: string, refreshToken: string) {
try {
const checkValidNaverToken = await this.tokenService.checkValidNaverToken(accessToken);
if (checkValidNaverToken === 401) {
const newNaverToken = await this.tokenService.getNewNaverToken(refreshToken);
accessToken = newNaverToken.access_token;
}

const naverUnlinkUrl = 'https://nid.naver.com/oauth2.0/token';
const naverUnlinkHeader = {
headers: {
Authorization: `Bearer ${accessToken}`,
},
};
const naverUnlinkBody = {
client_id: process.env.NAVER_CLIENT_ID,
client_secret: process.env.NAVER_CLIENT_SECRET,
grant_type: 'delete',
service_provider: 'NAVER',
};

axios.post(naverUnlinkUrl, naverUnlinkBody, naverUnlinkHeader);
return { message: "네이버 연동 해제가 완료되었습니다." };
} catch (error) {
console.log(error);
throw new HttpException('알 수 없는 오류가 발생했습니다.', HttpStatus.INTERNAL_SERVER_ERROR)
}
}

async accountDelete(userId: number) {
Expand Down

0 comments on commit 60ddad9

Please sign in to comment.