From ad19eb8875ffe5e4ad567e46e71016bf02091e2b Mon Sep 17 00:00:00 2001
From: Nils G <nils.gondermann@ruhr-uni-bochum.de>
Date: Mon, 13 Apr 2020 15:06:34 +0200
Subject: [PATCH] Set cookie with user id and hash on room enter

---
 controllers/player.py    | 11 ++++++++---
 modules/cookie_util.py   |  5 +++++
 modules/http_util.py     |  4 ++++
 views/default/index.html |  6 ++++--
 4 files changed, 21 insertions(+), 5 deletions(-)
 create mode 100644 modules/cookie_util.py

diff --git a/controllers/player.py b/controllers/player.py
index f735b81..86b467c 100644
--- a/controllers/player.py
+++ b/controllers/player.py
@@ -1,6 +1,7 @@
 from parameter_util import JSON_BODY, JSON_CONTAINS
-from http_util import FAIL, CODE_JSON, CODE_MISSING, CODE_SEMANTIC, CODE_GONE, CODE_NOTFOUND, CODE_CONFLICT
+from http_util import FAIL, SUCCESS, CODE_JSON, CODE_MISSING, CODE_SEMANTIC, CODE_GONE, CODE_NOTFOUND, CODE_CONFLICT
 from room_util import ROOM_GET_CODE, PLAYERS_GET
+from cookie_util import COOKIE_SET
 
 def create():
     parameters = JSON_BODY(request)
@@ -28,5 +29,9 @@ def create():
         if player["name"] == user_name:
             return(FAIL(CODE_CONFLICT))
 
-    db.Player.insert(name=user_name, room_id=room_record.id)
-    return(200)
+    player_id = db.Player.insert(name=user_name, room_id=room_record.id)
+    player_record = db(db.Player.id == player_id).select().first()
+
+    COOKIE_SET(player_record)
+
+    return(SUCCESS())
diff --git a/modules/cookie_util.py b/modules/cookie_util.py
new file mode 100644
index 0000000..677c343
--- /dev/null
+++ b/modules/cookie_util.py
@@ -0,0 +1,5 @@
+from gluon import *
+
+def COOKIE_SET(_player):
+    current.response.cookies["lynchburg_id"] = _player["id"]
+    current.response.cookies["lynchburg_hash"] = _player["hashcode"]
diff --git a/modules/http_util.py b/modules/http_util.py
index 99571d5..dd90ad4 100644
--- a/modules/http_util.py
+++ b/modules/http_util.py
@@ -10,3 +10,7 @@ CODE_SEMANTIC = 422
 def FAIL(_code):
     current.response.status = _code
     return(_code)
+
+def SUCCESS():
+    current.response.status = 200
+    return(200)
diff --git a/views/default/index.html b/views/default/index.html
index 6a09b1f..17da2c1 100644
--- a/views/default/index.html
+++ b/views/default/index.html
@@ -16,7 +16,9 @@
 {{block page_js}}
 <script type="text/javascript">
     $("#form_login").on("submit", function(){
-        $("#form_login_error").html();
+
+        $("#form_login_error").html("");
+
         var payload = {"room_code": $("#room_code").val(), "user_name": $("#user_name").val()}
         AJAX_JSON("{{=URL('player', 'create')}}", payload, function(_code, _data){
 
@@ -33,7 +35,7 @@
                     $("#form_login_error").html("Please provide valid values.");
                     break;
                 default:
-                    $("#form_login_error").html("Error");
+                    $("#form_login_error").html("Error "+_code);
             }
 
         });
-- 
GitLab