import os from flask import Flask from authlib.integrations.flask_client import OAuth from db import close_db, init_db from routes.public import public_bp from routes.auth import auth_bp from routes.protected import protected_bp def create_app(): app = Flask(__name__) app.secret_key = os.environ['SECRET_KEY'] # OIDC AlpID oauth = OAuth(app) oauth.register( name='alpid', server_metadata_url=os.environ['ALPID_DISCOVERY_URL'], client_id=os.environ['ALPID_CLIENT_ID'], client_secret=os.environ['ALPID_CLIENT_SECRET'], client_kwargs={'scope': 'openid profile email'}, ) app.extensions['oauth'] = oauth # Filtre Jinja2 utilitaire app.jinja_env.filters['enumerate'] = enumerate # Blueprints app.register_blueprint(public_bp) app.register_blueprint(auth_bp, url_prefix='/auth') app.register_blueprint(protected_bp) # Base de données app.teardown_appcontext(close_db) with app.app_context(): init_db() return app app = create_app() if __name__ == '__main__': app.run(debug=os.environ.get('FLASK_DEBUG', '0') == '1')