Compare commits
1 Commits
Role-Manag
...
Login-disc
| Author | SHA1 | Date | |
|---|---|---|---|
| ff5371d867 |
@@ -46,32 +46,35 @@ passport.use(new OpenIDConnectStrategy({
|
|||||||
|
|
||||||
//lookup existing user
|
//lookup existing user
|
||||||
const existing = await con.query(`SELECT id FROM members WHERE authentik_issuer = ? AND authentik_sub = ? LIMIT 1;`, [issuer, sub]);
|
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 member exists
|
||||||
if (existing.length > 0) {
|
if (existing.length > 0) {
|
||||||
memberId = existing[0].id;
|
memberId = existing[0].id;
|
||||||
} else {
|
} else {
|
||||||
//otherwise: create account
|
//otherwise: create account mode
|
||||||
const jwt = parseJwt(jwtClaims);
|
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
|
//check if account is available to claim
|
||||||
memberId = await mapDiscordtoID(discordID);
|
if (discordID)
|
||||||
|
memberId = await mapDiscordtoID(discordID);
|
||||||
|
|
||||||
if (memberId === null) {
|
if (discordID && memberId) {
|
||||||
// create new account
|
// 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 username = sub.username;
|
||||||
const result = await con.query(
|
const result = await con.query(
|
||||||
`INSERT INTO members (name, authentik_sub, authentik_issuer) VALUES (?, ?, ?)`,
|
`INSERT INTO members (name, authentik_sub, authentik_issuer) VALUES (?, ?, ?)`,
|
||||||
[username, sub, issuer]
|
[username, sub, issuer]
|
||||||
)
|
)
|
||||||
memberId = Number(result.insertId);
|
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]
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user