Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @author Alexi Jamal
- */
- //const app = require('express')();
- //Packages requires
- const express = require('express');
- const bodyPar = require('body-parser');
- const session = require('express-session');
- const cms = require('connect-mongodb-session');
- const mongoose = require('mongoose');
- const routerActions = require('./routes/router');
- //Creating packages objects
- const app = express();
- const mongoStore = cms(session);
- const urlEncodedBodyParser = bodyPar.urlencoded({ extended: false });
- mongoose.set('useNewUrlParser', true);
- mongoose.set('useCreateIndex', true);
- mongoose.set('useFindAndModify', false);
- DATABASE_NAME = "midterm"
- mongoose.connect(`mongodb://localhost:27017/${DATABASE_NAME}`);
- const mongoConnection = mongoose.connection;
- module.exports = mongoConnection
- app.use(session({
- secret: 'testing',
- cookie: {
- maxAge: 1000 * 60 * 60 * 24 * 7
- },
- resave: true,
- saveUninitialized: false,
- store: new mongoStore({
- uri: `mongodb://localhost:27017/${DATABASE_NAME}`,
- collection: 'sessions'
- })
- }));
- app.use("/", express.static("public"));
- app.use('/user', routerActions);
- const showProfile = async (req, res) => {
- const user = await User.findById(req.session.userId);
- if (user === null) {
- res.status(403).send('Forbidden');
- return;
- }
- var html = "Welcome " + user.name + " to your profile!!\nClick <a href='logout'>here</a> to logout."
- res.status(200).send(html);
- return;
- }
- const logout = async (req, res) => {
- if (req.session) await req.session.destroy();
- res.redirect('/');
- return;
- }
- const register = (req, res) => {
- if (req.body.username && req.body.password && req.body.name) {
- (async () => {
- const password = await bcrypt.hash(req.body.password, 10);
- const user = new User({
- _id: mongoose.Types.ObjectId(),
- name: req.body.name,
- username: req.body.username,
- password: password
- });
- await user.validate();
- await user.save();
- req.session.userId = user._id;
- res.redirect('/profile');
- return;
- })().catch((error) => { res.status(400).send('Bad request.'); });
- }
- else { res.status(400).send('Bad request.'); }
- }
- const login = (req, res) => {
- if (req.body.username && req.body.password) {
- console.log(req.body.username)
- User.authenticate(req.body.username, req.body.password).then((user) => {
- if (user !== null) {
- req.session.userId = user._id;
- res.redirect('/profile');
- return;
- }
- else { res.status(401).send('Login failed.'); }
- });
- }
- else { res.status(401).send('Login failed.'); }
- return;
- }
- app.post('/register', urlEncodedBodyParser, [register]);
- app.post('/login', urlEncodedBodyParser, [login]);
- app.get('/profile', [showProfile]);
- app.get('/logout', [logout]);
- let port = process.env.PORT || 3000;
- app.listen(port, () => {
- console.log("Listening on port "+port);
- })
Add Comment
Please, Sign In to add comment