generated from nhcarrigan/template
feat: add badges
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user