diff --git a/docs/src/full_mongodb.py b/docs/src/full_mongodb.py index f7b84702..9672a014 100644 --- a/docs/src/full_mongodb.py +++ b/docs/src/full_mongodb.py @@ -3,6 +3,7 @@ from fastapi import FastAPI from fastapi_users import FastAPIUsers, models from fastapi_users.authentication import JWTAuthentication from fastapi_users.db import MongoDBUserDatabase +from starlette.requests import Request DATABASE_URL = "mongodb://localhost:27017" SECRET = "SECRET" @@ -41,10 +42,10 @@ app.include_router(fastapi_users.router, prefix="/users", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/docs/src/full_sqlalchemy.py b/docs/src/full_sqlalchemy.py index 6a97235c..1bde9496 100644 --- a/docs/src/full_sqlalchemy.py +++ b/docs/src/full_sqlalchemy.py @@ -5,6 +5,7 @@ from fastapi_users import FastAPIUsers, models from fastapi_users.authentication import JWTAuthentication from fastapi_users.db import SQLAlchemyBaseUserTable, SQLAlchemyUserDatabase from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base +from starlette.requests import Request DATABASE_URL = "sqlite:///./test.db" SECRET = "SECRET" @@ -55,12 +56,12 @@ app.include_router(fastapi_users.router, prefix="/users", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/docs/src/full_tortoise.py b/docs/src/full_tortoise.py index 72121786..d4e57838 100644 --- a/docs/src/full_tortoise.py +++ b/docs/src/full_tortoise.py @@ -3,6 +3,7 @@ from fastapi_users import FastAPIUsers, models from fastapi_users.authentication import JWTAuthentication from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase from tortoise.contrib.starlette import register_tortoise +from starlette.requests import Request DATABASE_URL = "sqlite://./test.db" SECRET = "SECRET" @@ -43,10 +44,10 @@ app.include_router(fastapi_users.router, prefix="/users", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/docs/src/oauth_full_mongodb.py b/docs/src/oauth_full_mongodb.py index 768cc88f..5b0724ff 100644 --- a/docs/src/oauth_full_mongodb.py +++ b/docs/src/oauth_full_mongodb.py @@ -4,6 +4,7 @@ from fastapi_users import FastAPIUsers, models from fastapi_users.authentication import JWTAuthentication from fastapi_users.db import MongoDBUserDatabase from httpx_oauth.clients.google import GoogleOAuth2 +from starlette.requests import Request DATABASE_URL = "mongodb://localhost:27017" SECRET = "SECRET" @@ -48,10 +49,10 @@ app.include_router(google_oauth_router, prefix="/google-oauth", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/docs/src/oauth_full_sqlalchemy.py b/docs/src/oauth_full_sqlalchemy.py index fda50392..94f47b7a 100644 --- a/docs/src/oauth_full_sqlalchemy.py +++ b/docs/src/oauth_full_sqlalchemy.py @@ -10,6 +10,7 @@ from fastapi_users.db import ( ) from httpx_oauth.clients.google import GoogleOAuth2 from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base +from starlette.requests import Request DATABASE_URL = "sqlite:///./test.db" SECRET = "SECRET" @@ -71,12 +72,12 @@ app.include_router(google_oauth_router, prefix="/google-oauth", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/docs/src/oauth_full_tortoise.py b/docs/src/oauth_full_tortoise.py index d26d2048..12581f1c 100644 --- a/docs/src/oauth_full_tortoise.py +++ b/docs/src/oauth_full_tortoise.py @@ -9,6 +9,7 @@ from fastapi_users.db import ( from httpx_oauth.clients.google import GoogleOAuth2 from tortoise import fields from tortoise.contrib.starlette import register_tortoise +from starlette.requests import Request DATABASE_URL = "sqlite://./test.db" SECRET = "SECRET" @@ -59,10 +60,10 @@ app.include_router(google_oauth_router, prefix="/google-oauth", tags=["users"]) @fastapi_users.on_after_register() -def on_after_register(user: User): +def on_after_register(user: User, request: Request): print(f"User {user.id} has registered.") @fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): +def on_after_forgot_password(user: User, token: str, request: Request): print(f"User {user.id} has forgot their password. Reset token: {token}") diff --git a/oauth_test.py b/oauth_test.py deleted file mode 100644 index fda50392..00000000 --- a/oauth_test.py +++ /dev/null @@ -1,90 +0,0 @@ -import databases -import sqlalchemy -from fastapi import FastAPI -from fastapi_users import FastAPIUsers, models -from fastapi_users.authentication import JWTAuthentication -from fastapi_users.db import ( - SQLAlchemyBaseOAuthAccountTable, - SQLAlchemyBaseUserTable, - SQLAlchemyUserDatabase, -) -from httpx_oauth.clients.google import GoogleOAuth2 -from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base - -DATABASE_URL = "sqlite:///./test.db" -SECRET = "SECRET" - - -google_oauth_client = GoogleOAuth2("CLIENT_ID", "CLIENT_SECRET") - - -class User(models.BaseUser, models.BaseOAuthAccountMixin): - pass - - -class UserCreate(User, models.BaseUserCreate): - pass - - -class UserUpdate(User, models.BaseUserUpdate): - pass - - -class UserDB(User, models.BaseUserDB): - pass - - -database = databases.Database(DATABASE_URL) -Base: DeclarativeMeta = declarative_base() - - -class UserTable(Base, SQLAlchemyBaseUserTable): - pass - - -class OAuthAccount(SQLAlchemyBaseOAuthAccountTable, Base): - pass - - -engine = sqlalchemy.create_engine( - DATABASE_URL, connect_args={"check_same_thread": False} -) -Base.metadata.create_all(engine) - -users = UserTable.__table__ -oauth_accounts = OAuthAccount.__table__ -user_db = SQLAlchemyUserDatabase(UserDB, database, users, oauth_accounts) - - -auth_backends = [ - JWTAuthentication(secret=SECRET, lifetime_seconds=3600), -] - -app = FastAPI() -fastapi_users = FastAPIUsers( - user_db, auth_backends, User, UserCreate, UserUpdate, UserDB, SECRET, -) -app.include_router(fastapi_users.router, prefix="/users", tags=["users"]) - -google_oauth_router = fastapi_users.get_oauth_router(google_oauth_client, SECRET) -app.include_router(google_oauth_router, prefix="/google-oauth", tags=["users"]) - - -@fastapi_users.on_after_register() -def on_after_register(user: User): - print(f"User {user.id} has registered.") - - -@fastapi_users.on_after_forgot_password() -def on_after_forgot_password(user: User, token: str): - print(f"User {user.id} has forgot their password. Reset token: {token}") - - -@app.on_event("startup") -async def startup(): - await database.connect() - - -@app.on_event("shutdown") -async def shutdown(): - await database.disconnect()