mirror of
https://github.com/dancojocaru2000/foxbank.git
synced 2025-02-22 23:39:36 +02:00
Add logout
This commit is contained in:
parent
be0b22cbed
commit
b390bfc5c4
3 changed files with 26 additions and 1 deletions
12
server/decorators.py
Normal file
12
server/decorators.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
from http import HTTPStatus
|
||||||
|
from functools import wraps
|
||||||
|
|
||||||
|
def no_content(fn):
|
||||||
|
@wraps(fn)
|
||||||
|
def wrapper(*args, **kargs):
|
||||||
|
result = fn(*args, **kargs)
|
||||||
|
if result is None:
|
||||||
|
return None, HTTPStatus.NO_CONTENT
|
||||||
|
else:
|
||||||
|
return result
|
||||||
|
return wrapper
|
|
@ -4,6 +4,7 @@ from flask import Blueprint, request
|
||||||
from pyotp import TOTP
|
from pyotp import TOTP
|
||||||
|
|
||||||
import db_utils
|
import db_utils
|
||||||
|
from decorators import no_content
|
||||||
import models
|
import models
|
||||||
import ram_db
|
import ram_db
|
||||||
import returns
|
import returns
|
||||||
|
@ -41,9 +42,15 @@ def ensure_logged_in(fn):
|
||||||
user_id = ram_db.get_user(token)
|
user_id = ram_db.get_user(token)
|
||||||
if user_id is None:
|
if user_id is None:
|
||||||
return returns.INVALID_AUTHORIZATION
|
return returns.INVALID_AUTHORIZATION
|
||||||
return fn(user_id=user_id, *args, **kargs)
|
return fn(user_id=user_id, token=token, *args, **kargs)
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
@login.post('/logout')
|
||||||
|
@ensure_logged_in
|
||||||
|
@no_content
|
||||||
|
def logout(token: str):
|
||||||
|
ram_db.logout_user(token)
|
||||||
|
|
||||||
@login.get('/whoami')
|
@login.get('/whoami')
|
||||||
@ensure_logged_in
|
@ensure_logged_in
|
||||||
def whoami(user_id):
|
def whoami(user_id):
|
||||||
|
|
|
@ -14,10 +14,16 @@ def login_user(user_id: int) -> str:
|
||||||
token = str(uuid4())
|
token = str(uuid4())
|
||||||
if len(USED_TOKENS) > 10_000_000:
|
if len(USED_TOKENS) > 10_000_000:
|
||||||
USED_TOKENS.clear()
|
USED_TOKENS.clear()
|
||||||
|
for token in LOGGED_IN_USERS:
|
||||||
|
USED_TOKENS.add(token)
|
||||||
USED_TOKENS.add(token)
|
USED_TOKENS.add(token)
|
||||||
LOGGED_IN_USERS[token] = user_id, datetime.now()
|
LOGGED_IN_USERS[token] = user_id, datetime.now()
|
||||||
return token
|
return token
|
||||||
|
|
||||||
|
def logout_user(token: str):
|
||||||
|
if token in LOGGED_IN_USERS:
|
||||||
|
del LOGGED_IN_USERS[token]
|
||||||
|
|
||||||
def get_user(token: str) -> int | None:
|
def get_user(token: str) -> int | None:
|
||||||
if token not in LOGGED_IN_USERS:
|
if token not in LOGGED_IN_USERS:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Add table
Reference in a new issue