feat(auth): include subscription tier in token and session payload

- Adds subscription tier info to access/refresh tokens.
- Stores tier details in session Redis record.
- Returns tier data in login/register response.
- Uses default tier when user has none.
This commit is contained in:
Evandro Fonseca Junior committed 2025-11-07 21:03:19 -03:00
1 parent 7f42def478
commit d27526e026
20 files changed
+2133 -40

No files matched your search

+13 -7
View File
@@ -9,21 +9,29 @@ const SESSION_PREFIX = "session:";
const USER_SESSION_PREFIX = "user_session:";
const SESSION_TTL = 60 * 60 * 24 * 7; // 7 dias (mesmo que refresh token)
export interface SessionTierInfo {
subscriptionTierId: number | null;
subscriptionTierSlug: string | null;
subscriptionTierName: string | null;
subscriptionTierLevel: number | null;
}
export interface SessionData {
userId: number;
username: string;
email: string;
accessToken: string;
createdAt: number;
subscriptionTierId: number | null;
subscriptionTierSlug: string | null;
subscriptionTierName: string | null;
subscriptionTierLevel: number | null;
}
/**
* Cria ou atualiza uma sessão
*/
export async function setSession(
sessionId: string,
data: SessionData
): Promise<void> {
export async function setSession(sessionId: string, data: SessionData): Promise<void> {
try {
const client = getRedisClient();
if (!client.isOpen) {
@@ -46,9 +54,7 @@ export async function setSession(
/**
* Obtém dados de uma sessão
*/
export async function getSession(
sessionId: string
): Promise<SessionData | null> {
export async function getSession(sessionId: string): Promise<SessionData | null> {
try {
const client = getRedisClient();
if (!client.isOpen) {