-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
76 lines (65 loc) · 2.97 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var express = require('express'),
app = express(),
session = require('express-session'),
mongoose = require('mongoose'),
passport = require('./api/services/passport.js'),
userCtrl = require('./api/controllers/users/userCtrl'),
recipeCtrl = require('./api/controllers/recipes/recipesCtrl'),
bodyParser = require('body-parser'),
grainCtrl = require('./api/controllers/database/grainCtrl'),
hopsCtrl = require('./api/controllers/database/hopsCtrl'),
yeastCtrl = require('./api/controllers/database/yeastCtrl'),
favicon = require('serve-favicon'),
cors = require('cors'),
http = require('http'),
httpServer = http.createServer(app),
compress = require('compression'),
port = 8080;
app.use(compress());
app.use(express.static(__dirname + '/public'));
app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(bodyParser.json());
app.use(cors());
app.use(session({
secret: 'JESUS-MakEs-really-good-beer',
resave: 'false',
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
app.post('/auth/local/signup', passport.authenticate( 'local-signup' ), function(req, res){
res.json(req.user);
});
app.post('/auth/local/login', passport.authenticate( 'local-login' ), function(req, res){
res.json(req.user);
});
app.get('/auth/logout', function(req, res){
req.logout();
res.redirect('/');
});
//User endpoints
app.post( '/api/users', userCtrl.create );
app.get( '/api/user/', userCtrl.getCurrentUser);
app.put( '/api/users/:user_id', userCtrl.update );
app.put( '/api/users/:user_id/:recipe_id', userCtrl.updateRecipes);
app.delete( '/api/users/:user_id', userCtrl.remove );
//Recipe endpoints
app.post( '/api/recipes', recipeCtrl.addRecipe);
app.get( '/api/recipes', recipeCtrl.retrieveRecipes);
app.get( '/api/recipes/:user_id', recipeCtrl.retrieveUserRecipes);
app.put( '/api/recipes', recipeCtrl.editRecipe);
app.delete( '/api/recipes', recipeCtrl.removeRecipe);
//Database endpoints
app.get( '/database/ingredients/grain', grainCtrl.getGrain);
app.post( '/database/ingredients/grain', grainCtrl.addGrain);
app.put( '/database/ingredients/grain/:_id', grainCtrl.updateGrain);
app.get( '/database/ingredients/hops', hopsCtrl.getHops);
app.post( '/database/ingredients/hops', hopsCtrl.addHops);
app.get( '/database/ingredients/yeast', yeastCtrl.getYeast);
app.post( '/database/ingredients/yeast', yeastCtrl.addYeast);
mongoose.connect('mongodb://localhost:27017/brewabatch', function(err, response) {
console.log(err, 'Mongo is also Listening', response);
});
httpServer.listen(port, function() {
console.log('Listening with httpServer on', port);
});