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:
1 parent
7f42def478
commit
d27526e026
20 files changed
+2133
-40
No files matched your search
@@ -7,6 +7,41 @@ datasource db {
|
||||
url = env("DATABASE_URL_APP")
|
||||
}
|
||||
|
||||
model SubscriptionTier {
|
||||
subscription_tier_id Int @id @default(autoincrement())
|
||||
name String @db.VarChar(100)
|
||||
slug String @unique @db.VarChar(50)
|
||||
description String? @db.Text
|
||||
level Int @default(0)
|
||||
price_monthly Decimal? @db.Decimal(10, 2)
|
||||
price_yearly Decimal? @db.Decimal(10, 2)
|
||||
is_active Boolean @default(true)
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
users User[]
|
||||
features SubscriptionTierFeature[]
|
||||
|
||||
@@index([slug])
|
||||
@@index([level])
|
||||
@@map("subscription_tiers")
|
||||
}
|
||||
|
||||
model SubscriptionTierFeature {
|
||||
feature_id Int @id @default(autoincrement())
|
||||
subscription_tier_id Int
|
||||
feature_key String @db.VarChar(100)
|
||||
label String @db.VarChar(255)
|
||||
description String? @db.Text
|
||||
sort_order Int @default(0)
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
tier SubscriptionTier @relation(fields: [subscription_tier_id], references: [subscription_tier_id], onDelete: Cascade)
|
||||
|
||||
@@unique([subscription_tier_id, feature_key], map: "subscription_tier_features_unique")
|
||||
@@index([subscription_tier_id, sort_order], map: "subscription_tier_features_sort_idx")
|
||||
@@map("subscription_tier_features")
|
||||
}
|
||||
|
||||
model User {
|
||||
user_id Int @id @default(autoincrement())
|
||||
username String @unique @db.VarChar(50)
|
||||
@@ -35,10 +70,13 @@ model User {
|
||||
favorites UserFavorite[]
|
||||
telemetry_events TelemetryEvent[]
|
||||
purchaseIntentions PurchaseIntention[] @relation("BuyerIntentions")
|
||||
subscription_tier_id Int?
|
||||
subscription_tier SubscriptionTier? @relation(fields: [subscription_tier_id], references: [subscription_tier_id], onDelete: SetNull)
|
||||
|
||||
@@index([email])
|
||||
@@index([username])
|
||||
@@index([cpf])
|
||||
@@index([subscription_tier_id])
|
||||
@@map("users")
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user