Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mongoose = require('mongoose');
- var bcrypt = require('bcrypt');
- var userSchema = new mongoose.Schema({
- local: {
- username: String,
- password: String
- }
- });
- userSchema.methods.generateHash = function(password) {
- return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
- };
- userSchema.methods.validPassword = function(password) {
- return bcrypt.compareSync(password, this.local.password);
- };
- module.exports = mongoose.model('User', userSchema);
- var express = require('express');
- var mongoose = require('mongoose');
- var passport = require('passport');
- var bodyParser = require('body-parser');
- var cookieParser = require('cookie-parser');
- var app = express();
- var User = require('./models/user.js');
- app.use(cookieParser());
- app.use(bodyParser());
- // Database
- mongoose.connect('mongodb://localhost', function(err) {
- if (err) throw err;
- console.log('Successfully connected to the database!');
- });
- // Passport
- app.use(passport.initialize());
- app.use(passport.session());
- var localStrategy = require('passport-local').Strategy;
- passport.use('local-signup', new localStrategy({
- passReqToCallback: true
- },
- function(req, username, password, done) {
- process.nextTick(function() {
- User.findOne({'local.username' : username }, function(err, user) {
- if (err)
- console.log('error');
- return done(error);
- if (user) {
- console.log('User exists');
- return done(null, false);
- }
- else {
- var newUser = new User();
- newUser.local.username = username;
- newUser.local.password = newUser.generateHash(password);
- newUser.save(function(err, data) {
- if (err) throw err;
- console.log(data);
- return done(null, newUser);
- });
- }
- });
- });
- }
- ));
- // Routes
- app.post('/signup', passport.authenticate('local-signup',
- {
- successRedirect: '/',
- failureRedirect: '/signup'
- }
- ));
- // Server listens
- var port = process.env.PORT || 3000;
- app.listen(port, function() {
- console.log("Listen to port " + port);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement