diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 016284e..0490bcf 100755 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -84,7 +84,6 @@ export class AuthController { return this.authService.changePassword(userId, changePasswordDto); } - @AuthGuards() @ApiOperation({ summary: "refresh the user access token / refresh token" }) @HttpCode(HttpStatus.OK) @Post("refresh") diff --git a/src/modules/auth/providers/tokens.service.ts b/src/modules/auth/providers/tokens.service.ts index ba7fd0c..a82b79b 100755 --- a/src/modules/auth/providers/tokens.service.ts +++ b/src/modules/auth/providers/tokens.service.ts @@ -5,7 +5,6 @@ import dayjs from "dayjs"; import { AuthMessage } from "../../../common/enums/message.enum"; import { User } from "../../users/entities/user.entity"; -import { UsersService } from "../../users/providers/users.service"; import { RefreshTokensRepository } from "../../users/repositories/refresh-token.repository"; import { ITokenPayload } from "../interfaces/IToken-payload"; @@ -15,7 +14,6 @@ export class TokensService { private readonly configService: ConfigService, private readonly jwtService: JwtService, private readonly refreshTokensRepository: RefreshTokensRepository, - private readonly usersService: UsersService, ) {} // ----------- generate token ----------------- @@ -33,7 +31,7 @@ export class TokensService { const accessExpire = this.configService.getOrThrow("ACCESS_TOKEN_EXPIRE"); const refreshExpire = this.configService.getOrThrow("REFRESH_TOKEN_EXPIRE"); - const accessToken = this.jwtService.sign(payload, { expiresIn: `${accessExpire}h` }); + const accessToken = this.jwtService.sign(payload, { expiresIn: `${accessExpire}m` }); const refreshToken = this.jwtService.sign(payload, { expiresIn: `${refreshExpire}d` }); @@ -48,30 +46,41 @@ export class TokensService { //**************************************************************** */ async storeRefreshToken(userId: string, refreshToken: string) { const refreshExpire = this.configService.getOrThrow("REFRESH_TOKEN_EXPIRE"); - const expiresAt = dayjs().add(refreshExpire, "day").toDate(); - const token = this.refreshTokensRepository.create({ - token: refreshToken, - user: { id: userId }, - expiresAt, + const existingToken = await this.refreshTokensRepository.findOne({ + where: { user: { id: userId } }, }); - await this.refreshTokensRepository.save(token); + if (existingToken) { + existingToken.token = refreshToken; + existingToken.expiresAt = expiresAt; + await this.refreshTokensRepository.save(existingToken); + } else { + const token = this.refreshTokensRepository.create({ + token: refreshToken, + user: { id: userId }, + expiresAt, + }); + + await this.refreshTokensRepository.save(token); + } } /************************************************************ */ async refreshToken(oldRefreshToken: string) { - const token = await this.refreshTokensRepository.findOne({ where: { token: oldRefreshToken }, relations: { user: true } }); + const token = await this.refreshTokensRepository.findOne({ + where: { token: oldRefreshToken }, + relations: { user: { roles: { permissions: true } } }, + }); if (!token) throw new UnauthorizedException(AuthMessage.INVALID_REFRESH_TOKEN); if (dayjs(token.expiresAt).isBefore(dayjs())) throw new UnauthorizedException(AuthMessage.REFRESH_TOKEN_EXPIRED); - const { user } = await this.usersService.findOneById(token.user.id); await this.refreshTokensRepository.delete({ id: token.id }); - return await this.generateTokens(user); + return await this.generateTokens(token.user); } /************************************************************ */ diff --git a/src/modules/danak-services/repositories/danak-services.repository.ts b/src/modules/danak-services/repositories/danak-services.repository.ts index 6fcde0f..3030c79 100755 --- a/src/modules/danak-services/repositories/danak-services.repository.ts +++ b/src/modules/danak-services/repositories/danak-services.repository.ts @@ -70,7 +70,7 @@ export class DanakServicesRepository extends Repository { .leftJoinAndSelect("service.category", "category") .where("service.isActive = :isActive", { isActive: true }) .andWhere("service.deletedAt IS NULL") - .andWhere("service.isDanakSuggest = :isDanakSuggest", { isDanakSuggest: true }) + // .andWhere("service.isDanakSuggest = :isDanakSuggest", { isDanakSuggest: true }) .orderBy("service.createdAt", "DESC") .skip(skip) .take(limit);