Reputation: 1
I need a way to use a global variable "res.locals.user = req.user || null;" to differentiate between an "admin" and an "employee" account, the resulting json at login gives the following fields:
{ _id: new ObjectId('66838f5bd6db20159e80f3ce'), name: 'Cameron', email: '[email protected]', password: '$2a$10$vke8qHo5u5T5zpZQRHcosO/hnsR4skEqAqPB3IrsnTf9/bEOdeNT2', usertype: 'employee', createdAt: 2024-07-02T05:25:47.595Z, updatedAt: 2024-07-02T05:25:47.595Z, __v: 0 }
I need to use the variable "usertype" to be able to use one navbar or another.
my Server.js
const express = require('express');
const exphbs = require('express-handlebars');
const path = require('path');
const morgan = require('morgan')
const flash = require('connect-flash')
const session = require('express-session')
const passport = require('passport')
// Initializations
const app = express();
require('./config/passport');
//Settings
app.set('port', process.env.PORT || 4000);
app.set('views', path.join(__dirname, 'views'));
app.engine('.hbs', exphbs.engine({
defaultLayout: 'main',
layoutsDir: path.join(app.get('views'), 'layouts'),
partialsDir: path.join(app.get('views'), 'partials'),
extname: '.hbs'
}));
app.set('view engine', '.hbs');
//Middlewares
app.use(morgan('dev'));
app.use(express.urlencoded({extended: false}));
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
//Global Variables
app.use((req, res, next) =>{
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
res.locals.user = req.user || null;
//res.locals.admin = req.user.usertype || null;
next();
});
//Routes
app.use(require('./routes/index_routes'));
app.use(require('./routes/vac_routes'));
app.use(require('./routes/users_routes'));
//Static Files
app.use(express.static(path.join(__dirname, 'public')));
module.exports = app;
my navigation.hbs
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">Vac App</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
{{#if user}}
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="/view"> name {{user}} <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/view">Vacation Days <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/dashboard">Dashboard <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/NewEmployee">Register <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/users/logout">Logout <span class="sr-only">(current)</span></a>
</li>
</ul>
{{else}}
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="/users/signup" class="nav-link">SignUp</a>
</li>
<li class="nav-item">
<a href="/users/signin" class="nav-link">SignIn</a>
</li>
</ul>
</div>
{{/if}}
</div>
</nav>
I need a way to my front end read my "user.usertype" information to know if it is an admin or not
Upvotes: 0
Views: 34