Skip to content

Commit

Permalink
Merge pull request #271 from tnpfldyd/BE-fix/profile-space
Browse files Browse the repository at this point in the history
Space์—์„œ ์•ˆ๋‚˜๊ฐ€์ง€๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •
  • Loading branch information
Conut-1 authored Dec 12, 2023
2 parents 7b786bd + d951825 commit 3602c19
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 24 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
30 changes: 16 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 @@ -106,17 +106,19 @@ export class AuthService extends BaseService<TokenData> {
}

async renewAccessToken(refreshToken: string) {
const decodedToken = this.jwtService.decode(refreshToken);
const uuid = decodedToken?.uuid;
try {
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,
});
} catch (error) {
super.remove(refreshToken);
super.remove(uuid);
throw new UnauthorizedException(
'Refresh token expired. Please log in again.',
);
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
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export class ProfileSpaceController {
spaceUuid,
profileData,
);
if (isSpaceEmpty) this.spacesService.remove(spaceUuid);
if (isSpaceEmpty) return this.spacesService.remove(spaceUuid);
const key = this.profileSpaceService.generateKey(joinData);
return this.profileSpaceService.remove(key);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const { CSV_FOLDER } = costomEnv;

type DeleteDataType = {
field: string;
value: string;
value: string | Record<string, string>;
};

export type InsertDataType =
Expand Down

0 comments on commit 3602c19

Please sign in to comment.