diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index 9175393..4925da1 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -46,32 +46,35 @@ passport.use(new OpenIDConnectStrategy({ //lookup existing user const existing = await con.query(`SELECT id FROM members WHERE authentik_issuer = ? AND authentik_sub = ? LIMIT 1;`, [issuer, sub]); - let memberId: number; + let memberId: number | null = null; //if member exists if (existing.length > 0) { memberId = existing[0].id; } else { - //otherwise: create account + //otherwise: create account mode const jwt = parseJwt(jwtClaims); - const discordID = jwt.discord.id as number; + const discordID = jwt.discord?.id as number; //check if account is available to claim - memberId = await mapDiscordtoID(discordID); + if (discordID) + memberId = await mapDiscordtoID(discordID); - if (memberId === null) { - // create new account + if (discordID && memberId) { + // claim account + console.log("Claiming account"); + const result = await con.query( + `UPDATE members SET authentik_sub = ?, authentik_issuer = ? WHERE id = ?;`, + [sub, issuer, memberId] + ) + } else { + console.log("New Account"); + // new account const username = sub.username; const result = await con.query( `INSERT INTO members (name, authentik_sub, authentik_issuer) VALUES (?, ?, ?)`, [username, sub, issuer] ) memberId = Number(result.insertId); - } else { - // claim existing account - const result = await con.query( - `UPDATE members SET authentik_sub = ?, authentik_issuer = ? WHERE id = ?;`, - [sub, issuer, memberId] - ) } }