This example shows a simple Express app with role-based access control. It pretends the user is logged in as an admin. The '/admin' route lets the admin in, but the '/user' route denies access because the role doesn't match.
import express from 'express';
const app = express();
// Simulate logged-in user
app.use((req, res, next) => {
req.user = { name: 'Alice', role: 'admin' };
next();
});
function checkRole(role) {
return (req, res, next) => {
if (req.user && req.user.role === role) {
next();
} else {
res.status(403).send('Access denied');
}
};
}
app.get('/admin', checkRole('admin'), (req, res) => {
res.send('Welcome Admin');
});
app.get('/user', checkRole('user'), (req, res) => {
res.send('Welcome User');
});
// Start server
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});