Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==============================
- // START DEPENDENCIES
- // ==============================
- var express = require("express"),
- expressSession = require("express-session"),
- bodyParser = require("body-parser"),
- cookieParser = require("cookie-parser"),
- mongoose = require("mongoose"),
- passport = require("passport"),
- LocalStrategy = require("passport-local"),
- bcrypt = require('bcrypt-nodejs'),
- morgan = require("morgan"),
- flash = require("connect-flash"),
- app = express();
- // ==============================
- // END DEPENDENCIES
- // ==============================
- // ==============================
- // START CONFIG
- // ==============================
- app.set("view engine", "ejs");
- app.use(express.static("public"));
- app.use(morgan("dev"));
- app.use(flash());
- app.use(bodyParser.urlencoded({extended: true}));
- app.use(cookieParser());
- app.use(expressSession({
- secret: "2a69sj4hJos",
- resave: false,
- saveUninitialized: false
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- // ==============================
- // END CONFIG
- // ==============================
- // ==============================
- // START MONGOOSE
- // ==============================
- mongoose.Promise = global.Promise;
- mongoose.connect("mongodb://root:codingscript27@ds145677.mlab.com:45677/authtesting");
- var userSchema = new mongoose.Schema({
- 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.password);
- }
- var User = mongoose.model("User", userSchema);
- // ==============================
- // END MONGOOSE
- // ==============================
- // ==============================
- // START PASSPORT
- // ==============================
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- passport.deserializeUser(function(id, done) {
- User.findById(id, function(err, user) {
- done(err, user);
- });
- });
- passport.use("local-signup", new LocalStrategy({passReqToCallback: true}, function(req, username, password, done) {
- User.findOne({username: username}, function(err, user) {
- if(err) return done(err);
- if(user) {
- return done(null, false, req.flash("registerMessage", "That username already exists!"));
- } else {
- var newUser = new User();
- newUser.username = username;
- newUser.password = newUser.generateHash(password);
- newUser.save(function(err) {
- if(err) throw err;
- return done(null, newUser);
- });
- }
- });
- }));
- passport.use("local-login", new LocalStrategy({passReqToCallback: true}, function(req, username, password, done) {
- User.findOne({username: username}, function(err, user) {
- if(err) return done(err);
- if(!user) return done(null, false, req.flash("loginMessage", "There are no users with that username!"));
- if(!user.validPassword(password)) return done(null, false, req.flash("loginMessage", "Incorrect password!"));
- return done(null, user);
- });
- }));
- function isLoggedIn(req, res, next) {
- if(req.isAuthenticated()) {
- next();
- } else {
- res.redirect("/");
- }
- }
- // ==============================
- // END PASSPORT
- // ==============================
- // ==============================
- // START ROUTES
- // ==============================
- app.get("/", function(req, res) {
- res.render("home");
- });
- app.get("/register", function(req, res) {
- res.render("register", {message: req.flash("registerMessage")});
- });
- app.post("/register", passport.authenticate("local-signup", {
- successRedirect: "/profile",
- failureRedirect: "/register",
- failureFlash: true
- }));
- app.get("/login", function(req, res) {
- res.render("login", {message: req.flash("loginMessage")});
- });
- app.post("/login", passport.authenticate("local-login", {
- successRedirect: "/profile",
- failureRedirect: "/login",
- failureFlash: true
- }));
- app.get("/profile", isLoggedIn, function(req, res) {
- res.render("profile", {user: req.user});
- });
- app.get("/logout", function(req, res) {
- req.logout();
- res.redirect("/login");
- });
- app.get("*", function(req, res) {
- res.send("Page Not Found (404 Error)");
- });
- // ==============================
- // END ROUTES
- // ==============================
- app.listen(process.env.PORT, process.env.IP, function() {
- console.log("Server running...");
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement