]> git.cworth.org Git - empires-server/blobdiff - lmno.js
empires: Add an initial "choose nickname" step before joining a game
[empires-server] / lmno.js
diff --git a/lmno.js b/lmno.js
index abcdba2ef220bd6aff8375bb3190d0cfbc87c727..c990cac3a290be99bf16d57f7d581442970bf4f4 100644 (file)
--- a/lmno.js
+++ b/lmno.js
@@ -4,6 +4,7 @@ const body_parser = require("body-parser");
 const session = require("express-session");
 const bcrypt = require("bcrypt");
 const path = require("path");
+const nunjucks = require("nunjucks");
 
 try {
   var lmno_config = require("./lmno-config.json");
@@ -40,6 +41,11 @@ app.use(session({
   saveUninitialized: false
 }));
 
+nunjucks.configure("templates", {
+  autoescape: true,
+  express: app
+});
+
 /* Load each of our game mini-apps. */
 var empires = require("./empires");
 
@@ -174,6 +180,7 @@ function auth_admin(request, response, next) {
 
 app.get('/logout', (request, response) => {
   request.session.user = undefined;
+  request.session.destroy();
 
   response.send("You are now logged out.");
 });
@@ -184,7 +191,7 @@ app.get('/login', (request, response) => {
     return;
   }
 
-  response.sendFile(path.join(__dirname, './login.html'));
+  response.render('login.html');
 });
 
 app.post('/login', async (request, response) => {
@@ -205,19 +212,28 @@ app.post('/login', async (request, response) => {
   return;
 });
 
-/* A stats page (only available to admin users) */
-app.get('/stats/', auth_admin, (request, response) => {
-  let active = 0;
-  let idle = 0;
+/* API to set uer profile information */
+app.put('/profile', (request, response) => {
+  const nickname = request.body.nickname;
+  if (nickname) {
+    request.session.nickname = nickname;
+    request.session.save();
+  }
+  response.send();
+});
+
+/* An admin page (only available to admin users, of course) */
+app.get('/admin/', auth_admin, (request, response) => {
+  let active = [];
+  let idle = [];
 
   for (let id in lmno.ids) {
     if (lmno.ids[id].game.clients.length)
-      active++;
-   else
-      idle++;
+      active.push(lmno.ids[id]);
+    else
+      idle.push(lmno.ids[id]);
   }
-  response.send(`<html><body>Active games: ${active}.<br>
-Idle games: ${idle}</body></html>`);
+  response.render('admin.html', { test: "foobar", games: { active: active, idle: idle}});
 });