basic JWT generation + rename gameid to game_id

This commit is contained in:
Thomas Rubini 2022-11-29 10:06:15 +01:00
parent 4da6d75913
commit 361ade9abe
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
3 changed files with 36 additions and 13 deletions

View File

@ -3,6 +3,7 @@ import flask
from truthseeker import routes_api
app = flask.Flask("truthseeker")
app.config["SECRET_KEY"] = "temporary secret"
app.register_blueprint(routes_api.api_routes, url_prefix="/api/v1")

View File

@ -1,6 +1,8 @@
import string
import random
import jwt
from datetime import datetime, timedelta
import truthseeker
# Map of all actively running games
# game_lists["game.id"]-> game info linked to that id
@ -22,11 +24,23 @@ class GameInfo:
"""
The game info class stores all information linked to a active game
Game.start_token : str,
Game.id : str, the game identifier of the game
GameInfo.id : str, the game identifier of the game
"""
def __init__(self):
self.start_token = None
self.game_id = None
def gen_jwt(self, username, owner):
return jwt.encode(
payload={
"game_id": self.game_id,
"username": username,
"owner": owner,
"exp": datetime.utcnow() + timedelta(hours = 1) # handled automatically on jwt.decode
},
key=truthseeker.app.config["SECRET_KEY"],
algorithm="HS256"
)
def create_game():
"""
@ -50,7 +64,7 @@ def get_game_info(game_id):
: param game_id : the lenght of the random string
: type game_id : str
: return : The GameInfo Object linked to the gameId
: return : The GameInfo Object linked to the game_id
: return type : GameInfo
"""
if game_id in game_lists:

View File

@ -6,25 +6,33 @@ api_routes = flask.Blueprint("api", __name__)
@api_routes.route("/createGame")
def create_game():
username = flask.request.args.get("username")
if username==None:
response = {}
return {"status": "error, username not set"}
response = {}
response["status"] = "ok"
response["gameId"] = game_functions.create_game().id
game = game_functions.create_game()
response["game_id"] = game.id
response["jwt"] = game.gen_jwt(username=username, owner=True)
return response
@api_routes.route("/getGameInfo")
def get_game_info():
response = {}
gameid = flask.request.args.get("gameid")
if gameid == None:
response["status"] = "No 'gameid' argument"
game_id = flask.request.args.get("game_id")
if game_id == None:
response["status"] = "No 'game_id' argument"
return response
game = game_functions.get_game_info(gameid)
game = game_functions.get_game_info(game_id)
if game == None:
response["status"] = "Game {} does not exist".format(gameid)
response["status"] = "Game {} does not exist".format(game_id)
return response
else:
response["status"] = "ok"
response["gameid"] = gameid
response["game_id"] = game_id
response["token"] = game.start_token
return response