Answer the question
In order to leave comments, you need to log in
Node + express user authorization?
0
I started learning Node.js and started doing user authorization, but got stuck. Here is what I want to implement:
- the user logs in
- redirects him to the user's page - the user
's vacation data is displayed on the user's page
But I'm stuck on the last point. How can I pass req.session.user to get request or is there another way? Here is my code:
index.js
const express = require( 'express' );
const db = require( './db' );
const session = require('express-session')
const MongoStore = require('connect-mongo')(session)
const bodyParser = require( 'body-parser' );
const config = require( '../etc/config.json' );
const cors = require( 'cors' );
const controller = require( './controller/controller' );
const app = express();
app.use(session({
store: new MongoStore({ url: 'mongodb://localhost/employees' }),
secret: 'QwqYTDHJGDhGHGSDJghhsdghjGJHGdJH',
saveUninitialized: false,
resave: false
}));
app.use( bodyParser.json() );
app.use( express.static(__dirname) );
app.use( cors({ origin: '*'}) );
db.connect('mongodb://' + config.db.host + ':' + config.db.port + '/' + config.db.name , {
useNewUrlParser: true
}, function(err){
if(err) return console.log(err);
app.listen(config.serverPort, function(){
console.log("Сервер ожидает подключения...");
});
});
function loadUser(req, res, next) {
controller.checkUser(req.body)
.then(function(user){
if(user){
req.session.user = {id: user._id, name: user.login}
res.send(req.session.user)
}
})
.catch(function(error){
return next(error)
})
}
app.get("/", ( req, res ) => {
controller.vacationList().then( data => res.send(data) );
});
app.post("/", ( req, res ) => {
controller.vacationCreate(req.body).then( data => res.send(data) );
});
app.put('/:id', function (req, res){
controller.vacationChange(req.params.id, req.body).then( data => res.send(data) );
});
app.delete("/:id", ( req, res ) => {
controller.vacationDelete(req.params.id).then( data => res.send(data) );
});
app.post('/user', loadUser);
const User = require( '../models/User' );
const ObjectID = require( 'mongodb' ).ObjectID;
exports.vacationList = function(userData) {
console.log(userData)
return User.find();
};
exports.vacationCreate = function(data) {
const user = new User ({
login: data.login,
password: data.password,
});
return user.save();
};
exports.vacationDelete = function(id) {
return User.findById(id).remove();
};
exports.checkUser = function(userData) {
return User
.findOne({login: userData.login, password: userData.password})
}
Answer the question
In order to leave comments, you need to log in
Good day!
Apparently, you need to return some kind of html page back to the user, and pre-render what you need on this page.
To do this, you can use one of the many template engines.
res.render(viewName, {userData: req.session.user});
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question