pal-e-auth
Shared JWT + Google OAuth auth middleware for pal-e platform services.
Install
pip install pal-e-auth-ldraney
Quick Start
from fastapi import FastAPI, Depends
from pal_e_auth import AuthConfig, auth_router, get_current_user, require_role, User
app = FastAPI()
config = AuthConfig(
secret_key="your-jwt-secret",
google_client_id="your-google-client-id",
google_client_secret="your-google-client-secret",
)
app.state.auth_config = config
app.include_router(auth_router(config))
@app.get("/protected")
async def protected(user: User = Depends(get_current_user)):
return {"email": user.email}
@app.get("/admin-only")
async def admin_only(user: User = Depends(require_role("admin"))):
return {"email": user.email}
Auth Flow
- User visits
/auth/google→ redirected to Google consent screen - Google redirects back to
/auth/callbackwith auth code - Server exchanges code for ID token, extracts user info
- JWT created and set as
access_tokencookie - Subsequent requests authenticated via cookie or
Authorization: Bearerheader
Dependencies
FastAPI apps provide auth by reading app.state.auth_config:
get_current_user— requires valid JWT, returnsUseroptional_user— returnsUser | Nonerequire_role("admin", "coach")— requires valid JWT + matching role
Roles
admin, coach, parent, viewer (default)
Development
poetry install
poetry run pytest
poetry run ruff check .
poetry run ruff format --check .
Metadata
Release files for pal-e-auth-ldraney 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pal_e_auth_ldraney-0.1.0.tar.gz | 5.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pal_e_auth_ldraney-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.6 kB
Release files / pal_e_auth_ldraney-0.1.0.tar.gz
| Download URL | pal_e_auth_ldraney-0.1.0.tar.gz |
|---|---|
| Size | 5.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e0014365418b0db7010d89dbfc658e3ed2a9369bace04eff4e718992b4e0d1aa
|
|
BLAKE2b-256 checksum How to use checksums |
d27b18419d9bd69aff587a352e9e21e0fa92ff913346f17b8573a80f44435d71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / pal_e_auth_ldraney-0.1.0-py3-none-any.whl
| Download URL | pal_e_auth_ldraney-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d07afe731aa8703edd839ccd4e1247c8f6d631ac650b2883266592f15767276a
|
|
BLAKE2b-256 checksum How to use checksums |
8154c63eb58ae5e33de274c89ecf56b2c7756bc58a3d9831699097dd6639154b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|