From 4ace1feb5fc8beb93c8bede61e4013bc93122a2a Mon Sep 17 00:00:00 2001 From: Andrew Shao <132319777+andrewshaodev@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:08:56 -0400 Subject: [PATCH 1/2] Add BaseUser import from piccolo.apps.user.tables Imported BaseUser from piccolo.apps.user.tables for use in authentication and JWT middleware integration. This enables the app to validate users against the default Piccolo user table when protecting routes with JWTMiddleware. --- docs/source/jwt/examples/example.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/jwt/examples/example.py b/docs/source/jwt/examples/example.py index 4f6377c3..bfe70b09 100644 --- a/docs/source/jwt/examples/example.py +++ b/docs/source/jwt/examples/example.py @@ -7,6 +7,7 @@ from piccolo_api.fastapi.endpoints import FastAPIKwargs, FastAPIWrapper from piccolo_api.jwt_auth.endpoints import jwt_login from piccolo_api.jwt_auth.middleware import JWTBlacklist, JWTMiddleware +from piccolo.apps.user.tables import BaseUser from starlette.routing import Mount, Route public_app = FastAPI( From a9ac18a31018916da9d151c91c21d5007db732a2 Mon Sep 17 00:00:00 2001 From: Daniel Townsend Date: Wed, 18 Jun 2025 10:52:47 +0100 Subject: [PATCH 2/2] move table import to bottom --- docs/source/jwt/examples/example.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/source/jwt/examples/example.py b/docs/source/jwt/examples/example.py index bfe70b09..86621d96 100644 --- a/docs/source/jwt/examples/example.py +++ b/docs/source/jwt/examples/example.py @@ -1,7 +1,6 @@ from datetime import timedelta from fastapi import FastAPI, Request -from home.tables import Movie # An example Table from piccolo_admin.endpoints import create_admin from piccolo_api.crud.endpoints import PiccoloCRUD from piccolo_api.fastapi.endpoints import FastAPIKwargs, FastAPIWrapper @@ -10,6 +9,9 @@ from piccolo.apps.user.tables import BaseUser from starlette.routing import Mount, Route +from home.tables import Movie # An example Table + + public_app = FastAPI( routes=[ Mount( @@ -55,6 +57,7 @@ async def in_blacklist(self, token: str) -> bool: public_app.mount("/private", protected_app) + # This is optional if you want to provide a logout endpoint # in your application. By adding a token to the token blacklist, # you are invalidating the token and need to login again to get