From 6f77bdebe1d59fdb584a0c97aa98ca2c51c29c43 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Tue, 14 Feb 2023 17:44:19 +0100 Subject: [PATCH] :sparkles: Added some files and config for openid --- classquiz/config.py | 10 +++++++++- classquiz/oauth/init_oauth.py | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/classquiz/config.py b/classquiz/config.py index c3f4392..d3e4eb7 100644 --- a/classquiz/config.py +++ b/classquiz/config.py @@ -6,13 +6,20 @@ from functools import lru_cache from redis import asyncio as redis_lib import redis as redis_base_lib -from pydantic import BaseSettings, RedisDsn, PostgresDsn +from pydantic import BaseSettings, RedisDsn, PostgresDsn, BaseModel import meilisearch as MeiliSearch from typing import Optional from classquiz.storage import Storage +class CustomOpenIDProvider(BaseModel): + scopes: str = "openid email profile" + server_metadata_url: str + client_id: str + client_secret: str + + class Settings(BaseSettings): """ Settings class for the shop app. @@ -39,6 +46,7 @@ class Settings(BaseSettings): google_client_secret: Optional[str] github_client_id: Optional[str] github_client_secret: Optional[str] + custom_openid_provider: CustomOpenIDProvider | None = None telemetry_enabled: bool = True # storage_backend diff --git a/classquiz/oauth/init_oauth.py b/classquiz/oauth/init_oauth.py index 8ca3190..85d7d64 100644 --- a/classquiz/oauth/init_oauth.py +++ b/classquiz/oauth/init_oauth.py @@ -31,4 +31,11 @@ def init_oauth() -> OAuth: client_id=settings.github_client_id, client_secret=settings.github_client_secret, ) + oauth.register( + name="custom", + client_kwargs={"scope": settings.custom_openid_provider.scopes}, + server_metadata_url=settings.custom_openid_provider, + client_id=settings.custom_openid_provider.client_id, + client_secret=settings.custom_openid_provider.client_secret, + ) return oauth