Skip to content

Commit

Permalink
fix(#212): refresh token 저장 방식 변경 및 스페이스 나가기 오류 제거
Browse files Browse the repository at this point in the history
  • Loading branch information
tnpfldyd committed Dec 12, 2023
1 parent 144dbca commit 2a45b11
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ CREATE TABLE `USER_TB` (

-- CreateTable
CREATE TABLE `REFRESH_TOKEN_TB` (
`uuid` VARCHAR(32) NOT NULL,
`token` VARCHAR(191) NOT NULL,
`token` VARCHAR(32) NOT NULL,
`expiry_date` DATETIME(3) NOT NULL,
`user_id` VARCHAR(191) NOT NULL,

UNIQUE INDEX `REFRESH_TOKEN_TB_token_key`(`token`),
PRIMARY KEY (`uuid`)
PRIMARY KEY (`token`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
Expand Down Expand Up @@ -44,7 +42,7 @@ CREATE TABLE `PROFILE_SPACE_TB` (
`space_uuid` VARCHAR(32) NOT NULL,
`profile_uuid` VARCHAR(32) NOT NULL,

PRIMARY KEY (`space_uuid`, `profile_uuid`)
UNIQUE INDEX `PROFILE_SPACE_TB_space_uuid_profile_uuid_key`(`space_uuid`, `profile_uuid`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
Expand Down
3 changes: 1 addition & 2 deletions nestjs-BE/server/prisma/mysql.schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ model USER_TB {
}

model REFRESH_TOKEN_TB {
uuid String @id @db.VarChar(32)
token String @unique
token String @id @db.VarChar(32)
expiry_date DateTime
user_id String
user USER_TB @relation(fields: [user_id], references: [uuid], onDelete: Cascade)
Expand Down
28 changes: 14 additions & 14 deletions nestjs-BE/server/src/auth/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,35 +69,35 @@ export class AuthService extends BaseService<TokenData> {
return accessToken;
}

async createRefreshToken(): Promise<string> {
const refreshTokenPayload = { uuid: generateUuid() };
const refreshToken = await this.jwtService.signAsync(refreshTokenPayload, {
secret: jwtConstants.refreshSecret,
expiresIn: '14d',
});
return refreshToken;
async createRefreshToken(): Promise<Record<string, string>> {
const refreshTokenUuid = generateUuid();
const refreshToken = await this.jwtService.signAsync(
{ uuid: refreshTokenUuid },
{ secret: jwtConstants.refreshSecret, expiresIn: '14d' },
);
return { refreshToken, refreshTokenUuid };
}

createRefreshTokenData(refreshToken: string, userUuid: string) {
createRefreshTokenData(refreshTokenUuid: string, userUuid: string) {
const currentDate = new Date();
const expiryDate = new Date(currentDate);
expiryDate.setDate(currentDate.getDate() + REFRESH_TOKEN_EXPIRY_DAYS);
const refreshTokenData: TokenData = {
token: refreshToken,
token: refreshTokenUuid,
expiry_date: expiryDate,
user_id: userUuid,
};
return refreshTokenData;
}

async login(userUuid: string) {
const refreshToken = await this.createRefreshToken();
const { refreshToken, refreshTokenUuid } = await this.createRefreshToken();
const accessToken = await this.createAccessToken(userUuid);
const refreshTokenData = this.createRefreshTokenData(
refreshToken,
refreshTokenUuid,
userUuid,
);
super.create(refreshTokenData);
super.create(refreshTokenData, false);
const tokenData = {
access_token: accessToken,
refresh_token: refreshToken,
Expand All @@ -107,10 +107,10 @@ export class AuthService extends BaseService<TokenData> {

async renewAccessToken(refreshToken: string) {
try {
this.jwtService.verify(refreshToken, {
const { uuid } = this.jwtService.verify(refreshToken, {
secret: jwtConstants.refreshSecret,
});
const { data: tokenData } = await this.findOne(refreshToken);
const { data: tokenData } = await super.findOne(uuid);
const accessToken = await this.createAccessToken(tokenData.user_id);
return ResponseUtils.createResponse(HttpStatus.OK, {
access_token: accessToken,
Expand Down
3 changes: 2 additions & 1 deletion nestjs-BE/server/src/base/base.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,10 @@ export abstract class BaseService<T extends HasUuid> {
if (insertTemporaryData) {
this.temporaryDatabaseService.delete(this.className, key, 'insert');
} else {
const value = key.includes('+') ? this.stringToObject(key) : key;
this.temporaryDatabaseService.remove(this.className, key, {
field: this.field,
value: key,
value: value,
});
}
return ResponseUtils.createResponse(HttpStatus.NO_CONTENT);
Expand Down

0 comments on commit 2a45b11

Please sign in to comment.