Skip to content
This repository was archived by the owner on Apr 6, 2026. It is now read-only.

Commit f5d9c87

Browse files
committed
fix: re-encode the url of redirection to login
1 parent 468d958 commit f5d9c87

5 files changed

Lines changed: 49 additions & 18 deletions

File tree

src/classes/v3/Guild.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,17 @@ const guildSettings: Record<string, any> = {
2020
verification_dont_mp: {
2121
defaultValue: false,
2222
acceptedValues: [true, false],
23+
premium: true,
2324
},
2425
bot_status: {
2526
defaultValue: 'disabled',
2627
acceptedValues: ['disabled', 'guildMemberCount', 'playerCount', 'rotate'],
28+
premium: true,
29+
},
30+
verification_dont_join_support: {
31+
defaultValue: false,
32+
acceptedValues: [true, false],
33+
premium: true,
2734
},
2835
};
2936

@@ -182,6 +189,10 @@ export class Guild {
182189
throw new Error('Setting not found');
183190
}
184191

192+
if (guildSettings[setting].premium && !(await this.isPremium())) {
193+
throw new Error('Premium setting');
194+
}
195+
185196
if (
186197
!guildSettings.freeValues &&
187198
guildSettings[setting].acceptedValues &&

src/classes/v3/Server.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ const serverSettings: Record<string, any> = {
5050
defaultValue: true,
5151
acceptedValues: [true, false],
5252
},
53-
verification_dont_join_support: {
54-
defaultValue: false,
55-
acceptedValues: [true, false],
56-
},
5753
sync_chat_prevent_ping: {
5854
defaultValue: true,
5955
acceptedValues: [true, false],

src/controllers/v3/usersControllers.ts

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ import { badArgument, generateToken, todoControllers } from '../../utils/tools.j
1515
import { getVerificationGuildMessage } from '../../discord/utils/messages.js';
1616
import moment from 'moment';
1717
import { getUserDataGRPD } from '../../models/v3/gdrp.js';
18-
import { getMainClient } from '../../discord/index.js';
18+
import { getGuildClient, getMainClient } from '../../discord/index.js';
1919
import redis from '../../services/redis/index.js';
2020
import prisma from '../../services/prisma/index.js';
2121
import { NextFunction, Request, Response } from 'express';
2222
import { getLogsByServer, getTotalLogsByServer } from '../../database/gm_server_logs.js';
23+
import { Guild } from '../../classes/v3/Guild.js';
2324

2425
export async function getProfile(req: Request, res: Response) {
2526
const { steamID64, discordID } = req.query;
@@ -137,6 +138,9 @@ export async function oauthLogin(req: Request, res: Response) {
137138
});
138139
}
139140

141+
const guildIDMatch = typeof req.query.state === 'string' ? req.query.state.match(/guildID=([0-9]+)/) : null;
142+
const guildID = guildIDMatch ? guildIDMatch[1] : null;
143+
140144
discordUserToken.expirationDate = new Date(Date.now() + discordUserToken.expires_in * 1000);
141145
discordUserToken.creationDate = new Date();
142146

@@ -147,14 +151,30 @@ export async function oauthLogin(req: Request, res: Response) {
147151
});
148152
}
149153

150-
// I remove the auto join guild feature if uncomment also update perm here: getUserTokenFromCode
151-
await addUserToGuild(ConfigDiscord.guildID, discordUser.id, discordUserToken.access_token)
152-
.then(() => {
153-
console.log('User added to guild');
154-
})
155-
.catch((error) => {
156-
console.error(error);
157-
});
154+
let skipGuidJoin = false;
155+
156+
if (guildID) {
157+
const dscClient = await getGuildClient(guildID);
158+
if (!dscClient) return;
159+
160+
const dscGuild = dscClient.guilds.cache.get(guildID);
161+
if (!dscGuild) return;
162+
163+
const guild = new Guild(dscGuild);
164+
if (!guild) return;
165+
166+
skipGuidJoin = await guild.getSetting('verification_dont_join_support');
167+
}
168+
169+
if (!skipGuidJoin) {
170+
await addUserToGuild(ConfigDiscord.guildID, discordUser.id, discordUserToken.access_token)
171+
.then(() => {
172+
console.log('User added to guild');
173+
})
174+
.catch((error) => {
175+
console.error(error);
176+
});
177+
}
158178

159179
const userIP = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
160180
const userCountry = req.headers['cf-ipcountry'] || 'XX';
@@ -905,7 +925,7 @@ export async function createVerificationMessage(req: Request, res: Response) {
905925
}
906926

907927
// send msg
908-
const msg = await getVerificationGuildMessage(dscGuild.preferredLocale);
928+
const msg = await getVerificationGuildMessage(dscGuild.preferredLocale, dscGuild.id);
909929
const sentMsg = await channel.send(msg);
910930

911931
// save msg

src/discord/utils/buttons.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@ import { ButtonBuilder, ButtonStyle } from 'discord.js';
22
import { ConfigDiscord, ConfigServer } from '../../classes/config/Config.js';
33
import { getTranslate } from '../../utils/localizations.js';
44

5-
export async function ButtonVerificationWebsite(lang: string) {
5+
export async function ButtonVerificationWebsite(lang: string, guildID?: string) {
66
return new ButtonBuilder()
77
.setStyle(ButtonStyle.Link)
88
.setLabel(`⠀${await getTranslate('verify_yourself', lang)}`)
99
.setEmoji('🛡️')
10-
.setURL(ConfigDiscord.oauthPanel + '&state=redirect:/account?startVerification=true');
10+
.setURL(
11+
ConfigDiscord.oauthPanel +
12+
'&state=' +
13+
encodeURIComponent('redirect:/account?startVerification=true' + (guildID ? `&guildID=${guildID}` : '')),
14+
);
1115
}
1216

1317
export async function ButtonWebsite(lang: string) {

src/discord/utils/messages.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ export async function getVerifiedMessageAnswer(isVerified: boolean, lang: string
270270
}
271271
}
272272

273-
export async function getVerificationGuildMessage(lang: string) {
273+
export async function getVerificationGuildMessage(lang: string, guildID: string) {
274274
const embed = new EmbedBuilder()
275275
.setColor(ConfigDiscord.embedColor)
276276
.setTitle(await getTranslate('welcome_on_our_server', lang))
@@ -294,7 +294,7 @@ export async function getVerificationGuildMessage(lang: string) {
294294
);
295295

296296
const row = new ActionRowBuilder<ButtonBuilder>().addComponents(
297-
await ButtonVerificationWebsite(lang),
297+
await ButtonVerificationWebsite(lang, guildID),
298298
await ButtonVerify(lang),
299299
await ButtonDiscordSupport(lang),
300300
);

0 commit comments

Comments
 (0)