@resin/pinejs
Version:
Pine.js is a sophisticated rules-driven API engine that enables you to define rules in a structured subset of English. Those rules are used in order for Pine.js to generate a database schema and the associated [OData](http://www.odata.org/) API. This make
93 lines • 3.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Pinejs = require("./module");
const Promise = require("bluebird");
const passportPinejs = require("../passport-pinejs/passport-pinejs");
exports.sbvrUtils = require('../sbvr-api/sbvr-utils');
exports.PinejsSessionStore = require('../pinejs-session-store/pinejs-session-store');
const express = require("express");
const app = express();
switch (app.get('env')) {
case 'production':
console.log = () => { };
break;
case 'development':
Promise.longStackTraces();
}
if (!process.browser) {
const passport = require('passport');
const path = require('path');
const compression = require('compression');
const serveStatic = require('serve-static');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const multer = require('multer');
const methodOverride = require('method-override');
const expressSession = require('express-session');
app.use(compression());
const root = process.argv[2] || __dirname;
app.use('/', serveStatic(path.join(root, 'static')));
app.use(cookieParser());
app.use(bodyParser());
app.use(multer().any());
app.use(methodOverride());
app.use(expressSession({
secret: 'A pink cat jumped over a rainbow',
store: new exports.PinejsSessionStore(),
}));
app.use(passport.initialize());
app.use(passport.session());
app.use((req, res, next) => {
const origin = req.get('Origin') || '*';
res.header('Access-Control-Allow-Origin', origin);
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, PATCH, DELETE, OPTIONS, HEAD');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Application-Record-Count, MaxDataServiceVersion, X-Requested-With');
res.header('Access-Control-Allow-Credentials', 'true');
next();
});
app.use((req, _res, next) => {
console.log('%s %s', req.method, req.url);
next();
});
}
exports.initialised = Pinejs.init(app)
.then((configLoader) => Promise.all([
configLoader.loadConfig(passportPinejs.config),
configLoader.loadConfig(exports.PinejsSessionStore.config),
])).then(() => {
if (typeof process === 'undefined' || process == null || !process.env.DISABLE_DEFAULT_AUTH) {
app.post('/login', passportPinejs.login((err, user, req, res) => {
if (err) {
console.error('Error logging in', err, err.stack);
res.sendStatus(500);
}
else if (user === false) {
if (req.xhr === true) {
res.sendStatus(401);
}
else {
res.redirect('/login.html');
}
}
else {
if (req.xhr === true) {
res.sendStatus(200);
}
else {
res.redirect('/');
}
}
}));
app.get('/logout', passportPinejs.logout, (_req, res) => {
res.redirect('/');
});
}
}).then(() => {
app.listen(process.env.PORT || 1337, () => {
console.info('Server started');
});
}).catch((err) => {
console.error('Error initialising server', err, err.stack);
process.exit(1);
});
//# sourceMappingURL=server.js.map