fix #488 - support user field for completion

- a few other backends use `user` instead of `username` or `login`
  (e.g. gopass-jsonapi, keepass2csv importer, fpm2 importer)
- shorter to type when extracting field separately (e.g. CLI/clipboard) tools
This commit is contained in:
Martin Nowak 2023-01-21 16:52:46 +01:00 committed by Mingshen Sun
parent 51ad0c2920
commit 3ab334dd00
5 changed files with 15 additions and 2 deletions

View file

@ -250,6 +250,9 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni
if let username = password.username {
section.item.append(Constants.USERNAME_KEYWORD => username)
}
if let user = password.username {
section.item.append(Constants.USER_KEYWORD => user)
}
if let login = password.login {
section.item.append(Constants.LOGIN_KEYWORD => login)
}

View file

@ -51,6 +51,10 @@ public class Password {
getAdditionValue(withKey: Constants.USERNAME_KEYWORD)
}
public var user: String? {
getAdditionValue(withKey: Constants.USER_KEYWORD)
}
public var login: String? {
getAdditionValue(withKey: Constants.LOGIN_KEYWORD)
}
@ -121,6 +125,7 @@ public class Password {
additions.filter { field in
let title = field.title.lowercased()
return title != Constants.USERNAME_KEYWORD
&& title != Constants.USER_KEYWORD
&& title != Constants.LOGIN_KEYWORD
&& title != Constants.PASSWORD_KEYWORD
&& (!Constants.isUnknown(title) || !Defaults.isHideUnknownOn)
@ -215,6 +220,6 @@ public class Password {
}
public func getUsernameForCompletion() -> String {
username ?? login ?? nameFromPath ?? ""
username ?? user ?? login ?? nameFromPath ?? ""
}
}

View file

@ -48,6 +48,7 @@ public enum Constants {
public static let PASSWORD_KEYWORD = "password"
public static let USERNAME_KEYWORD = "username"
public static let USER_KEYWORD = "user"
public static let LOGIN_KEYWORD = "login"
public static let URL_KEYWORD = "url"
public static let UNKNOWN = "unknown"

View file

@ -32,6 +32,7 @@ class PasswordTest: XCTestCase {
XCTAssertEqual(password.numberOfUnknowns, 0)
XCTAssertNil(password.username)
XCTAssertNil(password.user)
XCTAssertNil(password.urlString)
XCTAssertNil(password.login)
@ -53,7 +54,7 @@ class PasswordTest: XCTestCase {
}
func testSimplePasswordFile() {
let additions = SECURE_URL_FIELD | LOGIN_FIELD | USERNAME_FIELD | NOTE_FIELD
let additions = SECURE_URL_FIELD | LOGIN_FIELD | USERNAME_FIELD | USER_FIELD | NOTE_FIELD
let fileContent = PASSWORD_STRING | additions
let password = getPasswordObjectWith(content: fileContent)
@ -62,11 +63,13 @@ class PasswordTest: XCTestCase {
XCTAssert(SECURE_URL_FIELD password)
XCTAssert(LOGIN_FIELD password)
XCTAssert(USERNAME_FIELD password)
XCTAssert(USER_FIELD password)
XCTAssert(NOTE_FIELD password)
XCTAssertEqual(password.urlString, SECURE_URL_FIELD.content)
XCTAssertEqual(password.login, LOGIN_FIELD.content)
XCTAssertEqual(password.username, USERNAME_FIELD.content)
XCTAssertEqual(password.user, USER_FIELD.content)
}
func testTwoPasswords() {

View file

@ -22,6 +22,7 @@ let SECURE_URL_FIELD = "url" => "https://secure.com"
let INSECURE_URL_FIELD = "url" => "http://insecure.com"
let LOGIN_FIELD = "login" => "login name"
let USERNAME_FIELD = "username" => "微 分 方 程"
let USER_FIELD = "user" => "积 分 方 程"
let NOTE_FIELD = "note" => "A NOTE"
let HINT_FIELD = "some hints" => "äöüß // €³ %% −° && @²` | [{\\}],.<>"
let TOTP_URL_FIELD = "otpauth" => "//totp/email@email.com?secret=abcd1234"