53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
#!/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 {})
|