Move some code around and improve validation (#128)
This commit is contained in:
committed by
GitHub
parent
3b481cd282
commit
d1da841e1f
37
custom_components/auth_oidc/tools/validation.py
Normal file
37
custom_components/auth_oidc/tools/validation.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""Validation and sanitization helpers for config flow inputs."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from urllib.parse import urlparse
|
||||
|
||||
|
||||
def validate_url(url: str) -> bool:
|
||||
"""Validate that a URL is properly formatted."""
|
||||
try:
|
||||
parsed = urlparse(url.strip())
|
||||
return bool(parsed.scheme in ("http", "https") and parsed.netloc)
|
||||
except (ValueError, TypeError):
|
||||
return False
|
||||
|
||||
|
||||
def validate_discovery_url(url: str) -> bool:
|
||||
"""Validate that a URL is properly formatted for OIDC discovery."""
|
||||
try:
|
||||
parsed = urlparse(url.strip())
|
||||
return bool(
|
||||
parsed.scheme in ("http", "https")
|
||||
and parsed.netloc
|
||||
and parsed.path.endswith("/.well-known/openid-configuration")
|
||||
)
|
||||
except (ValueError, TypeError):
|
||||
return False
|
||||
|
||||
|
||||
def sanitize_client_secret(secret: str) -> str:
|
||||
"""Sanitize client secret input."""
|
||||
return secret.strip() if secret else ""
|
||||
|
||||
|
||||
def validate_client_id(client_id: str) -> bool:
|
||||
"""Validate client ID format."""
|
||||
return bool(client_id and client_id.strip())
|
||||
Reference in New Issue
Block a user