fix 1password totp (#2704)
This commit is contained in:
@@ -1365,13 +1365,6 @@ async def get_workflow_run_with_workflow_id(
|
|||||||
|
|
||||||
browser_session_id = browser_session.persistent_browser_session_id if browser_session else None
|
browser_session_id = browser_session.persistent_browser_session_id if browser_session else None
|
||||||
|
|
||||||
LOG.info(
|
|
||||||
"workflow-run.assign-browser-session-id",
|
|
||||||
runnable_id=workflow_run_id,
|
|
||||||
browser_session_id=browser_session_id,
|
|
||||||
organization_id=current_org.organization_id,
|
|
||||||
)
|
|
||||||
|
|
||||||
return_dict["browser_session_id"] = browser_session_id
|
return_dict["browser_session_id"] = browser_session_id
|
||||||
|
|
||||||
task_v2 = await app.DATABASE.get_task_v2_by_workflow_run_id(
|
task_v2 = await app.DATABASE.get_task_v2_by_workflow_run_id(
|
||||||
|
|||||||
@@ -411,29 +411,19 @@ class WorkflowRunContext:
|
|||||||
if field.value is None:
|
if field.value is None:
|
||||||
continue
|
continue
|
||||||
random_secret_id = self.generate_random_secret_id()
|
random_secret_id = self.generate_random_secret_id()
|
||||||
secret_id = f"{random_secret_id}_{field.id}"
|
field_type = field.field_type.value.lower()
|
||||||
self.secrets[secret_id] = field.value
|
if field_type == "totp":
|
||||||
key = (field.label or field.id).lower().replace(" ", "_")
|
|
||||||
self.values[parameter.key][key] = secret_id
|
|
||||||
|
|
||||||
# Try to get TOTP if available
|
|
||||||
try:
|
|
||||||
totp = await client.items.get_totp(parameter.vault_id, parameter.item_id)
|
|
||||||
if totp:
|
|
||||||
# Store the actual TOTP value in a separate secret for internal use
|
|
||||||
random_secret_id = self.generate_random_secret_id()
|
|
||||||
totp_value_id = f"{random_secret_id}_totp_value"
|
|
||||||
self.secrets[totp_value_id] = totp
|
|
||||||
|
|
||||||
# Store the special TOTP constant that the agent will recognize
|
|
||||||
totp_secret_id = f"{random_secret_id}_totp"
|
totp_secret_id = f"{random_secret_id}_totp"
|
||||||
self.secrets[totp_secret_id] = OnePasswordConstants.TOTP
|
self.secrets[totp_secret_id] = OnePasswordConstants.TOTP
|
||||||
|
totp_secret_value = self.totp_secret_value_key(totp_secret_id)
|
||||||
|
self.secrets[totp_secret_value] = field.value
|
||||||
self.values[parameter.key]["totp"] = totp_secret_id
|
self.values[parameter.key]["totp"] = totp_secret_id
|
||||||
|
else:
|
||||||
LOG.info(f"TOTP code available for item {parameter.item_id}")
|
# this will be the username or password or other field
|
||||||
except Exception as e:
|
key = field.id.replace(" ", "_")
|
||||||
# TOTP might not be available for this item, just log and continue
|
secret_id = f"{random_secret_id}_{key}"
|
||||||
LOG.debug(f"TOTP not available for item {parameter.item_id}: {str(e)}")
|
self.secrets[secret_id] = field.value
|
||||||
|
self.values[parameter.key][key] = secret_id
|
||||||
|
|
||||||
async def register_bitwarden_login_credential_parameter_value(
|
async def register_bitwarden_login_credential_parameter_value(
|
||||||
self,
|
self,
|
||||||
|
|||||||
Reference in New Issue
Block a user