27 lines
730 B
JavaScript
27 lines
730 B
JavaScript
'use strict'
|
|
|
|
const jwt = require('jsonwebtoken')
|
|
|
|
const SUPER_SECRET = process.env.SUPER_ADMIN_JWT_SECRET || 'super-secret-change-in-production'
|
|
|
|
function signSuperToken(admin) {
|
|
return jwt.sign(
|
|
{ id: admin.id, email: admin.email, name: admin.name, role: 'superadmin' },
|
|
SUPER_SECRET,
|
|
{ expiresIn: '8h' }
|
|
)
|
|
}
|
|
|
|
function verifySuperToken(req, res, next) {
|
|
const token = req.cookies?.super_token || req.headers['x-super-token']
|
|
if (!token) return res.status(401).json({ error: 'Não autenticado' })
|
|
try {
|
|
req.superAdmin = jwt.verify(token, SUPER_SECRET)
|
|
next()
|
|
} catch {
|
|
res.status(401).json({ error: 'Token inválido ou expirado' })
|
|
}
|
|
}
|
|
|
|
module.exports = { signSuperToken, verifySuperToken }
|