Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc3430aa2e | |||
| ff5371d867 | |||
| f3e35f3f6a | |||
| d7b099ac75 | |||
| a6b521a89c | |||
| ad4d28b5dd |
@@ -12,7 +12,7 @@ const pool = mariadb.createPool({
|
||||
connectionLimit: 5,
|
||||
connectTimeout: 10000, // give it more breathing room
|
||||
acquireTimeout: 15000,
|
||||
database: 'ranger_unit_tracker',
|
||||
database: process.env.DB_DATABASE,
|
||||
ssl: false,
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
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]
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,11 +118,24 @@ router.get('/callback', (req, res, next) => {
|
||||
router.get('/logout', [requireLogin], function (req, res, next) {
|
||||
req.logout(function (err) {
|
||||
if (err) { return next(err); }
|
||||
|
||||
req.session.destroy((err) => {
|
||||
if (err) { return next(err); }
|
||||
|
||||
res.clearCookie('connect.sid', {
|
||||
path: '/',
|
||||
domain: process.env.CLIENT_DOMAIN,
|
||||
httpOnly: true,
|
||||
sameSite: 'lax'
|
||||
});
|
||||
|
||||
var params = {
|
||||
client_id: process.env.AUTH_CLIENT_ID,
|
||||
returnTo: process.env.CLIENT_URL
|
||||
};
|
||||
res.redirect(process.env.AUTH_END_SESSION_URI + '?' + querystring.stringify(params));
|
||||
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ defineExpose({ forceReload })
|
||||
<DropdownMenuItem v-if="activeEvent.cancelled" @click="setCancel(false)">
|
||||
Un-Cancel
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="setCancel(true)">
|
||||
<DropdownMenuItem v-else @click="setCancel(true)" class="text-destructive">
|
||||
Cancel
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
|
||||
Reference in New Issue
Block a user