Auto-create user on signin
This commit is contained in:
parent
31d2c5a29f
commit
35895d226f
1 changed files with 21 additions and 4 deletions
|
|
@ -11,8 +11,8 @@ export async function POST(request: Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Find user - use parameterized query
|
// Find or create user
|
||||||
const users = await sql`
|
let users = await sql`
|
||||||
SELECT u.id, u.email, fm.family_id as family_id
|
SELECT u.id, u.email, fm.family_id as family_id
|
||||||
FROM users u
|
FROM users u
|
||||||
LEFT JOIN family_members fm ON fm.user_id = u.id
|
LEFT JOIN family_members fm ON fm.user_id = u.id
|
||||||
|
|
@ -20,10 +20,27 @@ export async function POST(request: Request) {
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const user = users?.[0];
|
let user = users?.[0];
|
||||||
|
|
||||||
|
// Create user if not found
|
||||||
|
if (!user) {
|
||||||
|
const newUserId = crypto.randomUUID();
|
||||||
|
await sql`
|
||||||
|
INSERT INTO users (id, email, created_at, updated_at)
|
||||||
|
VALUES (${newUserId}, ${email}, NOW(), NOW())
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Fetch the newly created user
|
||||||
|
users = await sql`
|
||||||
|
SELECT u.id, u.email
|
||||||
|
FROM users u
|
||||||
|
WHERE u.id = ${newUserId}
|
||||||
|
`;
|
||||||
|
user = users?.[0];
|
||||||
|
}
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return NextResponse.json({ error: "User not found" }, { status: 404 });
|
return NextResponse.json({ error: "Failed to create user" }, { status: 500 });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create session token
|
// Create session token
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue