hash refresh token

This commit is contained in:
2025-12-06 22:51:34 +03:30
parent 46470f73d0
commit 6c62c8badc
2 changed files with 11 additions and 4 deletions
@@ -10,7 +10,7 @@ export enum RefreshTokenType {
@Entity({ tableName: 'refreshtokens' })
export class RefreshToken extends BaseEntity {
@Property({ type: 'varchar', length: 255 })
token!: string;
hashedToken!: string;
@Property()
ownerId!: string;
+10 -3
View File
@@ -1,4 +1,4 @@
import { randomBytes } from 'node:crypto';
import { createHash, randomBytes } from 'node:crypto';
import { EntityManager } from '@mikro-orm/postgresql';
import { Injectable, Logger, UnauthorizedException } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@@ -49,8 +49,10 @@ export class TokensService {
const refreshExpire = this.configService.getOrThrow<number>('REFRESH_TOKEN_EXPIRE');
const expiresAt = dayjs().add(refreshExpire, 'day').toDate();
const hashedToken = this.hashToken(refreshToken);
const token = this.em.create(RefreshToken, {
token: refreshToken,
hashedToken,
ownerId,
restId,
type,
@@ -61,7 +63,8 @@ export class TokensService {
}
async refreshToken(oldRefreshToken: string) {
const token = await this.em.findOne(RefreshToken, { token: oldRefreshToken });
const hashedToken = this.hashToken(oldRefreshToken);
const token = await this.em.findOne(RefreshToken, { hashedToken });
if (!token) throw new UnauthorizedException(AuthMessage.INVALID_REFRESH_TOKEN);
@@ -97,4 +100,8 @@ export class TokensService {
private generateRefreshToken() {
return randomBytes(32).toString('hex');
}
private hashToken(token: string): string {
return createHash('sha256').update(token).digest('hex');
}
}