def authenticate()

in api/PclusterApiHandler.py [0:0]


def authenticate(groups):
    if disable_auth():
        return

    access_token = request.cookies.get("accessToken")
    if not access_token:
        return abort(401)

    try:
        decoded = jwt_decode(access_token)
    except jwt.ExpiredSignatureError:
        refresh_token = request.cookies.get('refreshToken', None)
        if refresh_token is None:
            return abort(401)

        tokens = refresh_tokens(refresh_token)
        decoded = jwt_decode(tokens['accessToken'])
        set_auth_cookies_in_context(tokens)
    except Exception as e:
        return abort(401)

    if (not groups):
        return abort(403)
        
    jwt_roles = set(decoded.get(USER_ROLES_CLAIM, []))
    groups_granted = groups.intersection(jwt_roles)
    if len(groups_granted) == 0:
        return abort(403)