From 39820a410891ef97f7c952f1400da00041cb8a05 Mon Sep 17 00:00:00 2001 From: Yishi Lin Date: Wed, 28 Jun 2017 00:32:50 +0800 Subject: [PATCH] Look for "login" as a username field in auto fill - Will look for "username" first --- .../PasswordDetailTableViewController.swift | 3 +++ passExtension/ExtensionViewController.swift | 2 +- passKit/Models/Password.swift | 24 +++++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/pass/Controllers/PasswordDetailTableViewController.swift b/pass/Controllers/PasswordDetailTableViewController.swift index a910b14..e402159 100644 --- a/pass/Controllers/PasswordDetailTableViewController.swift +++ b/pass/Controllers/PasswordDetailTableViewController.swift @@ -261,6 +261,9 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni if let username = password.getUsername() { section.item.append(TableCell(title: "username", content: username)) } + if let login = password.getLogin() { + section.item.append(TableCell(title: "login", content: login)) + } section.item.append(TableCell(title: "password", content: password.password)) tableData.append(section) diff --git a/passExtension/ExtensionViewController.swift b/passExtension/ExtensionViewController.swift index ff733ee..29f6f0b 100644 --- a/passExtension/ExtensionViewController.swift +++ b/passExtension/ExtensionViewController.swift @@ -160,7 +160,7 @@ class ExtensionViewController: UIViewController, UITableViewDataSource, UITableV var decryptedPassword: Password? do { decryptedPassword = try self.passwordStore.decrypt(passwordEntity: passwordEntity, requestPGPKeyPassphrase: self.requestPGPKeyPassphrase) - let username = decryptedPassword?.getUsername() ?? "" + let username = decryptedPassword?.getUsername() ?? decryptedPassword?.getLogin() ?? "" let password = decryptedPassword?.password ?? "" DispatchQueue.main.async {// prepare a dictionary to return switch self.extensionAction { diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index 440bfe5..52b6566 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -122,7 +122,7 @@ public class Password { public func getFilteredAdditions() -> [String: String] { var filteredAdditions = [String: String]() additions.forEach { (key: String, value: String) in - if key.lowercased() != "username" && key.lowercased() != "password" && + if key.lowercased() != "username" && key.lowercased() != "login" && key.lowercased() != "password" && (!key.hasPrefix("unknown") || !SharedDefaults[.isHideUnknownOn]) && (!Password.otpKeywords.contains(key) || !SharedDefaults[.isHideOTPOn]) { filteredAdditions[key] = value @@ -132,11 +132,15 @@ public class Password { } public func getUsername() -> String? { - return getAdditionValue(withKey: "Username") ?? getAdditionValue(withKey: "username") + return getAdditionValue(withKey: "username", caseSensitive: false) + } + + public func getLogin() -> String? { + return getAdditionValue(withKey: "login", caseSensitive: false) } public func getURLString() -> String? { - return getAdditionValue(withKey: "URL") ?? getAdditionValue(withKey: "url") ?? getAdditionValue(withKey: "Url") + return getAdditionValue(withKey: "url", caseSensitive: false) } // return a key-value pair from the line @@ -181,8 +185,18 @@ public class Password { return getPlainText().data(using: .utf8)! } - private func getAdditionValue(withKey key: String) -> String? { - return self.additions[key] + private func getAdditionValue(withKey key: String, caseSensitive: Bool = true) -> String? { + if caseSensitive { + return additions[key] + } else { + let searchKey = key.lowercased() + for k in additions.keys { + if searchKey == k.lowercased() { + return additions[k] + } + } + return nil + } } /*