feat( iam ): integrate IAM for auth — register, login, lazy provisioning

This commit is contained in:
Abubeker Yasin
2026-06-06 08:29:26 +03:00
parent 8a84441faf
commit d06debf1ca
10 changed files with 874 additions and 214 deletions

View File

@@ -0,0 +1,14 @@
-- AddColumn: iamUserId to Passenger (cross-schema reference to iam.users — no FK enforced)
ALTER TABLE "passenger"."Passenger" ADD COLUMN "iamUserId" TEXT;
-- Unique constraint: one IAM user maps to exactly one Passenger
ALTER TABLE "passenger"."Passenger" ADD CONSTRAINT "Passenger_iamUserId_key" UNIQUE ("iamUserId");
-- Index for fast lookup by iamUserId on every protected request
CREATE INDEX "Passenger_iamUserId_idx" ON "passenger"."Passenger"("iamUserId");
-- AddColumn: iamUserId to FaydaVerificationSession (no FK — cross-schema reference to iam.users)
ALTER TABLE "passenger"."FaydaVerificationSession" ADD COLUMN "iamUserId" TEXT;
-- Index for Fayda callback to resolve IAM user
CREATE INDEX "FaydaVerificationSession_iamUserId_idx" ON "passenger"."FaydaVerificationSession"("iamUserId");

View File

@@ -259,6 +259,7 @@ model Session {
model Passenger {
id String @id @default(uuid())
userId String @unique
iamUserId String? @unique
defaultTravelerProfileId String?
preferredLanguage String?
createdAt DateTime @default(now())
@@ -270,6 +271,7 @@ model Passenger {
travelerProfiles TravelerProfile[]
savedRoutes SavedRoute[]
@@index([userId])
@@index([iamUserId])
@@schema("passenger")
}
@@ -1285,11 +1287,13 @@ model FaydaVerificationSession {
completedAt DateTime?
userId String?
iamUserId String?
bookingId String?
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
@@index([iamUserId])
@@index([bookingId])
@@index([state])
@@index([expiresAt])