module.exports = function(server) { server.use(serveStatic("client")); // Only serve modules if we're not in production if(process.env.NODE_ENV !== "production") { server.use('/modules', serveStatic("modules")); } server.set("view engine", "ejs"); server.set("views", path.join(__dirname, "..", "views")); server.use(compression({ threshold: 512 })); server.use(bodyParser.json({limit: "1mb"})); server.use(methodOverride()); server.use(loopback.favicon()); server.use(loopback.context()); server.middleware('auth', loopback.token({ model: server.models.AccessToken })); };
module.exports = function base(app) { var loopback = require('loopback') app.middleware('initial', loopback.favicon()); app.middleware('initial', loopback.compress()); app.middleware('session', loopback.session({ saveUninitialized: true, resave: true, secret: 'nasa' })); app.middleware('parse', loopback.json()); app.middleware('parse', loopback.urlencoded({ extended: false })); app.middleware('parse', loopback.cookieParser()); };
var loopback = require('loopback'); var boot = require('loopback-boot'); var path = require('path'); var file = [ './config', process.env.NODE_ENV ? process.env.NODE_ENV : 'development' ].join('.'); var config = require('confert')(file); var app = module.exports = loopback(); // Set up the /favicon.ico app.use(loopback.favicon()); // request pre-processing middleware app.use(loopback.compress()); // -- Add your pre-processing middleware here -- // Set app root dir (expects boot to be present there) config.appRootDir = __dirname; // boot scripts mount components like REST API boot(app, config); if(!app.get('storage')) { throw Error('Storage not set'); } // Setup storage, can actually put this in boot/ I guess var storage = app.get('storage'); storage.connector = require('loopback-component-storage');
var fileContents = fs.readFileSync(__dirname + '/datasources_template.json', 'utf8'); fileContents = fileContents.replace(/MONGO_HOST_ADDR/g, mongoAddr); fileContents = fileContents.replace(/MONGO_HOST_PORT/g, mongoPort); fs.writeFileSync(__dirname + '/datasources.json', fileContents); */ var loopback = require('loopback'); var boot = require('loopback-boot'); var path = require('path'); var app = module.exports = loopback(); var env = require('get-env')({ test: 'test' }); // Set up the /favicon.ico app.use(loopback.favicon(path.join(__dirname, 'waveicon16.png'))); // request pre-processing middleware app.use(loopback.compress()); // -- Add your pre-processing middleware here -- // boot scripts mount components like REST API boot(app, __dirname); // -- Mount static files here-- // All static middleware should be registered at the end, as all requests // passing the static middleware are hitting the file system // Example:
boot(app, __dirname, function(err) { if (err) throw err; // // I would prefer that this code was somewhere else (../boot/passport.js ?) // I think it could be important that the code is "after" boot, or at a specific point in boot. // "work in progress" I follow the yellow brick road from googling... // // Passport configurators.. var loopbackPassport = require('loopback-component-passport'); var PassportConfigurator = loopbackPassport.PassportConfigurator; var passportConfigurator = new PassportConfigurator(app); /* * body-parser is a piece of express middleware that * reads a form's input and stores it as a javascript * object accessible through `req.body` * */ var bodyParser = require('body-parser'); /** * Flash messages for passport * * Setting the failureFlash option to true instructs Passport to flash an * error message using the message given by the strategy's verify callback, * if any. This is often the best approach, because the verify callback * can make the most accurate determination of why authentication failed. */ var flash = require('express-flash'); // attempt to build the providers/passport config var config = {}; try { config = require('../providers.json'); } catch (err) { console.trace(err); process.exit(1); // fatal } // Set up the /favicon.ico app.use(loopback.favicon()); // request pre-processing middleware app.use(loopback.compress()); // -- Add your pre-processing middleware here -- // Setup the view engine (jade) var path = require('path'); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // boot scripts mount components like REST API boot(app, __dirname); // to support JSON-encoded bodies app.use(bodyParser.json()); // to support URL-encoded bodies app.use(bodyParser.urlencoded({ extended: true })); // The access token is only available after boot app.use(loopback.token({ model: app.models.accessToken })); app.use(loopback.cookieParser(app.get('cookieSecret'))); app.use(loopback.session({ secret: 'kitty', saveUninitialized: true, resave: true })); passportConfigurator.init(); // We need flash messages to see passport errors app.use(flash()); //console.log("NO setupModels at the moment"); passportConfigurator.setupModels({ userModel: app.models.user, userIdentityModel: app.models.userIdentity, userCredentialModel: app.models.userCredential }); for (var s in config) { var c = config[s]; c.session = c.session !== false; passportConfigurator.configureProvider(s, c); } var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn; app.get('/', function (req, res, next) { res.render('pages/index', {user: req.user, url: req.url }); }); app.get('/auth/account', ensureLoggedIn('/login.html'), function (req, res, next) { res.render('pages/loginProfiles', { user: req.user, url: req.url }); }); app.get('/link/account', ensureLoggedIn('/login.html'), function (req, res, next) { res.render('pages/linkedAccounts', { user: req.user, url: req.url }); }); app.get('/local', function (req, res, next){ res.render('pages/local', { user: req.user, url: req.url }); }); app.get('/signup', function (req, res, next){ res.render('pages/signup', { user: req.user, url: req.url }); }); app.post('/signup', function (req, res, next) { var User = app.models.user; var newUser = {}; newUser.email = req.body.email.toLowerCase(); newUser.username = req.body.username.trim(); newUser.password = req.body.password; User.create(newUser, function (err, user) { if (err) { req.flash('error', err.message); return res.redirect('back'); } else { // Passport exposes a login() function on req (also aliased as logIn()) // that can be used to establish a login session. This function is // primarily used when users sign up, during which req.login() can // be invoked to log in the newly registered user. req.login(user, function (err) { if (err) { req.flash('error', err.message); return res.redirect('back'); } return res.redirect('/auth/account'); }); } }); }); app.get('/login', function (req, res, next){ res.render('pages/login', { user: req.user, url: req.url }); }); app.get('/link', function (req, res, next){ res.render('pages/link', { user: req.user, url: req.url }); }); app.get('/auth/logout', function (req, res, next) { req.logout(); res.redirect('/'); }); // -- Mount static files here-- // All static middleware should be registered at the end, as all requests // passing the static middleware are hitting the file system // Example: var path = require('path'); app.use(loopback.static(path.resolve(__dirname, '../client/public'))); // Requests that get this far won't be handled // by any middleware. Convert them into a 404 error // that will be handled later down the chain. app.use(loopback.urlNotFound()); // The ultimate error handler. app.use(loopback.errorHandler()); // start the server if `$ node server.js` if (require.main === module) app.start(); });
var http = require('http'); var https = require('https'); var path = require('path'); var httpsRedirect = require('./middleware/https-redirect'); var site = require('./site'); var sslCert = require('./private/ssl_cert'); var httpsOptions = { key: sslCert.privateKey, cert: sslCert.certificate }; var app = module.exports = loopback(); // Set up the /favicon.ico app.middleware('initial', loopback.favicon()); // request pre-processing middleware app.middleware('initial', loopback.compress()); app.middleware('session', loopback.session({ saveUninitialized: true, resave: true, secret: 'keyboard cat' })); // -- Add your pre-processing middleware here -- // boot scripts mount components like REST API boot(app, __dirname); // Redirect http requests to https var httpsPort = app.get('https-port'); app.middleware('routes', httpsRedirect({httpsPort: httpsPort}));