Comparing version
@@ -1,2 +0,2 @@ | ||
module.exports = function (models, serializer, responseHandler, validator) { | ||
module.exports = function (io, models, serializer, responseHandler, validator) { | ||
@@ -50,2 +50,5 @@ return { | ||
serial = serializer.serialize(name, document); | ||
if (io) { | ||
io.sockets.emit(name + '.create', serial); | ||
} | ||
res.send(responseHandler.getResponse(serial)); | ||
@@ -70,2 +73,5 @@ }, | ||
serial = serializer.serialize(name, document); | ||
if (io) { | ||
io.sockets.emit(name + '.update', serial); | ||
} | ||
res.send(responseHandler.getResponse(serial)); | ||
@@ -84,2 +90,5 @@ }); | ||
var serial = serializer.serialize(name, document); | ||
if (io) { | ||
io.sockets.emit(name + '.remove', serial); | ||
} | ||
res.send(responseHandler.getResponse(serial)); | ||
@@ -86,0 +95,0 @@ }); |
126
lib/index.js
@@ -16,15 +16,3 @@ var Bedoon = function (config) { | ||
// Configuring the database | ||
console.log('Configuring database'); | ||
mongoose.connect(config.db); | ||
// Loading models | ||
console.log('Loading resource models'); | ||
Object.keys(config.resources).forEach(function (name) { | ||
var resource = config.resources[name]; | ||
if (resource.type === 'document') { | ||
models[name] = mongoose.model(name, schemaFactory.getSchema(name)); | ||
} | ||
}); | ||
// Configuration of express app | ||
@@ -42,56 +30,74 @@ console.log('Configuring express app'); | ||
return { | ||
app: app, | ||
run: function (portHttp, portSocketIO) { | ||
var io = portSocketIO ? require('socket.io').listen(portSocketIO) : null; | ||
// Configuring the database | ||
console.log('Configuring database'); | ||
mongoose.connect(config.db); | ||
// Authentication configuration | ||
console.log('Configuring authentication'); | ||
Object.keys(config.resources).forEach(function (name) { | ||
if (config.resources[name].user) { | ||
userResourceName = name; | ||
} | ||
}); | ||
if (userResourceName) { | ||
var LocalStrategy = require('passport-local').Strategy, | ||
sercurityControllers = require('./controller/security-controller')(serializer, userResourceName, responseHandler); | ||
passport.use(new LocalStrategy( | ||
function (username, password, done) { | ||
models[userResourceName].findOne({ username: username }, function (err, user) { | ||
if (err) { return done(err); } | ||
if (!user) { | ||
return done(null, false, { message: 'Incorrect username.' }); | ||
} | ||
if (passwordHandler.compare(user.password, password)) { | ||
return done(null, false, { message: 'Incorrect password.' }); | ||
} | ||
return done(null, user); | ||
}); | ||
} | ||
)); | ||
// Loading models | ||
console.log('Loading resource models'); | ||
Object.keys(config.resources).forEach(function (name) { | ||
var resource = config.resources[name]; | ||
if (resource.type === 'document') { | ||
models[name] = mongoose.model(name, schemaFactory.getSchema(name)); | ||
} | ||
}); | ||
passport.serializeUser(function (user, done) { | ||
done(null, user._id); | ||
}); | ||
passport.deserializeUser(function (id, done) { | ||
models[userResourceName].findById(id, function (err, user) { | ||
done(err, user); | ||
// Authentication configuration | ||
console.log('Configuring authentication'); | ||
Object.keys(config.resources).forEach(function (name) { | ||
if (config.resources[name].user) { | ||
userResourceName = name; | ||
} | ||
}); | ||
}); | ||
if (userResourceName) { | ||
var LocalStrategy = require('passport-local').Strategy, | ||
sercurityControllers = require('./controller/security-controller')(serializer, userResourceName, responseHandler); | ||
passport.use(new LocalStrategy( | ||
function (username, password, done) { | ||
models[userResourceName].findOne({ username: username }, function (err, user) { | ||
if (err) { return done(err); } | ||
if (!user) { | ||
return done(null, false, { message: 'Incorrect username.' }); | ||
} | ||
if (passwordHandler.compare(user.password, password)) { | ||
return done(null, false, { message: 'Incorrect password.' }); | ||
} | ||
return done(null, user); | ||
}); | ||
} | ||
)); | ||
app.post(prefix + '/auth/login', passport.authenticate('local', { successRedirect: prefix + '/auth/loggedin', | ||
failureRedirect: prefix + '/auth/failed' })); | ||
app.get(prefix + '/auth/loggedin', sercurityControllers.isAuthenticated, sercurityControllers.loggedinUser); | ||
app.get(prefix + '/auth/failed', sercurityControllers.authenticationFailed); | ||
app.get(prefix + '/auth/logout', sercurityControllers.logout); | ||
} | ||
passport.serializeUser(function (user, done) { | ||
done(null, user._id); | ||
}); | ||
passport.deserializeUser(function (id, done) { | ||
models[userResourceName].findById(id, function (err, user) { | ||
done(err, user); | ||
}); | ||
}); | ||
app.post(prefix + '/auth/login', passport.authenticate('local', { successRedirect: prefix + '/auth/loggedin', | ||
failureRedirect: prefix + '/auth/failed' })); | ||
app.get(prefix + '/auth/loggedin', sercurityControllers.isAuthenticated, sercurityControllers.loggedinUser); | ||
app.get(prefix + '/auth/failed', sercurityControllers.authenticationFailed); | ||
app.get(prefix + '/auth/logout', sercurityControllers.logout); | ||
} | ||
// Adding resource controllers | ||
console.log('Configuring Resource APIs'); | ||
var resourceController = require('./controller/resource-controller')(models, serializer, responseHandler, validator); | ||
app.get(prefix + '/:name', resourceController.checkName, resourceController.findAll); | ||
app.get(prefix + '/:name/:id', resourceController.checkName, resourceController.findOne); | ||
app.post(prefix + '/:name', resourceController.checkName, resourceController.create); | ||
app.put(prefix + '/:name/:id', resourceController.checkName, resourceController.update); | ||
app.delete(prefix + '/:name/:id', resourceController.checkName, resourceController.remove); | ||
return { | ||
app: app | ||
// Adding resource controllers | ||
console.log('Configuring Resource APIs'); | ||
var resourceController = require('./controller/resource-controller')(io, models, serializer, responseHandler, validator); | ||
app.get(prefix + '/:name', resourceController.checkName, resourceController.findAll); | ||
app.get(prefix + '/:name/:id', resourceController.checkName, resourceController.findOne); | ||
app.post(prefix + '/:name', resourceController.checkName, resourceController.create); | ||
app.put(prefix + '/:name/:id', resourceController.checkName, resourceController.update); | ||
app.delete(prefix + '/:name/:id', resourceController.checkName, resourceController.remove); | ||
this.app.listen(portHttp); | ||
} | ||
}; | ||
@@ -98,0 +104,0 @@ }; |
{ | ||
"name": "bedoon", | ||
"version": "0.0.4", | ||
"version": "0.1.0", | ||
"author": "Riad Benguella", | ||
@@ -17,7 +17,8 @@ "description": "yet another no backend solution using mongodb and nodejs", | ||
"dependencies": { | ||
"express": "latest", | ||
"mongoose": "latest", | ||
"passport": "latest", | ||
"passport-local": "latest", | ||
"bcrypt": "latest" | ||
"express": "3.4.*", | ||
"mongoose": "3.8.*", | ||
"passport": "0.2.*", | ||
"passport-local": "0.1.*", | ||
"bcrypt": "0.7.*", | ||
"socket.io": "0.9.*" | ||
}, | ||
@@ -24,0 +25,0 @@ "devDependencies": { |
23404
4.54%511
2.61%6
20%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated
Updated