ibrohm's picture
Initial deploy via assistant API
eb4179c verified
const express = require('express');
const router = express.Router();
const Settings = require('../models/Settings');
const authMiddleware = require('../middleware/auth');
// GET settings
router.get('/', async (req, res) => {
try {
let settings = await Settings.findOne({ key: 'global' });
if (!settings) {
settings = await Settings.create({ key: 'global' });
}
res.json(settings);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// PUT update settings (admin)
router.put('/', authMiddleware, async (req, res) => {
try {
const settings = await Settings.findOneAndUpdate(
{ key: 'global' },
req.body,
{ new: true, upsert: true }
);
res.json(settings);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
// POST admin login
router.post('/admin-login', async (req, res) => {
try {
const settings = await Settings.findOne({ key: 'global' });
const adminPass = settings ? settings.adminPassword : 'admin';
if (req.body.password === adminPass) {
// Issuing JWT token
const jwt = require('jsonwebtoken');
const secret = process.env.JWT_SECRET || 'fallback_secret_for_dev_only';
const token = jwt.sign(
{ role: 'admin' },
secret,
{ expiresIn: '7d' } // Token expires in 7 days
);
res.json({ success: true, token });
} else {
res.status(401).json({ success: false, message: 'Parol noto\'g\'ri' });
}
} catch (err) {
res.status(500).json({ error: err.message });
}
});
module.exports = router;