def login(jwt): # get some data from the json request username, password = json.request('username', 'password') is_valid = lambda username, password: username and username == password if is_valid(username, password): token = jwt.encode({'username': username}).decode('utf8') response = json.response({'message': 'logged in', 'token': token}) response.set_cookie('token', token, httponly=True) return response else: return json.response({'message': 'invalid username/password'}, status=401)
def jwt_context(jwt): encoded = request.cookies.get('token') if encoded != None: data = jwt.decode(encoded) context.username = data['username'] else: yield json.response({'message': 'must be logged in!'}, status=403)
def catch(): """ render APIException to JSON """ try: response = yield except APIException as exception: yield json.response({'message': exception.message}, status=exception.status)
def logout(username): response = json.response({'message': 'logged out'}) response.set_cookie('token', '', expires=0, httponly=True) response.headers['Location'] = '/' response.status_code = 307 return response
def index(): return json.response({'madness': True}, status=200)
def describe(): return json.response({"version": "0.0.1"})