From 279d3abdd8c038e0d8588becd798c43a83806382 Mon Sep 17 00:00:00 2001 From: Harxhit Date: Wed, 3 Jun 2026 13:36:47 +0530 Subject: [PATCH 1/2] refactor(auth): restructure user schema for enhanced authentication --- apps/backend/prisma/schema.prisma | 49 ++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/apps/backend/prisma/schema.prisma b/apps/backend/prisma/schema.prisma index 2845802..190f823 100644 --- a/apps/backend/prisma/schema.prisma +++ b/apps/backend/prisma/schema.prisma @@ -18,25 +18,60 @@ model User { company String? avatarUrl String? @map("avatar_url") accentColor String @default("#6366f1") @map("accent_color") - provider String - providerId String @map("provider_id") + emailVerified Boolean @default(false) @map("email_verified") + phoneNumber String? @unique @map("phone_number") + lastSignInAt DateTime? @map("last_sign_in_at") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") + isActive Boolean @default(false) + identities UserIdentity[] + refreshTokens RefreshToken[] platformLinks PlatformLink[] cards Card[] oauthTokens OAuthToken[] ownedViews CardView[] @relation("cardOwner") viewedCards CardView[] @relation("cardViewer") followLogs FollowLog[] - organizer Event[] - attendedEvents EventAttendee[] + organizer Event[] + attendedEvents EventAttendee[] + ownedTeams Team[] @relation("TeamOwner") + teamMemberships TeamMember[] @relation("TeamMember") - ownedTeams Team[] @relation("TeamOwner") - teamMemberships TeamMember[] @relation("TeamMember") + @@map("users") +} + +model UserIdentity { + id String @id @default(uuid()) + userId String @map("user_id") + provider String // "google.com" | "apple.com" | "firebase" | "phone" + providerId String @map("provider_id") // Google sub / Apple sub / Firebase UID + createdAt DateTime @default(now()) @map("created_at") + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerId]) - @@map("users") + @@index([userId]) + @@map("user_identities") +} + + +model RefreshToken { + id String @id @default(uuid()) + userId String @map("user_id") + tokenHash String @unique @map("token_hash") //SHA-256 hash + family String // token rotation + expiresAt DateTime @map("expires_at") + revokedAt DateTime? @map("revoked_at") // null = still valid + createdAt DateTime @default(now()) @map("created_at") + userAgent String? @map("user_agent") + ip String? + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId]) + @@index([family]) + @@map("refresh_tokens") } model PlatformLink { From e659f1d2a454f3d1ac3c4e3c46e9e53d5ac9052e Mon Sep 17 00:00:00 2001 From: Harxhit Date: Wed, 3 Jun 2026 13:40:08 +0530 Subject: [PATCH 2/2] fix: Added inline comment --- apps/backend/prisma/schema.prisma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/backend/prisma/schema.prisma b/apps/backend/prisma/schema.prisma index 190f823..48d4a03 100644 --- a/apps/backend/prisma/schema.prisma +++ b/apps/backend/prisma/schema.prisma @@ -65,7 +65,7 @@ model RefreshToken { revokedAt DateTime? @map("revoked_at") // null = still valid createdAt DateTime @default(now()) @map("created_at") userAgent String? @map("user_agent") - ip String? + ip String? //hash user User @relation(fields: [userId], references: [id], onDelete: Cascade)