mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-12 22:42:13 +02:00
Add access token pre-validation to OAuth connectors
This commit is contained in:
parent
8c60910148
commit
ecd0985523
4 changed files with 64 additions and 0 deletions
|
|
@ -71,6 +71,14 @@ class AirtableHistoryConnector:
|
||||||
|
|
||||||
config_data = connector.config.copy()
|
config_data = connector.config.copy()
|
||||||
|
|
||||||
|
# Check if access_token exists before processing
|
||||||
|
raw_access_token = config_data.get("access_token")
|
||||||
|
if not raw_access_token:
|
||||||
|
raise ValueError(
|
||||||
|
"Airtable access token not found. "
|
||||||
|
"Please reconnect your Airtable account."
|
||||||
|
)
|
||||||
|
|
||||||
# Decrypt credentials if they are encrypted
|
# Decrypt credentials if they are encrypted
|
||||||
token_encrypted = config_data.get("_token_encrypted", False)
|
token_encrypted = config_data.get("_token_encrypted", False)
|
||||||
if token_encrypted and config.SECRET_KEY:
|
if token_encrypted and config.SECRET_KEY:
|
||||||
|
|
@ -98,6 +106,14 @@ class AirtableHistoryConnector:
|
||||||
f"Failed to decrypt Airtable credentials: {e!s}"
|
f"Failed to decrypt Airtable credentials: {e!s}"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
|
# Final validation after decryption
|
||||||
|
final_token = config_data.get("access_token")
|
||||||
|
if not final_token or (isinstance(final_token, str) and not final_token.strip()):
|
||||||
|
raise ValueError(
|
||||||
|
"Airtable access token is invalid or empty. "
|
||||||
|
"Please reconnect your Airtable account."
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._credentials = AirtableAuthCredentialsBase.from_dict(config_data)
|
self._credentials = AirtableAuthCredentialsBase.from_dict(config_data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,14 @@ class ConfluenceHistoryConnector:
|
||||||
|
|
||||||
if is_oauth:
|
if is_oauth:
|
||||||
# OAuth 2.0 authentication
|
# OAuth 2.0 authentication
|
||||||
|
# Check if access_token exists before processing
|
||||||
|
raw_access_token = config_data.get("access_token")
|
||||||
|
if not raw_access_token:
|
||||||
|
raise ValueError(
|
||||||
|
"Confluence access token not found. "
|
||||||
|
"Please reconnect your Confluence account."
|
||||||
|
)
|
||||||
|
|
||||||
# Decrypt credentials if they are encrypted
|
# Decrypt credentials if they are encrypted
|
||||||
token_encrypted = config_data.get("_token_encrypted", False)
|
token_encrypted = config_data.get("_token_encrypted", False)
|
||||||
if token_encrypted and config.SECRET_KEY:
|
if token_encrypted and config.SECRET_KEY:
|
||||||
|
|
@ -118,6 +126,14 @@ class ConfluenceHistoryConnector:
|
||||||
f"Failed to decrypt Confluence credentials: {e!s}"
|
f"Failed to decrypt Confluence credentials: {e!s}"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
|
# Final validation after decryption
|
||||||
|
final_token = config_data.get("access_token")
|
||||||
|
if not final_token or (isinstance(final_token, str) and not final_token.strip()):
|
||||||
|
raise ValueError(
|
||||||
|
"Confluence access token is invalid or empty. "
|
||||||
|
"Please reconnect your Confluence account."
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._credentials = AtlassianAuthCredentialsBase.from_dict(
|
self._credentials = AtlassianAuthCredentialsBase.from_dict(
|
||||||
config_data
|
config_data
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,14 @@ class JiraHistoryConnector:
|
||||||
|
|
||||||
if is_oauth:
|
if is_oauth:
|
||||||
# OAuth 2.0 authentication
|
# OAuth 2.0 authentication
|
||||||
|
# Check if access_token exists before processing
|
||||||
|
raw_access_token = config_data.get("access_token")
|
||||||
|
if not raw_access_token:
|
||||||
|
raise ValueError(
|
||||||
|
"Jira access token not found. "
|
||||||
|
"Please reconnect your Jira account."
|
||||||
|
)
|
||||||
|
|
||||||
if not config.SECRET_KEY:
|
if not config.SECRET_KEY:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"SECRET_KEY not configured but tokens are marked as encrypted"
|
"SECRET_KEY not configured but tokens are marked as encrypted"
|
||||||
|
|
@ -119,6 +127,14 @@ class JiraHistoryConnector:
|
||||||
f"Failed to decrypt Jira credentials: {e!s}"
|
f"Failed to decrypt Jira credentials: {e!s}"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
|
# Final validation after decryption
|
||||||
|
final_token = config_data.get("access_token")
|
||||||
|
if not final_token or (isinstance(final_token, str) and not final_token.strip()):
|
||||||
|
raise ValueError(
|
||||||
|
"Jira access token is invalid or empty. "
|
||||||
|
"Please reconnect your Jira account."
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._credentials = AtlassianAuthCredentialsBase.from_dict(
|
self._credentials = AtlassianAuthCredentialsBase.from_dict(
|
||||||
config_data
|
config_data
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,14 @@ class LinearConnector:
|
||||||
|
|
||||||
config_data = connector.config.copy()
|
config_data = connector.config.copy()
|
||||||
|
|
||||||
|
# Check if access_token exists before processing
|
||||||
|
raw_access_token = config_data.get("access_token")
|
||||||
|
if not raw_access_token:
|
||||||
|
raise ValueError(
|
||||||
|
"Linear access token not found. "
|
||||||
|
"Please reconnect your Linear account."
|
||||||
|
)
|
||||||
|
|
||||||
# Decrypt credentials if they are encrypted
|
# Decrypt credentials if they are encrypted
|
||||||
token_encrypted = config_data.get("_token_encrypted", False)
|
token_encrypted = config_data.get("_token_encrypted", False)
|
||||||
if token_encrypted and config.SECRET_KEY:
|
if token_encrypted and config.SECRET_KEY:
|
||||||
|
|
@ -143,6 +151,14 @@ class LinearConnector:
|
||||||
f"Failed to decrypt Linear credentials: {e!s}"
|
f"Failed to decrypt Linear credentials: {e!s}"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
|
# Final validation after decryption
|
||||||
|
final_token = config_data.get("access_token")
|
||||||
|
if not final_token or (isinstance(final_token, str) and not final_token.strip()):
|
||||||
|
raise ValueError(
|
||||||
|
"Linear access token is invalid or empty. "
|
||||||
|
"Please reconnect your Linear account."
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._credentials = LinearAuthCredentialsBase.from_dict(config_data)
|
self._credentials = LinearAuthCredentialsBase.from_dict(config_data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue