From 96c11c2235f33ca1e35fa9ddc602f86b5a94b512 Mon Sep 17 00:00:00 2001 From: venu123143 Date: Sun, 7 Dec 2025 23:49:45 +0530 Subject: [PATCH] refresh token changes --- src/models/RefreshToken.model.ts | 134 ++++++++++++++++--------------- 1 file changed, 69 insertions(+), 65 deletions(-) diff --git a/src/models/RefreshToken.model.ts b/src/models/RefreshToken.model.ts index 464f6a5..4cd5d90 100644 --- a/src/models/RefreshToken.model.ts +++ b/src/models/RefreshToken.model.ts @@ -15,10 +15,15 @@ export interface IRefreshTokenAttributes { } // Optional attributes for creation -type IRefreshTokenCreationAttributes = Optional; +type IRefreshTokenCreationAttributes = Optional< + IRefreshTokenAttributes, + 'id' | 'revoked' | 'created_at' | 'replaced_by' | 'last_used_at' +>; -// Sequelize Model class for RefreshToken -export class RefreshToken extends Model implements IRefreshTokenAttributes { +// Sequelize Model class +export class RefreshToken + extends Model + implements IRefreshTokenAttributes { declare id: string; declare user_id: string; declare token_hash: string; @@ -33,72 +38,71 @@ export class RefreshToken extends Model { - RefreshToken.init({ - id: { - type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4, - primaryKey: true, - }, - user_id: { - type: DataTypes.UUID, - allowNull: false, - references: { - model: 'users', - key: 'id', + RefreshToken.init( + { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, }, - }, - token_hash: { - type: DataTypes.STRING(512), - allowNull: false, - }, - revoked: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: false, - }, - expires_at: { - type: DataTypes.DATE, - allowNull: false, - }, - replaced_by: { - type: DataTypes.UUID, - allowNull: true, - }, - ip: { - type: DataTypes.STRING(50), - allowNull: true, - }, - user_agent: { - type: DataTypes.STRING(255), - allowNull: true, - }, - last_used_at: { - type: DataTypes.DATE, - allowNull: true, - }, - }, { - sequelize, - tableName: "refresh_tokens", - freezeTableName: true, - timestamps: true, - underscored: true, - createdAt: 'created_at', - updatedAt: false, - indexes: [ - { - fields: ['user_id'], - name: 'idx_refresh_tokens_user_id', + user_id: { + type: DataTypes.UUID, + allowNull: false, + references: { + model: 'users', + key: 'id', + }, }, - { - fields: ['token_hash'], - name: 'idx_refresh_tokens_token_hash', + token_hash: { + type: DataTypes.STRING(512), // OK + allowNull: false, }, - { - fields: ['expires_at'], - name: 'idx_refresh_tokens_expires_at', + revoked: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: false, }, - ], - }); + expires_at: { + type: DataTypes.DATE, + allowNull: false, + }, + replaced_by: { + type: DataTypes.UUID, + allowNull: true, + }, + + // FIXED ↓↓↓ + ip: { + type: DataTypes.STRING(255), // increased from 50 → 255 + allowNull: true, + }, + + // FIXED ↓↓↓ + user_agent: { + type: DataTypes.TEXT, // changed from VARCHAR(255) → TEXT + allowNull: true, + }, + + last_used_at: { + type: DataTypes.DATE, + allowNull: true, + }, + }, + { + sequelize, + tableName: "refresh_tokens", + freezeTableName: true, + timestamps: true, + underscored: true, + createdAt: 'created_at', + updatedAt: false, + indexes: [ + { fields: ['user_id'], name: 'idx_refresh_tokens_user_id' }, + { fields: ['token_hash'], name: 'idx_refresh_tokens_token_hash' }, + { fields: ['expires_at'], name: 'idx_refresh_tokens_expires_at' }, + ], + } + ); return RefreshToken; };