feat(auth): init Authlib + provider LinkedIn (config env) (#88)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import os
|
||||
|
||||
from authlib.integrations.flask_client import OAuth
|
||||
from flask import Flask
|
||||
|
||||
LINKEDIN_DISCOVERY_URL = (
|
||||
"https://www.linkedin.com/oauth/.well-known/openid-configuration"
|
||||
)
|
||||
|
||||
oauth = OAuth()
|
||||
|
||||
|
||||
def init_oauth(app: Flask) -> None:
|
||||
oauth.init_app(app)
|
||||
oauth.register(
|
||||
name="linkedin",
|
||||
client_id=os.getenv("LINKEDIN_CLIENT_ID"),
|
||||
client_secret=os.getenv("LINKEDIN_CLIENT_SECRET"),
|
||||
server_metadata_url=LINKEDIN_DISCOVERY_URL,
|
||||
client_kwargs={"scope": "openid profile email"},
|
||||
)
|
||||
@@ -6,6 +6,7 @@ from flask_wtf.csrf import CSRFProtect
|
||||
|
||||
from src.auth import db, mailer
|
||||
from src.auth.models import load_user
|
||||
from src.auth.oauth import init_oauth
|
||||
from src.utils import DEVELOPMENT, logger
|
||||
|
||||
_csrf: CSRFProtect | None = None
|
||||
@@ -47,6 +48,8 @@ def init_auth(app: Flask) -> None:
|
||||
|
||||
app.register_blueprint(auth_bp)
|
||||
|
||||
init_oauth(app)
|
||||
|
||||
_csrf = CSRFProtect(app)
|
||||
|
||||
if not os.getenv("BREVO_API_KEY"):
|
||||
@@ -54,3 +57,9 @@ def init_auth(app: Flask) -> None:
|
||||
"BREVO_API_KEY non défini : les emails d'auth échoueront. "
|
||||
"Définissez les variables BREVO_* dans .env pour envoyer des emails."
|
||||
)
|
||||
|
||||
if not os.getenv("LINKEDIN_CLIENT_ID"):
|
||||
logger.warning(
|
||||
"LINKEDIN_CLIENT_ID non défini : la connexion LinkedIn échouera. "
|
||||
"Définissez LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET dans .env."
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user