const fs = require('fs'); const path = require('path'); const { getUserData } = require('../Middlewares/watcherMiddleware'); const filePath = path.join(__dirname, '../user.json'); async function checkUserExistsAD(req, res, next) { let userData = getUserData(); if (!req.user || (!req.user.name && !req.user.id)) { return res.status(500).send('Internal Server Error'); } try { let users = userData; let existingUser; if (req.user.name) { existingUser = users.find(u => u.name === req.user.name); } else if (req.user.id) { existingUser = users.find(u => u.id === req.user.id); } if (!existingUser) { const id = Math.floor(Math.random() * 1e19); const newUser = { id: id.toString(), name: req.user.name || req.user.id, role: "user" }; users.push(newUser); try { await fs.promises.writeFile(filePath, JSON.stringify(users, null, 2), 'utf8'); } catch (error) { console.error(`Failed to write to ${filePath}: ${error}`); return next(error); } req.user = newUser; req.session.userId = newUser.id; } else { req.user = existingUser; req.session.userId = existingUser.id; res.render('AuthLogin', { isAuthenticated: true, setupData: {}, currentUrl: req.originalUrl, errorMessage: '' }); } return next(); } catch (error) { return next(error); } } module.exports = { checkUserExistsAD };