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:
parent
51ad0c2920
commit
3ab334dd00
5 changed files with 15 additions and 2 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 ?? ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue