|
4 | 4 | import importlib |
5 | 5 | import logging |
6 | 6 | import re |
7 | | -from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union |
| 7 | +from typing import Any, Callable, Dict, List, Optional, Set, Tuple, TYPE_CHECKING, Union |
8 | 8 |
|
9 | 9 | from flask import current_app, Flask, g, request, session, url_for |
10 | 10 | from flask_appbuilder.exceptions import InvalidLoginAttempt, OAuthProviderUnknown |
|
62 | 62 | PERMISSION_PREFIX, |
63 | 63 | ) |
64 | 64 |
|
| 65 | +if TYPE_CHECKING: |
| 66 | + from flask_appbuilder.security.saml.types import SAMLConfig, SAMLProvider |
| 67 | + |
65 | 68 | log = logging.getLogger(__name__) |
66 | 69 |
|
67 | 70 |
|
@@ -528,21 +531,21 @@ def oauth_providers(self): |
528 | 531 | return current_app.config["OAUTH_PROVIDERS"] |
529 | 532 |
|
530 | 533 | @property |
531 | | - def saml_providers(self) -> List[Dict]: |
| 534 | + def saml_providers(self) -> List["SAMLProvider"]: |
532 | 535 | return current_app.config.get("SAML_PROVIDERS", []) |
533 | 536 |
|
534 | 537 | @property |
535 | | - def saml_config(self) -> Dict: |
| 538 | + def saml_config(self) -> "SAMLConfig": |
536 | 539 | return current_app.config.get("SAML_CONFIG", {}) |
537 | 540 |
|
538 | | - def get_saml_provider(self, name: str) -> Optional[Dict]: |
| 541 | + def get_saml_provider(self, name: str) -> Optional["SAMLProvider"]: |
539 | 542 | """Return a specific SAML provider by name.""" |
540 | 543 | for provider in self.saml_providers: |
541 | 544 | if provider["name"] == name: |
542 | 545 | return provider |
543 | 546 | return None |
544 | 547 |
|
545 | | - def get_saml_settings(self, provider_name: str) -> Dict: |
| 548 | + def get_saml_settings(self, provider_name: str) -> "SAMLConfig": |
546 | 549 | """Build the python3-saml settings dict for a given provider. |
547 | 550 |
|
548 | 551 | Merges the global SAML_CONFIG with the provider-specific IdP config. |
|
0 commit comments