Skip to content

Commit 3a1c13c

Browse files
committed
Changed SSO routes
1 parent 11aef1d commit 3a1c13c

1 file changed

Lines changed: 34 additions & 62 deletions

File tree

server/src/auth/sso-helpers.ts

Lines changed: 34 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import { Rider } from '../models/rider';
2-
import { Admin } from '../models/admin';
3-
import { Driver } from '../models/driver';
1+
import { prisma } from '../db/prisma';
42

53
/**
64
* Extract NetID from Cornell email address
@@ -31,74 +29,48 @@ export async function findUserByNetID(
3129
const cornellEmail = `${netid}@cornell.edu`;
3230

3331
try {
34-
// If a specific userType is requested, only search that table (matching Google OAuth behavior)
35-
if (requestedUserType) {
36-
if (requestedUserType === 'Rider') {
37-
const riders = await Rider.scan('email').eq(cornellEmail).exec();
38-
if (riders.length > 0) {
39-
const rider = riders[0];
40-
// IMPORTANT: Check if Rider is active (same as Google OAuth)
41-
if (!rider.active) {
42-
return { error: 'User not active', userType: 'Rider' };
43-
}
44-
return { user: rider, userType: 'Rider' };
45-
}
46-
return null; // User not found in Riders table
47-
}
32+
if (requestedUserType === 'Rider') {
33+
const rider = await prisma.rider.findUnique({ where: { email: cornellEmail } });
34+
if (!rider) return null;
35+
if (!rider.active) return { error: 'User not active', userType: 'Rider' };
36+
return { user: rider, userType: 'Rider' };
37+
}
4838

49-
if (requestedUserType === 'Admin') {
50-
// Check Admins table first
51-
const admins = await Admin.scan('email').eq(cornellEmail).exec();
52-
if (admins.length > 0) {
53-
return { user: admins[0], userType: 'Admin' };
54-
}
39+
if (requestedUserType === 'Admin') {
40+
const admin = await prisma.admin.findUnique({ where: { email: cornellEmail } });
41+
if (admin) return { user: admin, userType: 'Admin' };
5542

56-
// Fallback: Check Drivers table for admin-flagged drivers (matches Google OAuth)
57-
const drivers = await Driver.scan('email').eq(cornellEmail).exec();
58-
if (drivers.length > 0) {
59-
const driver = drivers[0];
60-
if ((driver as any).admin) {
61-
return { user: driver, userType: 'Admin' };
62-
}
63-
}
64-
return null; // User not found as Admin
65-
}
43+
// Fallback: check drivers with admin flag
44+
const driver = await prisma.driver.findUnique({ where: { email: cornellEmail } });
45+
if (driver && (driver as any).admin) return { user: driver, userType: 'Admin' };
6646

67-
if (requestedUserType === 'Driver') {
68-
const drivers = await Driver.scan('email').eq(cornellEmail).exec();
69-
if (drivers.length > 0) {
70-
return { user: drivers[0], userType: 'Driver' };
71-
}
72-
return null; // User not found in Drivers table
73-
}
47+
return null;
7448
}
7549

76-
// No specific userType requested - search all tables (fallback behavior)
77-
// Check Riders first
78-
const riders = await Rider.scan('email').eq(cornellEmail).exec();
79-
if (riders.length > 0) {
80-
const rider = riders[0];
81-
// IMPORTANT: Check if Rider is active (same as Google OAuth)
82-
if (!rider.active) {
83-
return { error: 'User not active', userType: 'Rider' };
84-
}
85-
return { user: rider, userType: 'Rider' };
50+
if (requestedUserType === 'Driver') {
51+
const driver = await prisma.driver.findUnique({ where: { email: cornellEmail } });
52+
if (driver) return { user: driver, userType: 'Driver' };
53+
54+
// Fallback: check admin with isDriver flag
55+
const admin = await prisma.admin.findUnique({ where: { email: cornellEmail } });
56+
if (admin && (admin as any).isDriver) return { user: admin, userType: 'Driver' };
57+
58+
return null;
8659
}
8760

88-
// Check Admins
89-
const admins = await Admin.scan('email').eq(cornellEmail).exec();
90-
if (admins.length > 0) {
91-
return { user: admins[0], userType: 'Admin' };
61+
// No specific userType — search all tables
62+
const rider = await prisma.rider.findUnique({ where: { email: cornellEmail } });
63+
if (rider) {
64+
if (!rider.active) return { error: 'User not active', userType: 'Rider' };
65+
return { user: rider, userType: 'Rider' };
9266
}
9367

94-
// Check Drivers (for admin access, similar to Google OAuth fallback)
95-
const drivers = await Driver.scan('email').eq(cornellEmail).exec();
96-
if (drivers.length > 0) {
97-
const driver = drivers[0];
98-
// If driver has admin flag, treat as Admin (matches Google OAuth logic)
99-
if ((driver as any).admin) {
100-
return { user: driver, userType: 'Admin' };
101-
}
68+
const admin = await prisma.admin.findUnique({ where: { email: cornellEmail } });
69+
if (admin) return { user: admin, userType: 'Admin' };
70+
71+
const driver = await prisma.driver.findUnique({ where: { email: cornellEmail } });
72+
if (driver) {
73+
if ((driver as any).admin) return { user: driver, userType: 'Admin' };
10274
return { user: driver, userType: 'Driver' };
10375
}
10476

0 commit comments

Comments
 (0)