Update .gitignore and add new dependencies and routes
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-04-02 20:59:13 +02:00
parent aa75d50361
commit 8f3e604774
16 changed files with 823 additions and 187 deletions

View File

@@ -7,36 +7,44 @@ const { checkUserExistsDiscord } = require('../Middlewares/UserIDMiddlewareDisco
const path = require('path');
const { getUserData, getSetupData } = require('../Middlewares/watcherMiddleware');
let setupData = getSetupData();
let userData = getUserData();
let setupData;
let adStrategy;
if (setupData.ldap !== undefined) {
adStrategy = require('../models/Passport-ActiveDirectory');
}
let DiscordStrategy;
if (setupData.discord !== undefined) {
DiscordStrategy = require('../models/Passport-Discord');
}
getSetupData().then(data => {
setupData = data;
if (setupData[0].ldap !== undefined) {
adStrategy = require('../models/Passport-ActiveDirectory');
adStrategy.name = 'active-directory';
passport.use(adStrategy);
} else {
console.log('LDAP data is not defined in setup data');
}
if (setupData[0].discord !== undefined) {
const DiscordStrategy = require('../models/Passport-Discord');
}
});
let user = userData;
if (user.identifyURL) {
app.get("/auth/discord", (req, res) => {
res.redirect(user.identifyURL);
});
} else {
}
router.use(passport.initialize());
router.use(passport.session());
router.get('/login', function(req, res) {
const setupFilePath = path.join('setup.json');
const setupFilePath = path.join('data', 'setup.json');
const setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8'));
res.render('AuthLogin', { setupData, isAuthenticated: false, errorMessage: '', showActiveDirectoryForm: true, currentUrl: req.originalUrl });
const showActiveDirectoryForm = setupData.ldap && setupData.ldap.enabled === 'on';
res.render('AuthLogin', { setupData, isAuthenticated: false, errorMessage: '', showActiveDirectoryForm, currentUrl: req.originalUrl });
});
passport.deserializeUser((user, done) => {
done(null, user);
});
@@ -55,9 +63,11 @@ var opts = { failWithError: true }
router.post('/activedirectory', (req, res, next) => {
passport.authenticate('ActiveDirectory', (err, user) => {
if (err) {
console.log('Authentication error:', err); // Debug log
return res.render('AuthLogin', { isAuthenticated: false, errorMessage: err.message, setupData: {}, showActiveDirectoryForm: true, currentUrl: req.originalUrl });
}
if (!user) {
console.log('User not authorized'); // Debug log
return res.render('AuthLogin', { isAuthenticated: false, errorMessage: 'L\'utilisateur n\'est pas autorisé.', setupData: {}, showActiveDirectoryForm: true, currentUrl: req.originalUrl });
}
req.user = {
@@ -65,8 +75,16 @@ router.post('/activedirectory', (req, res, next) => {
name: user._json.sAMAccountName,
id: user._json.sAMAccountName,
};
console.log('User object:', req.user); // Debug log
req.logIn(req.user, function(err) {
if (err) { return next(err); }
if (err) {
console.log('Login error:', err); // Debug log
return next(err);
}
console.log('User logged in successfully'); // Debug log
req.session.user = req.user;
return next();
});
})(req, res, next);

View File

@@ -6,7 +6,7 @@ const fileUpload = require('express-fileupload');
const authMiddleware = require('../Middlewares/authMiddleware');
const { loggers } = require('winston');
const ncp = require('ncp').ncp;
const configFile = fs.readFileSync('setup.json');
const configFile = fs.readFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8')
const config = JSON.parse(configFile);
const bodyParser = require('body-parser');
const crypto = require('crypto');
@@ -42,8 +42,10 @@ router.get('/dashboard', authMiddleware, async (req, res) => {
let fileInfoNames = [];
try {
const fileInfo = JSON.parse(fs.readFileSync('file_info.json', 'utf8'));
const fileInfo = JSON.parse(fs.readFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8'))
fileInfoNames = fileInfo.map(file => file.fileName);
fileInfo.map(/* ... */);
} catch (err) {
console.error('Error reading file_info.json:', err);
}
@@ -88,8 +90,20 @@ router.get('/dashboard/folder/:folderName', authMiddleware, async (req, res) =>
const domain = config.domain || 'mydomain.com';
const currentFolderName = folderName || '';
const data = await fs.promises.readFile('user.json', 'utf8');
const users = JSON.parse(data);
const data = await fs.readFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8')
let users;
try {
users = JSON.parse(data);
} catch (error) {
console.error('Error parsing setup.json:', error);
users = [];
}
if (!Array.isArray(users)) {
console.error('Error: users is not an array. Check the contents of setup.json');
users = [];
}
const user = users.find(user => user.name === userId);
if (!user) {
@@ -98,8 +112,20 @@ router.get('/dashboard/folder/:folderName', authMiddleware, async (req, res) =>
const userRealId = user.id;
const fileInfoData = await fs.promises.readFile('file_info.json', 'utf8');
const fileInfo = JSON.parse(fileInfoData);
const fileInfoData = await fs.readFileSync(path.join(__dirname, '../data', 'file_info.json'), 'utf-8')
let fileInfo;
try {
fileInfo = JSON.parse(fileInfoData);
} catch (error) {
console.error('Error parsing file_info.json:', error);
fileInfo = [];
}
// Check if fileInfo is an array
if (!Array.isArray(fileInfo)) {
console.error('Error: fileInfo is not an array. Check the contents of file_info.json');
fileInfo = []; // Default to an empty array to prevent further errors
}
const fileInfoNames = fileInfo.map(file => file.fileName);
@@ -219,7 +245,7 @@ router.post('/dashboard/rename', authMiddleware, async (req, res) => {
try {
await fs.promises.rename(currentPath, newPath);
const data = await fs.promises.readFile('file_info.json', 'utf8');
const data = await fs.promise.readFileSync(path.join(__dirname, '../data', 'file_info.json'), 'utf-8')
let fileInfo = JSON.parse(data);
let found = false;
@@ -232,7 +258,7 @@ router.post('/dashboard/rename', authMiddleware, async (req, res) => {
}
if (found) {
await fs.promises.writeFile('file_info.json', JSON.stringify(fileInfo, null, 2), 'utf8');
await fs.promises.writeFile(path.join(__dirname, '../data', 'file_info.json'), JSON.stringify(fileInfo, null, 2), 'utf8');
}
res.status(200).send('L\'opération a été effectuée avec succès.');
@@ -257,7 +283,7 @@ router.post('/dashboard/rename/:filePath*', authMiddleware, async (req, res) =>
try {
await fs.promises.rename(currentPath, newPath);
const data = await fs.promises.readFile('file_info.json', 'utf8');
const data = await fs.promises.readFile(path.join(__dirname, '../data', 'file_info.json'), 'utf8');
let fileInfo = JSON.parse(data);
let found = false;
@@ -270,7 +296,7 @@ router.post('/dashboard/rename/:filePath*', authMiddleware, async (req, res) =>
}
if (found) {
await fs.promises.writeFile('file_info.json', JSON.stringify(fileInfo, null, 2), 'utf8');
await fs.promises.writeFile(path.join(__dirname, '../data', 'file_info.json'), JSON.stringify(fileInfo, null, 2), 'utf8');
}
res.status(200).send('L\'opération a été effectuée avec succès.');
@@ -338,7 +364,7 @@ router.post('/dashboard/movefile', authMiddleware, async (req, res) => {
const fileName = req.body.fileName;
const folderName = req.body.folderName;
const data = await fs.promises.readFile('user.json', 'utf8');
const data = await fs.readFileSync(path.join(__dirname, '../data', 'user.json.json'), 'utf-8')
const users = JSON.parse(data);
const user = users.find(user => user.id === req.user.id);
@@ -526,12 +552,12 @@ router.post('/upload', authMiddleware, async (req, res) => {
if (expiryDate || password) {
let data = [];
if (fs.existsSync('file_info.json')) {
const existingData = await fs.promises.readFile('file_info.json', 'utf8');
if (fs.existsSync(path.join(__dirname, '../data', 'file_info.json'))) {
const existingData = await fs.promises.readFile(path.join(__dirname, '../data', 'file_info.json'), 'utf8');
data = JSON.parse(existingData);
}
data.push(fileInfo);
await fs.promises.writeFile('file_info.json', JSON.stringify(data, null, 2));
await fs.promises.writeFile(path.join(__dirname, '../data', 'file_info.json'), JSON.stringify(data, null, 2));
}
res.redirect('/dpanel/dashboard');
@@ -542,8 +568,8 @@ router.post('/upload', authMiddleware, async (req, res) => {
}
});
const User = require('../user.json');
const setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../setup.json'), 'utf8'));
const User = require('../data/user.json');
const setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8'));
router.get('/dashboard/admin', authMiddleware, async (req, res) => {
try {
@@ -560,7 +586,7 @@ router.get('/dashboard/admin/users', authMiddleware, async (req, res) => {
let currentPage = Number(req.query.page) || 1;
let limit = Number(req.query.limit) || 10;
let rawdata = fs.readFileSync(path.join(__dirname, '../user.json'));
let rawdata = fs.readFileSync(path.join(__dirname, '../data/user.json'));
let users = JSON.parse(rawdata);
let totalUsers = users.length;
@@ -591,7 +617,7 @@ const osUtils = require('os-utils');
const Convert = require('ansi-to-html');
const convert = new Convert();
router.get('/dashboard/admin/stats&logs', authMiddleware, async (req, res) => {
router.get('/dashboard/admin/stats-logs', authMiddleware, async (req, res) => {
try {
const uptime = os.uptime();
const memoryUsage = process.memoryUsage().heapUsed / 1024 / 1024;
@@ -626,7 +652,7 @@ router.get('/dashboard/admin/stats&logs', authMiddleware, async (req, res) => {
}
});
router.get('/dashboard/admin/Privacy&Security', authMiddleware, async (req, res) => {
router.get('/dashboard/admin/Privacy-Security', authMiddleware, async (req, res) => {
try {
const files = await fs.promises.readdir('./report');
const reports = files.filter(file => file.endsWith('.json')).map(file => {
@@ -658,7 +684,7 @@ router.post('/dashboard/update-role', authMiddleware, async (req, res) => {
user.role = role;
}
fs.writeFileSync(path.join(__dirname, '../user.json'), JSON.stringify(User, null, 2));
fs.writeFileSync(path.join(__dirname, '../data/user.json'), JSON.stringify(User, null, 2));
res.redirect('/dpanel/dashboard/admin');
} catch (err) {
@@ -669,7 +695,7 @@ router.post('/dashboard/update-role', authMiddleware, async (req, res) => {
router.post('/dashboard/update-setup', authMiddleware, async (req, res) => {
try {
let setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../setup.json')));
let setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8'));
if (!req.body.ldap || !req.body.ldap.enabled) {
delete setup.ldap;
@@ -686,7 +712,7 @@ router.post('/dashboard/update-setup', authMiddleware, async (req, res) => {
setup.domain = req.body.domain;
setup.uptime = req.body.uptime;
fs.writeFileSync(path.join(__dirname, '../setup.json'), JSON.stringify(setup, null, 2));
fs.writeFileSync(path.join(__dirname, '../data', 'setup.json'), 'utf-8'), JSON.stringify(setup, null, 2);
res.redirect('/dpanel/dashboard/admin');
} catch (err) {

View File

@@ -71,7 +71,7 @@ router.get('/translateAll', async (req, res) => {
});
router.get('/setup', (req, res) => {
fs.readFile(path.join(__dirname, '../setup.json'), 'utf8', (err, data) => {
fs.readFile(path.join(__dirname, '../data/setup.json'), 'utf8', (err, data) => {
if (err) {
ErrorLogger.error('Error reading setup.json:', err);
return res.status(500).json({ success: false, message: 'Error reading setup.json.' });
@@ -101,7 +101,7 @@ router.post('/setup/save', (req, res) => {
setupData.discord = req.body.discord;
}
fs.writeFile(path.join(__dirname, '../setup.json'), JSON.stringify(setupData, null, 2), (err) => {
fs.writeFile(path.join(__dirname, '../data/setup.json'), JSON.stringify(setupData, null, 2), (err) => {
if (err) {
ErrorLogger.error('Error writing to setup.json:', err);
return res.status(500).json({ success: false, message: 'Error writing to setup.json.' });