Uecko_ERP/apps/server/src/contexts/auth/application/register/refresh-token.use-case.ts
2025-02-15 22:30:12 +01:00

30 lines
935 B
TypeScript

import { Result } from "@common/domain";
import { ITransactionManager } from "@common/infrastructure/database";
import { Token } from "@contexts/auth/domain";
import { IAuthService } from "@contexts/auth/domain/services";
export class RefreshTokenUseCase {
constructor(
private readonly authService: IAuthService,
private readonly transactionManager: ITransactionManager
) {}
public async execute(token: Token) {
return await this.transactionManager.complete(async (transaction) => {
const payload = this.authService.verifyRefreshToken(token);
if (!payload || !payload.email || !payload.user_id || !payload.tab_id || !payload.roles) {
return Result.fail(new Error("Invalid input data"));
}
const { user_id, tab_id, email, roles } = payload;
return this.authService.generateRefreshToken({
user_id,
tab_id,
email,
roles,
});
});
}
}