Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --index.js
- /* GET home page. */
- router.get('/', ensureAuthenticated,function(req, res, next) {
- res.render('index', { title: 'Members' });
- });
- function ensureAuthenticated(req,res,next){
- if(req.isAuthenticated()){
- var uname;
- uname = req.user.name;
- module.exports.uname = uname;
- return next();
- }
- res.redirect('/users/login');
- }
- router.post('/saveland',
- ensureAuthenticated,
- function(req, res) {
- console.log('at saveland for ', req.user.name, 'saving', req.body.landname);
- User.getUserByUsername(req.user.name,function(err,user){
- if(err){
- console.log("some err", err);
- throw err;
- }
- if(!user){
- console.log('no user found');
- return;
- }
- User.appendFav(user, req.body.landname, function(err){
- if(err) {
- console.log('some other err', err);
- return;
- }
- console.log('successfully added', req.body.landname, 'to ', req.user.name);
- });
- });
- });
- module.exports = router;
- --users.js
- var express = require('express');
- var router = express.Router();
- var multer = require('multer');
- var upload = multer({dest: './uploads'});
- var passport = require('passport');
- var LocalStrategy = require('passport-local').Strategy;
- var User = require('../models/user');
- /* GET users listing. */
- router.get('/', function(req, res, next) {
- res.send('respond with a resource');
- });
- router.get('/register', function(req, res, next) {
- res.render('register',{title:'Register'});
- });
- router.get('/login', function(req, res, next) {
- res.render('login',{title:'Login'});
- });
- router.post('/login',
- passport.authenticate('local',{failureRedirect:'/users/login', failureFlash: 'Invalid username or password'}),
- function(req, res) {
- req.flash('success','You are now logged in', req.body.username);
- res.redirect('/');
- });
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- passport.deserializeUser(function(id, done) {
- User.getUserById(id, function(err, user) {
- done(err, user);
- });
- });
- passport.use(new LocalStrategy(function(username, password, done){
- User.getUserByUsername(username,function(err,user){
- if(err) throw err;
- if(!user){
- return done(null, false, {message: 'Unknown User' });
- }
- User.comparePassword(password, user.password, function(err, isMatch){
- if(err) return done(err);
- if(isMatch){
- return done(null, user);
- }else{
- return done(null, false, {message: 'invalid password'});
- }
- });
- });
- }));
- router.post('/register', upload.single('profileimage') , function(req, res, next) {
- //console.log(req.body.name);
- var name = req.body.name;
- var email = req.body.email;
- var username = req.body.username;
- var password = req.body.password;
- var password2 = req.body.password2;
- console.log(req.file);
- //form validator
- req.checkBody('name','Name field is required').notEmpty();
- req.checkBody('email','Email field is required').notEmpty();
- req.checkBody('email','Email field is not valid').isEmail();
- req.checkBody('username','Username field is required').notEmpty();
- req.checkBody('password','Password field is required').notEmpty();
- req.checkBody('password2','Passwords do not match').equals(req.body.password);
- //check errors
- var errors = req.validationErrors();
- console.log(errors);
- if(errors){
- //console.log('Errors');
- res.render('register',{
- errors: errors
- });
- }else{
- console.log('no errors');
- var newUser = new User({
- name: name,
- email: email,
- username: username,
- password: password,
- favlands: []
- //profileimage: profileimage
- });
- User.createUser(newUser, function(err, user){
- if(err) throw err;
- console.log(user);
- });
- req.flash('success', 'You are now registered and can login');
- res.location('/');
- res.redirect('/');
- }
- });
- router.get('/logout', function(req,res){
- req.logout();
- req.flash('success', 'You are now logged out');
- res.redirect('/users/login');
- })
- //this allows us to accesss it from a different file
- module.exports = router;
- //bcrypt hashes the password
- //passport handles the login
- //Jade is an template engine, primarily used for server-side templating in NodeJS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement