Skip to content
Snippets Groups Projects
auth_guard.py 1.33 KiB
Newer Older
from functools import wraps

from areas.roles.role_service import RoleService
from helpers import Unauthorized
from flask import request
Davor's avatar
Davor committed
from flask_jwt_extended import get_jwt, verify_jwt_in_request
Davor's avatar
Davor committed

def admin_required():
    def wrapper(fn):
        @wraps(fn)
        def decorator(*args, **kwargs):
            verify_jwt_in_request()
            claims = get_jwt()
            user_id = claims["user_id"]
            is_admin = RoleService.is_user_admin(user_id)
            if is_admin:
                return fn(*args, **kwargs)
            else:
Davor's avatar
Davor committed
                raise Unauthorized("You need to have admin permissions.")
Davor's avatar
Davor committed
    return wrapper

def kratos_webhook():
    def wrapper(fn):
        @wraps(fn)
        def decorator(*args, **kwargs):
            header = request.headers.get("Authorization")
            # TO DO: uncomment line below once merged to main
            # if header is not None and header == os.environ.get("KRATOS_WEBHOOK_SECRET"):
            # TO DO: remove line below once merged to main
            if header is not None and header == os.environ.get("KRATOS_WEBHOOK_SECRET", "test-kratos-hooks-remove-before-merge"):
                return fn(*args, **kwargs)
            else:
                raise Unauthorized("This needs a valid api key.")

        return decorator

    return wrapper