From f144c8a2f0a045fb75dd34b70986944b9febd79e Mon Sep 17 00:00:00 2001 From: Marek Mitis Date: Sun, 20 Dec 2015 20:44:02 +0100 Subject: [PATCH] indent --- .eslintrc | 31 ++- server/api/thing/thing.controller.js | 108 ++++----- server/api/thing/thing.events.js | 16 +- server/api/thing/thing.model.js | 6 +- server/api/thing/thing.socket.js | 28 +-- server/api/user/user.controller.js | 112 ++++----- server/api/user/user.events.js | 16 +- server/api/user/user.model.js | 334 +++++++++++++------------- server/app.js | 14 +- server/auth/auth.service.js | 84 +++---- server/auth/facebook/index.js | 18 +- server/auth/facebook/passport.js | 60 ++--- server/auth/google/index.js | 24 +- server/auth/google/passport.js | 54 ++--- server/auth/local/index.js | 22 +- server/auth/local/passport.js | 56 ++--- server/auth/twitter/index.js | 16 +- server/auth/twitter/passport.js | 52 ++-- server/config/express.js | 52 ++-- server/config/socketio.js | 50 ++-- server/index.js | 5 - server/libs/core/loader.handlebars.js | 6 +- server/routes.js | 12 +- 23 files changed, 587 insertions(+), 589 deletions(-) diff --git a/.eslintrc b/.eslintrc index b6cef8f..bd309a0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,20 +1,25 @@ { + "rules": { + "quotes": [ + 2, + "single" + ], + "linebreak-style": [ + 2, + "unix" + ], + "semi": [ + 2, + "always" + ] + }, "env": { - "browser": true, - "amd": true, "es6": true, - "mocha": true + "node": true }, "parser": "babel-eslint", - "rules": { - "strict": 0, - "comma-dangle": [ - 2, - "always-multiline" - ], - "no-underscore-dangle": 0 + "ecmaFeatures": { + "modules": true }, - "globals": { - "expect": true - } + "extends": "eslint:recommended" } diff --git a/server/api/thing/thing.controller.js b/server/api/thing/thing.controller.js index f85f446..eb157ce 100644 --- a/server/api/thing/thing.controller.js +++ b/server/api/thing/thing.controller.js @@ -13,90 +13,90 @@ import _ from 'lodash'; var Thing = require('./thing.model'); function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; + statusCode = statusCode || 500; + return function(err) { + res.status(statusCode).send(err); + }; } function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; + statusCode = statusCode || 200; + return function(entity) { + if (entity) { + res.status(statusCode).json(entity); + } + }; } function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; + return function(entity) { + if (!entity) { + res.status(404).end(); + return null; + } + return entity; + }; } function saveUpdates(updates) { - return function(entity) { - var updated = _.merge(entity, updates); - return updated.saveAsync() - .spread(updated => { - return updated; - }); - }; + return function(entity) { + var updated = _.merge(entity, updates); + return updated.saveAsync() + .spread(updated => { + return updated; + }); + }; } function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.removeAsync() - .then(() => { - res.status(204).end(); - }); - } - }; + return function(entity) { + if (entity) { + return entity.removeAsync() + .then(() => { + res.status(204).end(); + }); + } + }; } // Gets a list of Things export function index(req, res) { - Thing.findAsync() - .then(responseWithResult(res)) - .catch(handleError(res)); + Thing.findAsync() + .then(responseWithResult(res)) + .catch(handleError(res)); } // Gets a single Thing from the DB export function show(req, res) { - Thing.findByIdAsync(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); + Thing.findByIdAsync(req.params.id) + .then(handleEntityNotFound(res)) + .then(responseWithResult(res)) + .catch(handleError(res)); } // Creates a new Thing in the DB export function create(req, res) { - Thing.createAsync(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); + Thing.createAsync(req.body) + .then(responseWithResult(res, 201)) + .catch(handleError(res)); } // Updates an existing Thing in the DB export function update(req, res) { - if (req.body._id) { - delete req.body._id; - } - Thing.findByIdAsync(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); + if (req.body._id) { + delete req.body._id; + } + Thing.findByIdAsync(req.params.id) + .then(handleEntityNotFound(res)) + .then(saveUpdates(req.body)) + .then(responseWithResult(res)) + .catch(handleError(res)); } // Deletes a Thing from the DB export function destroy(req, res) { - Thing.findByIdAsync(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); + Thing.findByIdAsync(req.params.id) + .then(handleEntityNotFound(res)) + .then(removeEntity(res)) + .catch(handleError(res)); } diff --git a/server/api/thing/thing.events.js b/server/api/thing/thing.events.js index 9b4c3ab..6305416 100644 --- a/server/api/thing/thing.events.js +++ b/server/api/thing/thing.events.js @@ -13,21 +13,21 @@ ThingEvents.setMaxListeners(0); // Model events var events = { - 'save': 'save', - 'remove': 'remove' + 'save': 'save', + 'remove': 'remove' }; // Register the event emitter to the model events for (var e in events) { - var event = events[e]; - Thing.schema.post(e, emitEvent(event)); + var event = events[e]; + Thing.schema.post(e, emitEvent(event)); } function emitEvent(event) { - return function(doc) { - ThingEvents.emit(event + ':' + doc._id, doc); - ThingEvents.emit(event, doc); - } + return function(doc) { + ThingEvents.emit(event + ':' + doc._id, doc); + ThingEvents.emit(event, doc); + } } export default ThingEvents; diff --git a/server/api/thing/thing.model.js b/server/api/thing/thing.model.js index 9ddec9b..6ba0de4 100644 --- a/server/api/thing/thing.model.js +++ b/server/api/thing/thing.model.js @@ -3,9 +3,9 @@ var mongoose = require('bluebird').promisifyAll(require('mongoose')); var ThingSchema = new mongoose.Schema({ - name: String, - info: String, - active: Boolean + name: String, + info: String, + active: Boolean }); export default mongoose.model('Thing', ThingSchema); diff --git a/server/api/thing/thing.socket.js b/server/api/thing/thing.socket.js index 6640b9a..58f9038 100644 --- a/server/api/thing/thing.socket.js +++ b/server/api/thing/thing.socket.js @@ -10,25 +10,25 @@ var ThingEvents = require('./thing.events'); var events = ['save', 'remove']; export function register(socket) { - // Bind model events to socket events - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('thing:' + event, socket); - - ThingEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } + // Bind model events to socket events + for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { + var event = events[i]; + var listener = createListener('thing:' + event, socket); + + ThingEvents.on(event, listener); + socket.on('disconnect', removeListener(event, listener)); + } } function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; + return function(doc) { + socket.emit(event, doc); + }; } function removeListener(event, listener) { - return function() { - ThingEvents.removeListener(event, listener); - }; + return function() { + ThingEvents.removeListener(event, listener); + }; } diff --git a/server/api/user/user.controller.js b/server/api/user/user.controller.js index d3a13ec..252b3c9 100644 --- a/server/api/user/user.controller.js +++ b/server/api/user/user.controller.js @@ -12,44 +12,44 @@ import jwt from 'jsonwebtoken'; * restriction: 'admin' */ export function index(req, res) { - User.findAsync({}, '-salt -password') - .then(users => { - res.status(200).json(users); - }) - .catch(handleError(res)); + User.findAsync({}, '-salt -password') + .then(users => { + res.status(200).json(users); + }) + .catch(handleError(res)); } /** * Creates a new user */ export function create(req, res, next) { - var newUser = new User(req.body); - newUser.provider = 'local'; - newUser.role = 'user'; - newUser.saveAsync() - .spread(function(user) { - var token = jwt.sign({ _id: user._id }, config.secrets.session, { - expiresIn: 60 * 60 * 5 - }); - res.json({ token }); - }) - .catch(validationError(res)); + var newUser = new User(req.body); + newUser.provider = 'local'; + newUser.role = 'user'; + newUser.saveAsync() + .spread(function(user) { + var token = jwt.sign({ _id: user._id }, config.secrets.session, { + expiresIn: 60 * 60 * 5 + }); + res.json({ token }); + }) + .catch(validationError(res)); } /** * Get a single user */ export function show(req, res, next) { - var userId = req.params.id; + var userId = req.params.id; - User.findByIdAsync(userId) - .then(user => { - if (!user) { - return res.status(404).end(); - } - res.json(user.profile); - }) - .catch(err => next(err)); + User.findByIdAsync(userId) + .then(user => { + if (!user) { + return res.status(404).end(); + } + res.json(user.profile); + }) + .catch(err => next(err)); } /** @@ -57,55 +57,55 @@ export function show(req, res, next) { * restriction: 'admin' */ export function destroy(req, res) { - User.findByIdAndRemoveAsync(req.params.id) - .then(function() { - res.status(204).end(); - }) - .catch(handleError(res)); + User.findByIdAndRemoveAsync(req.params.id) + .then(function() { + res.status(204).end(); + }) + .catch(handleError(res)); } /** * Change a users password */ export function changePassword(req, res, next) { - var userId = req.user._id; - var oldPass = String(req.body.oldPassword); - var newPass = String(req.body.newPassword); + var userId = req.user._id; + var oldPass = String(req.body.oldPassword); + var newPass = String(req.body.newPassword); - User.findByIdAsync(userId) - .then(user => { - if (user.authenticate(oldPass)) { - user.password = newPass; - return user.saveAsync() - .then(() => { - res.status(204).end(); - }) - .catch(validationError(res)); - } else { - return res.status(403).end(); - } - }); + User.findByIdAsync(userId) + .then(user => { + if (user.authenticate(oldPass)) { + user.password = newPass; + return user.saveAsync() + .then(() => { + res.status(204).end(); + }) + .catch(validationError(res)); + } else { + return res.status(403).end(); + } + }); } /** * Get my info */ export function me(req, res, next) { - var userId = req.user._id; + var userId = req.user._id; - User.findOneAsync({ _id: userId }, '-salt -password') - .then(user => { // don't ever give out the password or salt - if (!user) { - return res.status(401).end(); - } - res.json(user); - }) - .catch(err => next(err)); + User.findOneAsync({ _id: userId }, '-salt -password') + .then(user => { // don't ever give out the password or salt + if (!user) { + return res.status(401).end(); + } + res.json(user); + }) + .catch(err => next(err)); } /** * Authentication callback */ export function authCallback(req, res, next) { - res.redirect('/'); + res.redirect('/'); } diff --git a/server/api/user/user.events.js b/server/api/user/user.events.js index 34b8395..fa0e663 100644 --- a/server/api/user/user.events.js +++ b/server/api/user/user.events.js @@ -13,21 +13,21 @@ UserEvents.setMaxListeners(0); // Model events var events = { - 'save': 'save', - 'remove': 'remove' + 'save': 'save', + 'remove': 'remove' }; // Register the event emitter to the model events for (var e in events) { - var event = events[e]; - User.schema.post(e, emitEvent(event)); + var event = events[e]; + User.schema.post(e, emitEvent(event)); } function emitEvent(event) { - return function(doc) { - UserEvents.emit(event + ':' + doc._id, doc); - UserEvents.emit(event, doc); - } + return function(doc) { + UserEvents.emit(event + ':' + doc._id, doc); + UserEvents.emit(event, doc); + }; } export default UserEvents; diff --git a/server/api/user/user.model.js b/server/api/user/user.model.js index db0a97f..e6f5ee3 100644 --- a/server/api/user/user.model.js +++ b/server/api/user/user.model.js @@ -7,22 +7,22 @@ import {Schema} from 'mongoose'; const authTypes = ['github', 'twitter', 'facebook', 'google']; var UserSchema = new Schema({ - name: String, - email: { - type: String, - lowercase: true - }, - role: { - type: String, - default: 'user' - }, - password: String, - provider: String, - salt: String, - facebook: {}, - twitter: {}, - google: {}, - github: {} + name: String, + email: { + type: String, + lowercase: true + }, + role: { + type: String, + default: 'user' + }, + password: String, + provider: String, + salt: String, + facebook: {}, + twitter: {}, + google: {}, + github: {} }); /** @@ -31,23 +31,23 @@ var UserSchema = new Schema({ // Public profile information UserSchema - .virtual('profile') - .get(function() { - return { - 'name': this.name, - 'role': this.role - }; - }); + .virtual('profile') + .get(function() { + return { + 'name': this.name, + 'role': this.role + }; + }); // Non-sensitive info we'll be putting in the token UserSchema - .virtual('token') - .get(function() { - return { - '_id': this._id, - 'role': this.role - }; - }); + .virtual('token') + .get(function() { + return { + '_id': this._id, + 'role': this.role + }; + }); /** * Validations @@ -55,173 +55,173 @@ UserSchema // Validate empty email UserSchema - .path('email') - .validate(function(email) { - if (authTypes.indexOf(this.provider) !== -1) { - return true; - } - return email.length; - }, 'Email cannot be blank'); + .path('email') + .validate(function(email) { + if (authTypes.indexOf(this.provider) !== -1) { + return true; + } + return email.length; + }, 'Email cannot be blank'); // Validate empty password UserSchema - .path('password') - .validate(function(password) { - if (authTypes.indexOf(this.provider) !== -1) { - return true; - } - return password.length; - }, 'Password cannot be blank'); + .path('password') + .validate(function(password) { + if (authTypes.indexOf(this.provider) !== -1) { + return true; + } + return password.length; + }, 'Password cannot be blank'); // Validate email is not taken UserSchema - .path('email') - .validate(function(value, respond) { - var self = this; - return this.constructor.findOneAsync({ email: value }) - .then(function(user) { - if (user) { - if (self.id === user.id) { - return respond(true); - } - return respond(false); - } - return respond(true); - }) - .catch(function(err) { - throw err; - }); - }, 'The specified email address is already in use.'); + .path('email') + .validate(function(value, respond) { + var self = this; + return this.constructor.findOneAsync({ email: value }) + .then(function(user) { + if (user) { + if (self.id === user.id) { + return respond(true); + } + return respond(false); + } + return respond(true); + }) + .catch(function(err) { + throw err; + }); + }, 'The specified email address is already in use.'); var validatePresenceOf = function(value) { - return value && value.length; + return value && value.length; }; /** * Pre-save hook */ UserSchema - .pre('save', function(next) { - // Handle new/update passwords - if (!this.isModified('password')) { - return next(); - } - - if (!validatePresenceOf(this.password) && authTypes.indexOf(this.provider) === -1) { - next(new Error('Invalid password')); - } + .pre('save', function(next) { + // Handle new/update passwords + if (!this.isModified('password')) { + return next(); + } - // Make salt with a callback - this.makeSalt((saltErr, salt) => { - if (saltErr) { - next(saltErr); - } - this.salt = salt; - this.encryptPassword(this.password, (encryptErr, hashedPassword) => { - if (encryptErr) { - next(encryptErr); + if (!validatePresenceOf(this.password) && authTypes.indexOf(this.provider) === -1) { + next(new Error('Invalid password')); } - this.password = hashedPassword; - next(); - }); + + // Make salt with a callback + this.makeSalt((saltErr, salt) => { + if (saltErr) { + next(saltErr); + } + this.salt = salt; + this.encryptPassword(this.password, (encryptErr, hashedPassword) => { + if (encryptErr) { + next(encryptErr); + } + this.password = hashedPassword; + next(); + }); + }); }); - }); /** * Methods */ UserSchema.methods = { - /** - * Authenticate - check if the passwords are the same - * - * @param {String} password - * @param {Function} callback - * @return {Boolean} - * @api public - */ - authenticate(password, callback) { - if (!callback) { - return this.password === this.encryptPassword(password); - } + /** + * Authenticate - check if the passwords are the same + * + * @param {String} password + * @param {Function} callback + * @return {Boolean} + * @api public + */ + authenticate(password, callback) { + if (!callback) { + return this.password === this.encryptPassword(password); + } - this.encryptPassword(password, (err, pwdGen) => { - if (err) { - return callback(err); - } + this.encryptPassword(password, (err, pwdGen) => { + if (err) { + return callback(err); + } + + if (this.password === pwdGen) { + callback(null, true); + } else { + callback(null, false); + } + }); + }, + + /** + * Make salt + * + * @param {Number} byteSize Optional salt byte size, default to 16 + * @param {Function} callback + * @return {String} + * @api public + */ + makeSalt(byteSize, callback) { + var defaultByteSize = 16; + + if (typeof arguments[0] === 'function') { + callback = arguments[0]; + byteSize = defaultByteSize; + } else if (typeof arguments[1] === 'function') { + callback = arguments[1]; + } - if (this.password === pwdGen) { - callback(null, true); - } else { - callback(null, false); - } - }); - }, - - /** - * Make salt - * - * @param {Number} byteSize Optional salt byte size, default to 16 - * @param {Function} callback - * @return {String} - * @api public - */ - makeSalt(byteSize, callback) { - var defaultByteSize = 16; - - if (typeof arguments[0] === 'function') { - callback = arguments[0]; - byteSize = defaultByteSize; - } else if (typeof arguments[1] === 'function') { - callback = arguments[1]; - } + if (!byteSize) { + byteSize = defaultByteSize; + } - if (!byteSize) { - byteSize = defaultByteSize; - } + if (!callback) { + return crypto.randomBytes(byteSize).toString('base64'); + } - if (!callback) { - return crypto.randomBytes(byteSize).toString('base64'); - } + return crypto.randomBytes(byteSize, (err, salt) => { + if (err) { + callback(err); + } else { + callback(null, salt.toString('base64')); + } + }); + }, + + /** + * Encrypt password + * + * @param {String} password + * @param {Function} callback + * @return {String} + * @api public + */ + encryptPassword(password, callback) { + if (!password || !this.salt) { + return null; + } - return crypto.randomBytes(byteSize, (err, salt) => { - if (err) { - callback(err); - } else { - callback(null, salt.toString('base64')); - } - }); - }, - - /** - * Encrypt password - * - * @param {String} password - * @param {Function} callback - * @return {String} - * @api public - */ - encryptPassword(password, callback) { - if (!password || !this.salt) { - return null; - } + var defaultIterations = 10000; + var defaultKeyLength = 64; + var salt = new Buffer(this.salt, 'base64'); - var defaultIterations = 10000; - var defaultKeyLength = 64; - var salt = new Buffer(this.salt, 'base64'); + if (!callback) { + return crypto.pbkdf2Sync(password, salt, defaultIterations, defaultKeyLength) + .toString('base64'); + } - if (!callback) { - return crypto.pbkdf2Sync(password, salt, defaultIterations, defaultKeyLength) - .toString('base64'); + return crypto.pbkdf2(password, salt, defaultIterations, defaultKeyLength, (err, key) => { + if (err) { + callback(err); + } else { + callback(null, key.toString('base64')); + } + }); } - - return crypto.pbkdf2(password, salt, defaultIterations, defaultKeyLength, (err, key) => { - if (err) { - callback(err); - } else { - callback(null, key.toString('base64')); - } - }); - } }; export default mongoose.model('User', UserSchema); diff --git a/server/app.js b/server/app.js index c9a8b0e..2762940 100644 --- a/server/app.js +++ b/server/app.js @@ -9,16 +9,16 @@ import http from 'http'; // Connect to MongoDB mongoose.connect(config.mongo.uri, config.mongo.options); mongoose.connection.on('error', function(err) { - console.error('MongoDB connection error: ' + err); - process.exit(-1); + console.error('MongoDB connection error: ' + err); + process.exit(-1); }); // Setup server var app = express(); var server = http.createServer(app); var socketio = require('socket.io')(server, { - serveClient: config.env !== 'production', - path: '/socket.io-client' + serveClient: config.env !== 'production', + path: '/socket.io-client' }); require('./config/socketio')(socketio); @@ -27,9 +27,9 @@ require('./routes')(app); // Start server function startServer() { - server.listen(config.port, config.ip, function() { - console.log('Express server listening on %d, in %s mode', config.port, app.get('env')); - }); + server.listen(config.port, config.ip, function() { + console.log('Express server listening on %d, in %s mode', config.port, app.get('env')); + }); } setImmediate(startServer); exports = module.exports = app; diff --git a/server/auth/auth.service.js b/server/auth/auth.service.js index dfa8cfd..f33d95a 100644 --- a/server/auth/auth.service.js +++ b/server/auth/auth.service.js @@ -8,7 +8,7 @@ import compose from 'composable-middleware'; import User from '../api/user/user.model'; var validateJwt = expressJwt({ - secret: config.secrets.session + secret: config.secrets.session }); /** @@ -16,66 +16,66 @@ var validateJwt = expressJwt({ * Otherwise returns 403 */ export function isAuthenticated() { - return compose() + return compose() // Validate jwt - .use(function(req, res, next) { - // allow access_token to be passed through query parameter as well - if (req.query && req.query.hasOwnProperty('access_token')) { - req.headers.authorization = 'Bearer ' + req.query.access_token; - } - validateJwt(req, res, next); - }) - // Attach user to request - .use(function(req, res, next) { - User.findByIdAsync(req.user._id) - .then(user => { - if (!user) { - return res.status(401).end(); - } - req.user = user; - next(); + .use(function(req, res, next) { + // allow access_token to be passed through query parameter as well + if (req.query && req.query.hasOwnProperty('access_token')) { + req.headers.authorization = 'Bearer ' + req.query.access_token; + } + validateJwt(req, res, next); }) - .catch(err => next(err)); - }); + // Attach user to request + .use(function(req, res, next) { + User.findByIdAsync(req.user._id) + .then(user => { + if (!user) { + return res.status(401).end(); + } + req.user = user; + next(); + }) + .catch(err => next(err)); + }); } /** * Checks if the user role meets the minimum requirements of the route */ export function hasRole(roleRequired) { - if (!roleRequired) { - throw new Error('Required role needs to be set'); - } + if (!roleRequired) { + throw new Error('Required role needs to be set'); + } - return compose() - .use(isAuthenticated()) - .use(function meetsRequirements(req, res, next) { - if (config.userRoles.indexOf(req.user.role) >= - config.userRoles.indexOf(roleRequired)) { - next(); - } else { - res.status(403).send('Forbidden'); - } - }); + return compose() + .use(isAuthenticated()) + .use(function meetsRequirements(req, res, next) { + if (config.userRoles.indexOf(req.user.role) >= + config.userRoles.indexOf(roleRequired)) { + next(); + } else { + res.status(403).send('Forbidden'); + } + }); } /** * Returns a jwt token signed by the app secret */ export function signToken(id, role) { - return jwt.sign({ _id: id, role: role }, config.secrets.session, { - expiresIn: 60 * 60 * 5 - }); + return jwt.sign({ _id: id, role: role }, config.secrets.session, { + expiresIn: 60 * 60 * 5 + }); } /** * Set token cookie directly for oAuth strategies */ export function setTokenCookie(req, res) { - if (!req.user) { - return res.status(404).send('It looks like you aren\'t logged in, please try again.'); - } - var token = signToken(req.user._id, req.user.role); - res.cookie('token', token); - res.redirect('/'); + if (!req.user) { + return res.status(404).send('It looks like you aren\'t logged in, please try again.'); + } + var token = signToken(req.user._id, req.user.role); + res.cookie('token', token); + res.redirect('/'); } diff --git a/server/auth/facebook/index.js b/server/auth/facebook/index.js index f0c98ef..f9bd5f6 100644 --- a/server/auth/facebook/index.js +++ b/server/auth/facebook/index.js @@ -7,14 +7,14 @@ import {setTokenCookie} from '../auth.service'; var router = express.Router(); router - .get('/', passport.authenticate('facebook', { - scope: ['email', 'user_about_me'], - failureRedirect: '/signup', - session: false - })) - .get('/callback', passport.authenticate('facebook', { - failureRedirect: '/signup', - session: false - }), setTokenCookie); + .get('/', passport.authenticate('facebook', { + scope: ['email', 'user_about_me'], + failureRedirect: '/signup', + session: false + })) + .get('/callback', passport.authenticate('facebook', { + failureRedirect: '/signup', + session: false + }), setTokenCookie); export default router; diff --git a/server/auth/facebook/passport.js b/server/auth/facebook/passport.js index c86e196..e5d687e 100644 --- a/server/auth/facebook/passport.js +++ b/server/auth/facebook/passport.js @@ -2,35 +2,35 @@ import passport from 'passport'; import {Strategy as FacebookStrategy} from 'passport-facebook'; export function setup(User, config) { - passport.use(new FacebookStrategy({ - clientID: config.facebook.clientID, - clientSecret: config.facebook.clientSecret, - callbackURL: config.facebook.callbackURL, - profileFields: [ - 'displayName', - 'emails' - ] - }, - function(accessToken, refreshToken, profile, done) { - User.findOneAsync({ - 'facebook.id': profile.id - }) - .then(user => { - if (user) { - return done(null, user); - } + passport.use(new FacebookStrategy({ + clientID: config.facebook.clientID, + clientSecret: config.facebook.clientSecret, + callbackURL: config.facebook.callbackURL, + profileFields: [ + 'displayName', + 'emails' + ] + }, + function(accessToken, refreshToken, profile, done) { + User.findOneAsync({ + 'facebook.id': profile.id + }) + .then(user => { + if (user) { + return done(null, user); + } - user = new User({ - name: profile.displayName, - email: profile.emails[0].value, - role: 'user', - provider: 'facebook', - facebook: profile._json - }); - user.saveAsync() - .then(user => done(null, user)) - .catch(err => done(err)); - }) - .catch(err => done(err)); - })); + user = new User({ + name: profile.displayName, + email: profile.emails[0].value, + role: 'user', + provider: 'facebook', + facebook: profile._json + }); + user.saveAsync() + .then(user => done(null, user)) + .catch(err => done(err)); + }) + .catch(err => done(err)); + })); } diff --git a/server/auth/google/index.js b/server/auth/google/index.js index 25753de..085313e 100644 --- a/server/auth/google/index.js +++ b/server/auth/google/index.js @@ -7,17 +7,17 @@ import {setTokenCookie} from '../auth.service'; var router = express.Router(); router - .get('/', passport.authenticate('google', { - failureRedirect: '/signup', - scope: [ - 'profile', - 'email' - ], - session: false - })) - .get('/callback', passport.authenticate('google', { - failureRedirect: '/signup', - session: false - }), setTokenCookie); + .get('/', passport.authenticate('google', { + failureRedirect: '/signup', + scope: [ + 'profile', + 'email' + ], + session: false + })) + .get('/callback', passport.authenticate('google', { + failureRedirect: '/signup', + session: false + }), setTokenCookie); export default router; diff --git a/server/auth/google/passport.js b/server/auth/google/passport.js index e187aba..9e1ae34 100644 --- a/server/auth/google/passport.js +++ b/server/auth/google/passport.js @@ -2,32 +2,32 @@ import passport from 'passport'; import {OAuth2Strategy as GoogleStrategy} from 'passport-google-oauth'; export function setup(User, config) { - passport.use(new GoogleStrategy({ - clientID: config.google.clientID, - clientSecret: config.google.clientSecret, - callbackURL: config.google.callbackURL - }, - function(accessToken, refreshToken, profile, done) { - User.findOneAsync({ - 'google.id': profile.id - }) - .then(user => { - if (user) { - return done(null, user); - } + passport.use(new GoogleStrategy({ + clientID: config.google.clientID, + clientSecret: config.google.clientSecret, + callbackURL: config.google.callbackURL + }, + function(accessToken, refreshToken, profile, done) { + User.findOneAsync({ + 'google.id': profile.id + }) + .then(user => { + if (user) { + return done(null, user); + } - user = new User({ - name: profile.displayName, - email: profile.emails[0].value, - role: 'user', - username: profile.emails[0].value.split('@')[0], - provider: 'google', - google: profile._json - }); - user.saveAsync() - .then(user => done(null, user)) - .catch(err => done(err)); - }) - .catch(err => done(err)); - })); + user = new User({ + name: profile.displayName, + email: profile.emails[0].value, + role: 'user', + username: profile.emails[0].value.split('@')[0], + provider: 'google', + google: profile._json + }); + user.saveAsync() + .then(user => done(null, user)) + .catch(err => done(err)); + }) + .catch(err => done(err)); + })); } diff --git a/server/auth/local/index.js b/server/auth/local/index.js index 8002a84..1a8b45d 100644 --- a/server/auth/local/index.js +++ b/server/auth/local/index.js @@ -7,18 +7,18 @@ import {signToken} from '../auth.service'; var router = express.Router(); router.post('/', function(req, res, next) { - passport.authenticate('local', function(err, user, info) { - var error = err || info; - if (error) { - return res.status(401).json(error); - } - if (!user) { - return res.status(404).json({message: 'Something went wrong, please try again.'}); - } + passport.authenticate('local', function(err, user, info) { + var error = err || info; + if (error) { + return res.status(401).json(error); + } + if (!user) { + return res.status(404).json({message: 'Something went wrong, please try again.'}); + } - var token = signToken(user._id, user.role); - res.json({ token }); - })(req, res, next) + var token = signToken(user._id, user.role); + res.json({ token }); + })(req, res, next); }); export default router; diff --git a/server/auth/local/passport.js b/server/auth/local/passport.js index 2d803ee..11cf2c2 100644 --- a/server/auth/local/passport.js +++ b/server/auth/local/passport.js @@ -2,34 +2,34 @@ import passport from 'passport'; import {Strategy as LocalStrategy} from 'passport-local'; function localAuthenticate(User, email, password, done) { - User.findOneAsync({ - email: email.toLowerCase() - }) - .then(user => { - if (!user) { - return done(null, false, { - message: 'This email is not registered.' - }); - } - user.authenticate(password, function(authError, authenticated) { - if (authError) { - return done(authError); - } - if (!authenticated) { - return done(null, false, { message: 'This password is not correct.' }); - } else { - return done(null, user); - } - }); - }) - .catch(err => done(err)); + User.findOneAsync({ + email: email.toLowerCase() + }) + .then(user => { + if (!user) { + return done(null, false, { + message: 'This email is not registered.' + }); + } + user.authenticate(password, function(authError, authenticated) { + if (authError) { + return done(authError); + } + if (!authenticated) { + return done(null, false, { message: 'This password is not correct.' }); + } else { + return done(null, user); + } + }); + }) + .catch(err => done(err)); } -export function setup(User, config) { - passport.use(new LocalStrategy({ - usernameField: 'email', - passwordField: 'password' // this is the virtual field on the model - }, function(email, password, done) { - return localAuthenticate(User, email, password, done); - })); +export function setup(User) { + passport.use(new LocalStrategy({ + usernameField: 'email', + passwordField: 'password' // this is the virtual field on the model + }, function(email, password, done) { + return localAuthenticate(User, email, password, done); + })); } diff --git a/server/auth/twitter/index.js b/server/auth/twitter/index.js index 3b08edd..4be3183 100644 --- a/server/auth/twitter/index.js +++ b/server/auth/twitter/index.js @@ -7,13 +7,13 @@ import {setTokenCookie} from '../auth.service'; var router = express.Router(); router - .get('/', passport.authenticate('twitter', { - failureRedirect: '/signup', - session: false - })) - .get('/callback', passport.authenticate('twitter', { - failureRedirect: '/signup', - session: false - }), setTokenCookie); + .get('/', passport.authenticate('twitter', { + failureRedirect: '/signup', + session: false + })) + .get('/callback', passport.authenticate('twitter', { + failureRedirect: '/signup', + session: false + }), setTokenCookie); export default router; diff --git a/server/auth/twitter/passport.js b/server/auth/twitter/passport.js index 4b4f289..e44f8a8 100644 --- a/server/auth/twitter/passport.js +++ b/server/auth/twitter/passport.js @@ -2,31 +2,31 @@ import passport from 'passport'; import {Strategy as TwitterStrategy} from 'passport-twitter'; export function setup(User, config) { - passport.use(new TwitterStrategy({ - consumerKey: config.twitter.clientID, - consumerSecret: config.twitter.clientSecret, - callbackURL: config.twitter.callbackURL - }, - function(token, tokenSecret, profile, done) { - User.findOneAsync({ - 'twitter.id_str': profile.id - }) - .then(user => { - if (user) { - return done(null, user); - } + passport.use(new TwitterStrategy({ + consumerKey: config.twitter.clientID, + consumerSecret: config.twitter.clientSecret, + callbackURL: config.twitter.callbackURL + }, + function(token, tokenSecret, profile, done) { + User.findOneAsync({ + 'twitter.id_str': profile.id + }) + .then(user => { + if (user) { + return done(null, user); + } - user = new User({ - name: profile.displayName, - username: profile.username, - role: 'user', - provider: 'twitter', - twitter: profile._json - }); - user.saveAsync() - .then(user => done(null, user)) - .catch(err => done(err)); - }) - .catch(err => done(err)); - })); + user = new User({ + name: profile.displayName, + username: profile.username, + role: 'user', + provider: 'twitter', + twitter: profile._json + }); + user.saveAsync() + .then(user => done(null, user)) + .catch(err => done(err)); + }) + .catch(err => done(err)); + })); } diff --git a/server/config/express.js b/server/config/express.js index beb0245..023f17e 100644 --- a/server/config/express.js +++ b/server/config/express.js @@ -21,32 +21,32 @@ import mongoose from 'mongoose'; var mongoStore = connectMongo(session); export default function(app) { - var env = app.get('env'); - app.set('views', config.root + '/server/views'); - app.engine('html', require('ejs').renderFile); - app.set('view engine', 'html'); - app.use(compression()); - app.use(bodyParser.urlencoded({ extended: false })); - app.use(bodyParser.json()); - app.use(methodOverride()); - app.use(cookieParser()); - app.use(passport.initialize()); + var env = app.get('env'); + app.set('views', config.root + '/server/views'); + app.engine('html', require('ejs').renderFile); + app.set('view engine', 'html'); + app.use(compression()); + app.use(bodyParser.urlencoded({ extended: false })); + app.use(bodyParser.json()); + app.use(methodOverride()); + app.use(cookieParser()); + app.use(passport.initialize()); - app.use(session({ - secret: config.secrets.session, - saveUninitialized: true, - resave: false, - store: new mongoStore({ - mongooseConnection: mongoose.connection, - db: 'empty-api' - }) - })); + app.use(session({ + secret: config.secrets.session, + saveUninitialized: true, + resave: false, + store: new mongoStore({ + mongooseConnection: mongoose.connection, + db: 'empty-api' + }) + })); - if ('development' === env) { - app.use(require('connect-livereload')()); - } - if ('development' === env || 'test' === env) { - app.use(morgan('dev')); - app.use(errorHandler()); // Error handler - has to be last - } + if ('development' === env) { + app.use(require('connect-livereload')()); + } + if ('development' === env || 'test' === env) { + app.use(morgan('dev')); + app.use(errorHandler()); // Error handler - has to be last + } } diff --git a/server/config/socketio.js b/server/config/socketio.js index d9dfc95..4d6d124 100644 --- a/server/config/socketio.js +++ b/server/config/socketio.js @@ -9,41 +9,41 @@ import config from './config'; var socketed = function(socketio) { - socketio.on('connection', function(socket) { - socket.address = socket.request.connection.remoteAddress + - ':' + socket.request.connection.remotePort; + socketio.on('connection', function(socket) { + socket.address = socket.request.connection.remoteAddress + + ':' + socket.request.connection.remotePort; - socket.connectedAt = new Date(); + socket.connectedAt = new Date(); - socket.log = function(...data) { - console.log('SocketIO ${socket.nsp.name} [${socket.address}]', ...data); - }; + socket.log = function(...data) { + console.log('SocketIO ${socket.nsp.name} [${socket.address}]', ...data); + }; - // Call onDisconnect. - socket.on('disconnect', () => { - onDisconnect(socket); - socket.log('DISCONNECTED'); - }); + // Call onDisconnect. + socket.on('disconnect', () => { + onDisconnect(socket); + socket.log('DISCONNECTED'); + }); - // Call onConnect. - onConnect(socket); - socket.log('CONNECTED'); + // Call onConnect. + onConnect(socket); + socket.log('CONNECTED'); - // When the user disconnects.. perform this - function onDisconnect(socket) { - } + // When the user disconnects.. perform this + function onDisconnect(socket) { + } function onConnect(socket) { - // When the client emits 'info', this listens and executes - socket.on('info', data => { - socket.log(JSON.stringify(data, null, 2)); - }); + // When the client emits 'info', this listens and executes + socket.on('info', data => { + socket.log(JSON.stringify(data, null, 2)); + }); - // Insert sockets below - require('../api/thing/thing.socket').register(socket); + // Insert sockets below + require('../api/thing/thing.socket').register(socket); } - }); + }); } export default socketed; diff --git a/server/index.js b/server/index.js index 11304a2..0121879 100644 --- a/server/index.js +++ b/server/index.js @@ -1,7 +1,2 @@ 'use strict'; - -var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; -/*if (env === 'development' || env === 'test') { - require('babel-core/register'); -}*/ exports = module.exports = require('./app'); diff --git a/server/libs/core/loader.handlebars.js b/server/libs/core/loader.handlebars.js index d59b338..b017b76 100644 --- a/server/libs/core/loader.handlebars.js +++ b/server/libs/core/loader.handlebars.js @@ -30,9 +30,9 @@ class HandlebarsLoader { throw err; } - }); - return deferred.promise; -} + }); + return deferred.promise; + } diff --git a/server/routes.js b/server/routes.js index 3662ce0..ec3dd6d 100644 --- a/server/routes.js +++ b/server/routes.js @@ -1,10 +1,8 @@ 'use strict'; -import path from 'path'; - export default function(app) { - //Api - app.use('/api/things', require('./api/thing')); - app.use('/api/users', require('./api/user')); - //Authorization - app.use('/auth', require('./auth')); + //Api + app.use('/api/things', require('./api/thing')); + app.use('/api/users', require('./api/user')); + //Authorization + app.use('/auth', require('./auth')); }