diff --git a/Model/Accounts/AccountsBridge.swift b/Model/Accounts/AccountsBridge.swift index 70fe94e3..8997dade 100644 --- a/Model/Accounts/AccountsBridge.swift +++ b/Model/Accounts/AccountsBridge.swift @@ -10,11 +10,28 @@ struct AccountsBridge: Defaults.Bridge { return nil } + // Parse the urlString to check for embedded username and password + var sanitizedUrlString = value.urlString + if var urlComponents = URLComponents(string: value.urlString) { + if let user = urlComponents.user, let password = urlComponents.password { + // Sanitize the embedded username and password + let sanitizedUser = user.addingPercentEncoding(withAllowedCharacters: .urlUserAllowed) ?? user + let sanitizedPassword = password.addingPercentEncoding(withAllowedCharacters: .urlPasswordAllowed) ?? password + + // Update the URL components with sanitized credentials + urlComponents.user = sanitizedUser + urlComponents.password = sanitizedPassword + + // Reconstruct the sanitized URL + sanitizedUrlString = urlComponents.string ?? value.urlString + } + } + return [ "id": value.id, "instanceID": value.instanceID ?? "", "name": value.name, - "apiURL": value.urlString, + "apiURL": sanitizedUrlString, "username": value.username, "password": value.password ?? "" ]