Created
March 5, 2016 02:02
-
-
Save cacheflow/84f738192066ca5e63f4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var passport = require('passport'); | |
var router = express.Router(); | |
var multer = require('multer'); | |
var upload = multer({dest: './images/'}) | |
// required models | |
var User = require('../models/User'); | |
var Photo = require('../models/Photo'); | |
var db = require('../models/db'); | |
// required controllers | |
var SessionsController = require('../controllers/Sessions'); | |
var UsersController = require('../controllers/Users'); | |
var PhotosController = require('../controllers/Photos'); | |
// adding a root route | |
router.get('/', function (req, res) { | |
res.render('index', {user: req.user}); | |
}); | |
// middleware to make sure a user is logged in | |
var isLoggedIn = function (req, res, next) { | |
// if user is authenticated in the session, carry on | |
if (req.isAuthenticated()) { | |
return next(); | |
// if they aren't redirect them to the login page | |
} | |
res.redirect('/login'); | |
}; | |
// renders sessions controller | |
router.get('/login', SessionsController.sessionsNew); | |
router.post('/login', passport.authenticate( | |
'local', | |
{ | |
failureRedirect: '/login' | |
}), SessionsController.sessionsCreate); | |
router.get('/logout', SessionsController.sessionsDelete); | |
// render photos controller | |
router.get('/photos', isLoggedIn, PhotosController.renderPhotosIndex); | |
router.get('/photos/new', isLoggedIn, PhotosController.renderPhotosNew); | |
router.post('/photos', isLoggedIn, PhotosController.renderPhotosCreate); | |
router.post('/photos/upload', isLoggedIn, PhotosController.callMe); | |
router.get('/photos/:id/edit', isLoggedIn, PhotosController.renderPhotosEdit); | |
router.put('/photos/:id', isLoggedIn, PhotosController.renderPhotosUpdate); | |
router.get('/photos/:id', isLoggedIn, PhotosController.renderPhotosShow); | |
router.delete('/photos/:id', isLoggedIn, PhotosController.deletePhoto); | |
// render users controller | |
router.get('/auth/register', UsersController.usersNew); | |
router.post('/auth/register', UsersController.usersCreate); | |
router.get('/users', isLoggedIn, UsersController.usersIndex); | |
router.get('/users/:id', isLoggedIn, UsersController.userShow); | |
router.get('/users/:id/edit', isLoggedIn, UsersController.userEdit); | |
router.put('/users/:id', isLoggedIn, UsersController.userUpdate); | |
router.delete('/users/:id', isLoggedIn, UsersController.userDelete); | |
module.exports = router; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var path = require('path'); | |
var favicon = require('serve-favicon'); | |
var logger = require('morgan'); | |
var cookieParser = require('cookie-parser'); | |
var bodyParser = require('body-parser'); | |
var methodOverride = require('method-override'); | |
var flash = require('connect-flash'); | |
var multer = require('multer'); | |
var multerStorageSettings = multer.diskStorage({ | |
destination: function(req, file, cb) { | |
cb(null, './images/'); | |
}, | |
filename: function(req, file, cb) { | |
console.log("changing file name"); | |
cb(null, file.originalname + '-' + Date.now()); | |
} | |
}); | |
var upload = multer({storage: multerStorageSettings}); | |
// Require modules for mongoose and passport | |
var mongoose = require('mongoose'); | |
var passport = require('passport'), | |
LocalStrategy = require('passport-local').Strategy; | |
var routes = require('./routes/index'); | |
var app = express(); | |
// view engine setup | |
app.set('views', path.join(__dirname, 'views')); | |
app.set('view engine', 'ejs'); | |
app.listen(process.env.PORT || 3000); | |
app.use(logger('dev')); | |
app.use(express.static('public')); | |
app.use(bodyParser.json()); | |
app.use(bodyParser.urlencoded({ extended: false })); | |
app.use(methodOverride('_method')); | |
app.use(cookieParser()); | |
app.use(methodOverride('_method')); | |
app.use(express.static(path.join(__dirname, 'public'))); | |
app.use(flash()); | |
// auth middleware | |
app.use(require('express-session')({ | |
secret: 'Keyboard cat', | |
resave: false, | |
saveUninitialized: false | |
})); | |
app.use(passport.initialize()); | |
app.use(passport.session()); | |
app.locals.title = 'FitBuds'; | |
app.use('/', routes); | |
// passport configurations | |
var User = require('./models/User'); | |
passport.use(new LocalStrategy(User.authenticate())); | |
// serialize User | |
passport.serializeUser(function(user, done) { | |
done(null, user.id); | |
}); | |
// deserialize User | |
passport.deserializeUser(function(id, done) { | |
User.findById(id, function(err, user) { | |
done(err, user); | |
}); | |
}); | |
// create mongoURI | |
var mongoURI = 'mongodb://localhost/fitbuds'; | |
if (process.env.NODE_ENV === 'production') { | |
mongoURI = process.env.MONGOLAB_URI | |
}; | |
// connect to MongoDB | |
mongoose.connect('mongodb://localhost:27017/fitbuds'); | |
app.post('/api/photos', upload.single('avatar'), function(req, res, next) { | |
console.log("this is in request", req.file, "this is the file", req.body); | |
}); | |
// catch 404 and forward to error handler | |
app.use(function(req, res, next) { | |
var err = new Error('Not Found'); | |
err.status = 404; | |
next(err); | |
}); | |
// error handlers | |
// development error handler | |
// will print stacktrace | |
if (app.get('env') === 'development') { | |
app.use(function(err, req, res, next) { | |
res.status(err.status || 500); | |
res.render('error', { | |
message: err.message, | |
error: err | |
}); | |
}); | |
} | |
// production error handler | |
// no stacktraces leaked to user | |
app.use(function(err, req, res, next) { | |
res.status(err.status || 500); | |
res.render('error', { | |
message: err.message, | |
error: {} | |
}); | |
}); | |
// start the server | |
app.listen(); | |
console.log('3000 is the the magic port'); | |
module.exports = app; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form id= "uploadForm" | |
enctype = "multipart/form-data" | |
action = "/api/photos" | |
method = "post" | |
> | |
<input type="file" name="avatar" /> | |
<input type="submit" value="Upload Image" name="submit"> | |
</form> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment