181 lines
7.0 KiB
HTML
181 lines
7.0 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<title>middleware.js</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
|
<link rel="stylesheet" media="all" href="docco.css" />
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="background"></div>
|
|
|
|
<ul id="jump_to">
|
|
<li>
|
|
<a class="large" href="javascript:void(0);">Jump To …</a>
|
|
<a class="small" href="javascript:void(0);">+</a>
|
|
<div id="jump_wrapper">
|
|
<div id="jump_page">
|
|
|
|
|
|
<a class="source" href="config.html">
|
|
config.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="middleware.html">
|
|
middleware.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="seed.html">
|
|
seed.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="server.html">
|
|
server.js
|
|
</a>
|
|
|
|
|
|
<a class="source" href="utils.html">
|
|
utils.js
|
|
</a>
|
|
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
|
|
<ul class="sections">
|
|
|
|
<li id="title">
|
|
<div class="annotation">
|
|
<h1>middleware.js</h1>
|
|
</div>
|
|
</li>
|
|
|
|
|
|
|
|
<li id="section-1">
|
|
<div class="annotation">
|
|
|
|
<div class="pilwrap ">
|
|
<a class="pilcrow" href="#section-1">¶</a>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="content"><div class='highlight'><pre><span class="keyword">var</span> nconf = require(<span class="string">'nconf'</span>);
|
|
<span class="keyword">var</span> _ = require(<span class="string">'lodash'</span>);
|
|
<span class="keyword">var</span> fs = require(<span class="string">'fs'</span>);
|
|
<span class="keyword">var</span> path = require(<span class="string">'path'</span>);
|
|
|
|
module.exports.forceSSL = <span class="keyword">function</span>(req, res, next){
|
|
<span class="keyword">var</span> baseUrl = nconf.get(<span class="string">"BASE_URL"</span>);</pre></div></div>
|
|
|
|
</li>
|
|
|
|
|
|
<li id="section-2">
|
|
<div class="annotation">
|
|
|
|
<div class="pilwrap ">
|
|
<a class="pilcrow" href="#section-2">¶</a>
|
|
</div>
|
|
<p>Note x-forwarded-proto is used by Heroku & nginx, you'll have to do something different if you're not using those</p>
|
|
|
|
</div>
|
|
|
|
<div class="content"><div class='highlight'><pre> <span class="keyword">if</span> (req.headers[<span class="string">'x-forwarded-proto'</span>] && req.headers[<span class="string">'x-forwarded-proto'</span>] !== <span class="string">'https'</span>
|
|
&& nconf.get(<span class="string">'NODE_ENV'</span>) === <span class="string">'production'</span>
|
|
&& baseUrl.indexOf(<span class="string">'https'</span>) === <span class="number">0</span>) {
|
|
<span class="keyword">return</span> res.redirect(baseUrl + req.url);
|
|
}
|
|
next()
|
|
}
|
|
|
|
module.exports.splash = <span class="keyword">function</span>(req, res, next) {
|
|
<span class="keyword">if</span> (req.url == <span class="string">'/'</span> && !req.headers[<span class="string">'x-api-user'</span>] && !req.headers[<span class="string">'x-api-key'</span>] && !(req.session && req.session.userId))
|
|
<span class="keyword">return</span> res.redirect(<span class="string">'/static/front'</span>)
|
|
next()
|
|
};
|
|
|
|
module.exports.cors = <span class="keyword">function</span>(req, res, next) {
|
|
res.header(<span class="string">"Access-Control-Allow-Origin"</span>, req.headers.origin || <span class="string">"*"</span>);
|
|
res.header(<span class="string">"Access-Control-Allow-Methods"</span>, <span class="string">"OPTIONS,GET,POST,PUT,HEAD,DELETE"</span>);
|
|
res.header(<span class="string">"Access-Control-Allow-Headers"</span>, <span class="string">"Content-Type,Accept,Content-Encoding,X-Requested-With,x-api-user,x-api-key"</span>);
|
|
<span class="keyword">if</span> (req.method === <span class="string">'OPTIONS'</span>) <span class="keyword">return</span> res.send(<span class="number">200</span>);
|
|
<span class="keyword">return</span> next();
|
|
};
|
|
|
|
<span class="keyword">var</span> buildFiles = [];
|
|
|
|
<span class="keyword">var</span> walk = <span class="keyword">function</span>(folder){
|
|
<span class="keyword">var</span> res = fs.readdirSync(folder);
|
|
|
|
res.forEach(<span class="keyword">function</span>(fileName){
|
|
file = folder + <span class="string">'/'</span> + fileName;
|
|
<span class="keyword">if</span>(fs.statSync(file).isDirectory()){
|
|
walk(file);
|
|
}<span class="keyword">else</span>{
|
|
<span class="keyword">var</span> relFolder = path.relative(path.join(__dirname, <span class="string">"/../build"</span>), folder);
|
|
<span class="keyword">var</span> old = fileName.replace(<span class="regexp">/-.{8}(\.[\d\w]+)$/</span>, <span class="string">'$1'</span>);
|
|
|
|
<span class="keyword">if</span>(relFolder){
|
|
old = relFolder + <span class="string">'/'</span> + old;
|
|
fileName = relFolder + <span class="string">'/'</span> + fileName;
|
|
}
|
|
|
|
buildFiles[old] = fileName
|
|
}
|
|
});
|
|
}
|
|
|
|
walk(path.join(__dirname, <span class="string">"/../build"</span>));
|
|
|
|
<span class="keyword">var</span> getBuildUrl = <span class="keyword">function</span>(url){
|
|
console.log(<span class="string">"CALLED "</span>, url)
|
|
<span class="keyword">if</span>(buildFiles[url]) <span class="keyword">return</span> buildFiles[url];
|
|
|
|
<span class="keyword">return</span> filename;
|
|
}
|
|
|
|
module.exports.locals = <span class="keyword">function</span>(req, res, next) {
|
|
res.locals.habitrpg = res.locals.habitrpg || {}
|
|
_.defaults(res.locals.habitrpg, {
|
|
NODE_ENV: nconf.get(<span class="string">'NODE_ENV'</span>),
|
|
IS_MOBILE: <span class="regexp">/Android|webOS|iPhone|iPad|iPod|BlackBerry/i</span>.test(req.header(<span class="string">'User-Agent'</span>)),
|
|
STRIPE_PUB_KEY: nconf.get(<span class="string">'STRIPE_PUB_KEY'</span>),
|
|
getBuildUrl: getBuildUrl
|
|
});
|
|
next()
|
|
}
|
|
<span class="comment">/*</pre></div></div>
|
|
|
|
</li>
|
|
|
|
|
|
<li id="section-3">
|
|
<div class="annotation">
|
|
|
|
<div class="pilwrap ">
|
|
<a class="pilcrow" href="#section-3">¶</a>
|
|
</div>
|
|
<p> translate = (req, res, next) ->
|
|
model = req.getModel()</p>
|
|
<h1>Set locale to bg on dev</h1>
|
|
<h1>model.set '_i18n.locale', 'bg' if process.env.NODE_ENV is "development"</h1>
|
|
<p> next()</p>
|
|
|
|
</div>
|
|
|
|
<div class="content"><div class='highlight'><pre> */</pre></div></div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|