rename getOppCol into static GetOppCol + start thinking about problems page
[vchess.git] / app.js
diff --git a/app.js b/app.js
index e32ef39..e63aca4 100644 (file)
--- a/app.js
+++ b/app.js
@@ -5,8 +5,7 @@ var cookieParser = require('cookie-parser');
 var logger = require('morgan');
 var sassMiddleware = require('node-sass-middleware');
 var favicon = require('serve-favicon');
-
-var router = require('./routes/all');
+var UserModel = require(path.join(__dirname, "models", "User"));
 
 var app = express();
 
@@ -27,6 +26,9 @@ else
        }));
 }
 
+// Allow layout.pug to select the right vue file:
+app.locals.development = (app.get('env') === 'development');
+
 // view engine setup
 app.set('views', path.join(__dirname, 'views'));
 app.set('view engine', 'pug');
@@ -42,7 +44,35 @@ app.use(sassMiddleware({
 }));
 app.use(express.static(path.join(__dirname, 'public')));
 
-app.use('/', router);
+// Before showing any page, check + save credentials
+app.use(function(req, res, next) {
+       req.userId = 0; //means "anonymous"
+       res.locals.user = { name: "" }; //"anonymous"
+       if (!req.cookies.token)
+               return next();
+       UserModel.getOne("sessionToken", req.cookies.token, function(err, user) {
+               if (!!user)
+               {
+                       req.userId = user.id;
+                       res.locals.user = {
+                               id: user.id,
+                               name: user.name,
+                               email: user.email,
+                               notify: user.notify,
+                       };
+               }
+               else
+               {
+                       // Token in cookies presumably wrong: erase it
+                       res.clearCookie("token");
+               }
+               next();
+       });
+});
+
+// Routing
+const routes = require(path.join(__dirname, "routes", "all"));
+app.use('/', routes);
 
 // catch 404 and forward to error handler
 app.use(function(req, res, next) {