|
|
|
|
@ -16,6 +16,8 @@ cur = con.cursor() # NB! single is enough for now, we might require multiple la
|
|
|
|
|
async def new_session():
|
|
|
|
|
"""Start a new session"""
|
|
|
|
|
# add session to the database
|
|
|
|
|
tries = 3 # something is very wrong with our random, if we miss 3 times
|
|
|
|
|
for i in range(tries):
|
|
|
|
|
try:
|
|
|
|
|
# generate a cookie
|
|
|
|
|
cookie = uuid4().hex
|
|
|
|
|
@ -27,8 +29,13 @@ async def new_session():
|
|
|
|
|
)
|
|
|
|
|
con.commit()
|
|
|
|
|
except sqlite3.IntegrityError as e:
|
|
|
|
|
if str(e) == "UNIQUE constraint failed: sessions.cookie":
|
|
|
|
|
if i < tries - 1 and str(e) == "UNIQUE constraint failed: sessions.cookie":
|
|
|
|
|
continue
|
|
|
|
|
else if str(e) == "UNIQUE constraint failed: sessions.cookie":
|
|
|
|
|
return {"cookie": "error"}
|
|
|
|
|
else:
|
|
|
|
|
raise
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
# return new session cookie
|
|
|
|
|
return {"cookie": cookie}
|
|
|
|
|
|