diff --git a/backend/middleware/optional-auth.js b/backend/middleware/optional-auth.js new file mode 100644 index 0000000..79cf1b2 --- /dev/null +++ b/backend/middleware/optional-auth.js @@ -0,0 +1,19 @@ +const jwt = require('jsonwebtoken'); +const { JWT_SECRET } = require('./auth'); + +function optionalAuthenticateToken(req, res, next) { + const authHeader = req.headers['authorization']; + const token = authHeader && authHeader.split(' ')[1]; + + if (!token) { + req.user = null; + return next(); + } + + jwt.verify(token, JWT_SECRET, (err, user) => { + req.user = err ? null : user; + next(); + }); +} + +module.exports = { optionalAuthenticateToken };