NXPR-3 WIP
parent
637b4d88e2
commit
2ccc2e82a3
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
from . import auth
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,45 @@
|
||||
from functools import wraps
|
||||
import jwt
|
||||
from flask import request, abort
|
||||
from flask import current_app
|
||||
from utils.models.models import User
|
||||
from utils.database.database import Database
|
||||
|
||||
# Inspired by: https://blog.loginradius.com/engineering/guest-post/securing-flask-api-with-jwt/ [access: 16.11.2022, 18:33 CET]
|
||||
|
||||
|
||||
def require_auth(f):
|
||||
@wraps(f)
|
||||
def decorated(*args, **kwargs):
|
||||
token = None
|
||||
if "Authorization" in request.headers:
|
||||
token = request.headers["Authorization"].split(" ")[1]
|
||||
if not token:
|
||||
return {
|
||||
"message": "Missing auth token",
|
||||
"data": None,
|
||||
"error": "Unauthorized"
|
||||
}, 401
|
||||
try:
|
||||
database = Database(
|
||||
database_file=current_app.config["DATABASE_FILE"], logging_level=current_app.config["LOGGING_LEVEL"])
|
||||
user_data_from_request = jwt.decode(
|
||||
token, current_app.config["SECRET_KEY"], algorithms=["HS256"])
|
||||
request_user = database.get_user_by_name(
|
||||
username=user_data_from_request["username"])
|
||||
if request_user is None:
|
||||
return {
|
||||
"message": "Invalid auth token",
|
||||
"data": None,
|
||||
"error": "Unauthorized"
|
||||
}, 403
|
||||
except Exception as ex:
|
||||
return {
|
||||
"message": "Internal server error",
|
||||
"data": None,
|
||||
"error": str(ex)
|
||||
}, 500
|
||||
|
||||
return f(request_user, *args, **kwargs)
|
||||
|
||||
return decorated
|
Binary file not shown.
Loading…
Reference in New Issue