Get the APIRouter object for OAuth endpoints.
Source code in fractal_server/app/routes/auth/oauth.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 | def get_oauth_router() -> APIRouter | None:
"""
Get the `APIRouter` object for OAuth endpoints.
"""
router_oauth = APIRouter()
settings = Inject(get_settings)
oauth_settings = Inject(get_oauth_settings)
if not oauth_settings.is_set:
return None
client_name = oauth_settings.OAUTH_CLIENT_NAME
if client_name == "google":
client = _create_client_google(oauth_settings)
elif client_name == "github":
client = _create_client_github(oauth_settings)
else:
client = _create_client_oidc(oauth_settings)
router_oauth.include_router(
fastapi_users.get_oauth_router(
client,
cookie_backend,
settings.JWT_SECRET_KEY,
is_verified_by_default=False,
associate_by_email=True,
redirect_url=oauth_settings.OAUTH_REDIRECT_URL,
),
prefix=f"/{client_name}",
)
# Add trailing slash to all routes' paths
for route in router_oauth.routes:
if not route.path.endswith("/"):
route.path = f"{route.path}/"
return router_oauth
|