#!/usr/bin/python3 # -*- coding: utf-8 -*- """ TISBackup Authentication Module Provides pluggable authentication providers for Flask routes. Supports: Basic Auth, Flask-Login, OAuth2 """ from .base import AuthProvider from .basic_auth import BasicAuthProvider from .flask_login_auth import FlaskLoginProvider from .oauth_auth import OAuthProvider __all__ = [ "AuthProvider", "BasicAuthProvider", "FlaskLoginProvider", "OAuthProvider", "get_auth_provider", ] def get_auth_provider(auth_type, config=None): """Factory function to get authentication provider. Args: auth_type: Type of auth ('basic', 'flask-login', 'oauth', or 'none') config: Configuration dict for the provider Returns: AuthProvider instance Raises: ValueError: If auth_type is not supported """ providers = { "none": AuthProvider, "basic": BasicAuthProvider, "flask-login": FlaskLoginProvider, "oauth": OAuthProvider, } auth_type = auth_type.lower() if auth_type not in providers: raise ValueError( f"Unsupported auth type: {auth_type}. " f"Supported types: {', '.join(providers.keys())}" ) provider_class = providers[auth_type] return provider_class(config or {})