diff --git a/app.js b/app.js index 4e92152..def6ffb 100644 --- a/app.js +++ b/app.js @@ -224,14 +224,20 @@ app.post('/register', async (req, res) => { app.post('/login', async (req, res) => { const { username, password } = req.body; try { - const userResult = await pool.query('SELECT * FROM users WHERE username = $1', [username]); + const userResult = await pool.query("SELECT *, CASE WHEN admin_temp IS NOT NULL AND (now() - admin_temp) > interval '24 hours' THEN 'expired' ELSE 'valid' END AS admin_status FROM users WHERE username = $1", [ username]); + console.log(userResult.rows[0]); if (userResult.rows.length > 0) { const user = userResult.rows[0]; const match = await bcrypt.compare(password, user.password); if (match) { if (user.is_active) { req.session.userId = user.id; - req.session.role=user.role; + if (user.admin_status === 'expired') { + await pool.query('UPDATE users SET role = $1, admin_temp = $2 WHERE id = $3', ['user', NULL , userId]); + req.session.role='user'; + } else { + req.session.role=user.role; + } res.redirect('/training'); } else { res.redirect('/freischaltung') @@ -264,10 +270,17 @@ app.get('/logout', (req, res) => { }); // Benutzer freischalten (nur Admin) -app.post('/activate', requireAuth, requireAdmin, async (req, res) => { - const { userId } = req.body; +app.post('/userrights', requireAuth, requireAdmin, async (req, res) => { + const { userId, type } = req.body; try { + if (type === 'activate'){ await pool.query('UPDATE users SET is_active = TRUE WHERE id = $1', [userId]); + } else if (type === 'admin') { + await pool.query('UPDATE users SET role = $1 WHERE id = $2', ['admin', userId]); + } + else if (type === 'admint') { + await pool.query('UPDATE users SET role = $1, admin_temp = $2 WHERE id = $3', ['admin', moment().toDate() , userId]); + } res.redirect('/admin'); } catch (error) { console.error('Error activating user:', error); @@ -417,7 +430,7 @@ app.post('/update-leader', requireAuth , async (req, res) => { // Admin-Seite app.get('/admin', requireAuth, requireAdmin, async (req, res) => { - const usersResult = await pool.query('SELECT * FROM users WHERE is_active = FALSE'); + const usersResult = await pool.query('SELECT * FROM users'); res.render('admin', { users: usersResult.rows, session: req.session }); // Stelle sicher, dass es eine admin.ejs gibt }); diff --git a/views/admin.ejs b/views/admin.ejs index b681fa3..f9c5a6c 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -32,18 +32,52 @@