Spaces:
Sleeping
Sleeping
| 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; | |