Urgent correction of version v1.0.0-beta.14 due to crash issues when acting on the CDN.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -34,9 +34,9 @@ passport.serializeUser((user, done) => {
|
||||
|
||||
passport.deserializeUser(async (id, done) => {
|
||||
const users = await getUserData();
|
||||
|
||||
|
||||
const user = users.find(u => u.name === id || u.name === `.${id}`);
|
||||
|
||||
|
||||
if (user) {
|
||||
return done(null, user);
|
||||
} else {
|
||||
|
||||
@@ -3,44 +3,94 @@ const DiscordStrategy = require('passport-discord').Strategy;
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const setupFilePath = path.join(__dirname, '../data', 'setup.json');
|
||||
const setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8'));
|
||||
const setupFilePath = path.join(__dirname, '../data', 'setup.json');
|
||||
|
||||
let setupData;
|
||||
try {
|
||||
setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8'));
|
||||
console.log('Setup data loaded:', setupData);
|
||||
} catch (err) {
|
||||
console.error('Error reading setup.json:', err);
|
||||
}
|
||||
|
||||
const callbackURL = `http://${setupData[0].domain}/auth/discord/callback`;
|
||||
console.log(`Callback URL: ${callbackURL}`);
|
||||
|
||||
passport.use(new DiscordStrategy({
|
||||
clientID: setupData[0].discord.clientID,
|
||||
clientSecret: setupData[0].discord.clientSecret,
|
||||
callbackURL: `http://${setupData[0].domain}/auth/discord/callback`
|
||||
}, (accessToken, refreshToken, profile, done) => {
|
||||
fs.readFile('user.json', 'utf8', (err, data) => {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
|
||||
const users = JSON.parse(data);
|
||||
const user = users.find(user => user.id === profile.id);
|
||||
clientID: setupData[0].discord.clientID,
|
||||
clientSecret: setupData[0].discord.clientSecret,
|
||||
callbackURL: callbackURL
|
||||
}, (accessToken, refreshToken, profile, done) => {
|
||||
console.log('Discord profile received:', profile);
|
||||
|
||||
if (setupData[0].discord.authorizedIDs.length > 0 && !setupData[0].discord.authorizedIDs.includes(profile.id)) {
|
||||
return done(null, false, { message: 'L\'utilisateur n\'est pas autorisé.' });
|
||||
}
|
||||
fs.readFile(path.join(__dirname, '../data', 'user.json'), 'utf8', (err, data) => {
|
||||
if (err) {
|
||||
console.error('Error reading user.json:', err);
|
||||
return done(err);
|
||||
}
|
||||
|
||||
done(null, user);
|
||||
let users;
|
||||
try {
|
||||
users = JSON.parse(data);
|
||||
} catch (parseErr) {
|
||||
console.error('Failed to parse user.json:', parseErr);
|
||||
return done(parseErr);
|
||||
}
|
||||
|
||||
let existingUser = users.find(user => user.id === profile.id);
|
||||
|
||||
if (existingUser) {
|
||||
console.log('Existing user found:', existingUser);
|
||||
return done(null, existingUser);
|
||||
}
|
||||
|
||||
const newUser = {
|
||||
id: profile.id,
|
||||
name: profile.username,
|
||||
role: "user"
|
||||
};
|
||||
|
||||
users.push(newUser);
|
||||
|
||||
fs.writeFile(path.join(__dirname, '../data', 'user.json'), JSON.stringify(users, null, 2), 'utf8', (err) => {
|
||||
if (err) {
|
||||
console.error('Error writing to user.json:', err);
|
||||
return done(err);
|
||||
}
|
||||
console.log('New user created:', newUser);
|
||||
done(null, newUser);
|
||||
});
|
||||
});
|
||||
}));
|
||||
|
||||
}));
|
||||
|
||||
passport.serializeUser((user, done) => {
|
||||
done(null, user);
|
||||
console.log('Serializing user:', user);
|
||||
done(null, user.id);
|
||||
});
|
||||
|
||||
passport.deserializeUser((id, done) => {
|
||||
fs.readFile('/data', 'user.json', 'utf8', (err, data) => {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
fs.readFile(path.join(__dirname, '../data', 'user.json'), 'utf8', (err, data) => {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
|
||||
const users = JSON.parse(data);
|
||||
const user = users.find(user => user.id === id);
|
||||
done(null, user);
|
||||
});
|
||||
let users;
|
||||
try {
|
||||
users = JSON.parse(data);
|
||||
} catch (parseErr) {
|
||||
console.error('Failed to parse user data:', parseErr);
|
||||
return done(parseErr);
|
||||
}
|
||||
|
||||
const user = users.find(user => user.id === id);
|
||||
|
||||
if (!user) {
|
||||
return done(null, false, { message: 'User not found.' });
|
||||
}
|
||||
|
||||
console.log('Deserializing user:', user);
|
||||
done(null, user);
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = passport;
|
||||
module.exports = passport;
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
const mysql = require('mysql2/promise');
|
||||
const pool = require('../config/database');
|
||||
|
||||
const userSchema = {
|
||||
username: {
|
||||
type: 'VARCHAR(255)',
|
||||
allowNull: false,
|
||||
unique: true
|
||||
},
|
||||
password: {
|
||||
type: 'VARCHAR(255)',
|
||||
allowNull: false
|
||||
},
|
||||
isAdmin: {
|
||||
type: 'BOOLEAN',
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
}
|
||||
};
|
||||
|
||||
async function createUser(username, password, isAdmin) {
|
||||
const connection = await pool.getConnection();
|
||||
try {
|
||||
const [rows] = await connection.execute(
|
||||
'INSERT INTO cdn (username, password, isAdmin) VALUES (?, ?, ?)',
|
||||
[username, password, isAdmin]
|
||||
);
|
||||
return rows.insertId;
|
||||
} finally {
|
||||
connection.release();
|
||||
}
|
||||
}
|
||||
|
||||
async function getUserByUsername(username) {
|
||||
const connection = await pool.getConnection();
|
||||
try {
|
||||
const [rows] = await connection.execute('SELECT * FROM users WHERE username = ?', [username]);
|
||||
return rows[0];
|
||||
} finally {
|
||||
connection.release();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createUser,
|
||||
getUserByUsername
|
||||
};
|
||||
Reference in New Issue
Block a user