feat: add badges

This commit is contained in:
2026-02-04 17:59:26 -08:00
parent e20be5f4e8
commit 054a55ff9c
17 changed files with 451 additions and 4 deletions
+49 -1
View File
@@ -28,8 +28,56 @@ const authRoutes: FastifyPluginAsync = async (app) => {
const userData = await discordResponse.json();
// Check if user is in our Discord server and has special roles
let inDiscord = false;
let isVip = false;
let isMod = false;
let isStaff = false;
const guildId = process.env.DISCORD_GUILD_ID;
const sponsorRoleId = process.env.SPONSOR_ROLE_ID;
const modRoleId = process.env.MOD_ROLE_ID;
const staffRoleId = process.env.STAFF_ROLE_ID;
if (guildId) {
const guildsResponse = await fetch("https://discord.com/api/users/@me/guilds", {
headers: {
Authorization: `Bearer ${tokenResult.token.access_token}`,
},
});
if (guildsResponse.ok) {
const guilds = await guildsResponse.json() as Array<{ id: string }>;
inDiscord = guilds.some(guild => guild.id === guildId);
}
// If user is in Discord, check for special roles
if (inDiscord) {
const memberResponse = await fetch(
`https://discord.com/api/users/@me/guilds/${guildId}/member`,
{
headers: {
Authorization: `Bearer ${tokenResult.token.access_token}`,
},
}
);
if (memberResponse.ok) {
const memberData = await memberResponse.json() as { roles: string[] };
if (sponsorRoleId) {
isVip = memberData.roles.includes(sponsorRoleId);
}
if (modRoleId) {
isMod = memberData.roles.includes(modRoleId);
}
if (staffRoleId) {
isStaff = memberData.roles.includes(staffRoleId);
}
}
}
}
// Create or update user in database
const user = await authService.createOrUpdateUserFromDiscord(userData);
const user = await authService.createOrUpdateUserFromDiscord(userData, inDiscord, isVip, isMod, isStaff);
// Generate JWT
const jwt = await authService.generateToken(user);