Files
QAPI/nodejs/commande/getPerm.js
2026-05-16 23:42:06 +02:00

48 lines
1.5 KiB
JavaScript

const fs = require('fs');
module.exports = function (app, checkApiKey) {
app.get('/action/getperm', checkApiKey, (req, res) => {
const authzFilePath = '/etc/apache2/dav_svn.authz';
// Récupérer le nom du repo depuis la query string ou le body
const repoName = req.query.repo || req.body.repo;
console.log("Nom du repo reçu :", repoName); // DEBUG
if (!repoName) {
return res.status(400).json({ error: "Missing repo parameter" });
}
try {
const fileContent = fs.readFileSync(authzFilePath, 'utf8');
const repoSection = fileContent.split(`[/${repoName}]`)[1];
if (!repoSection) {
return res.json({
users: [],
permissions: [],
count: 0
});
}
const lines = repoSection.split('\n')
.filter(line => line.includes('=') && !line.includes('['));
const users = lines.map(line => line.split('=')[0].trim());
const permissions = lines.map(line => line.split('=')[1].trim());
res.json({
users: users,
permissions: permissions,
count: users.length
});
} catch (error) {
res.status(500).json({
error: "Error reading repository permissions",
details: error.message
});
}
});
};