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 {
|
if let username = password.username {
|
||||||
section.item.append(Constants.USERNAME_KEYWORD => 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 {
|
if let login = password.login {
|
||||||
section.item.append(Constants.LOGIN_KEYWORD => login)
|
section.item.append(Constants.LOGIN_KEYWORD => login)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,10 @@ public class Password {
|
||||||
getAdditionValue(withKey: Constants.USERNAME_KEYWORD)
|
getAdditionValue(withKey: Constants.USERNAME_KEYWORD)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var user: String? {
|
||||||
|
getAdditionValue(withKey: Constants.USER_KEYWORD)
|
||||||
|
}
|
||||||
|
|
||||||
public var login: String? {
|
public var login: String? {
|
||||||
getAdditionValue(withKey: Constants.LOGIN_KEYWORD)
|
getAdditionValue(withKey: Constants.LOGIN_KEYWORD)
|
||||||
}
|
}
|
||||||
|
|
@ -121,6 +125,7 @@ public class Password {
|
||||||
additions.filter { field in
|
additions.filter { field in
|
||||||
let title = field.title.lowercased()
|
let title = field.title.lowercased()
|
||||||
return title != Constants.USERNAME_KEYWORD
|
return title != Constants.USERNAME_KEYWORD
|
||||||
|
&& title != Constants.USER_KEYWORD
|
||||||
&& title != Constants.LOGIN_KEYWORD
|
&& title != Constants.LOGIN_KEYWORD
|
||||||
&& title != Constants.PASSWORD_KEYWORD
|
&& title != Constants.PASSWORD_KEYWORD
|
||||||
&& (!Constants.isUnknown(title) || !Defaults.isHideUnknownOn)
|
&& (!Constants.isUnknown(title) || !Defaults.isHideUnknownOn)
|
||||||
|
|
@ -215,6 +220,6 @@ public class Password {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getUsernameForCompletion() -> String {
|
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 PASSWORD_KEYWORD = "password"
|
||||||
public static let USERNAME_KEYWORD = "username"
|
public static let USERNAME_KEYWORD = "username"
|
||||||
|
public static let USER_KEYWORD = "user"
|
||||||
public static let LOGIN_KEYWORD = "login"
|
public static let LOGIN_KEYWORD = "login"
|
||||||
public static let URL_KEYWORD = "url"
|
public static let URL_KEYWORD = "url"
|
||||||
public static let UNKNOWN = "unknown"
|
public static let UNKNOWN = "unknown"
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ class PasswordTest: XCTestCase {
|
||||||
XCTAssertEqual(password.numberOfUnknowns, 0)
|
XCTAssertEqual(password.numberOfUnknowns, 0)
|
||||||
|
|
||||||
XCTAssertNil(password.username)
|
XCTAssertNil(password.username)
|
||||||
|
XCTAssertNil(password.user)
|
||||||
XCTAssertNil(password.urlString)
|
XCTAssertNil(password.urlString)
|
||||||
XCTAssertNil(password.login)
|
XCTAssertNil(password.login)
|
||||||
|
|
||||||
|
|
@ -53,7 +54,7 @@ class PasswordTest: XCTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
func testSimplePasswordFile() {
|
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 fileContent = PASSWORD_STRING | additions
|
||||||
let password = getPasswordObjectWith(content: fileContent)
|
let password = getPasswordObjectWith(content: fileContent)
|
||||||
|
|
||||||
|
|
@ -62,11 +63,13 @@ class PasswordTest: XCTestCase {
|
||||||
XCTAssert(SECURE_URL_FIELD ∈ password)
|
XCTAssert(SECURE_URL_FIELD ∈ password)
|
||||||
XCTAssert(LOGIN_FIELD ∉ password)
|
XCTAssert(LOGIN_FIELD ∉ password)
|
||||||
XCTAssert(USERNAME_FIELD ∉ password)
|
XCTAssert(USERNAME_FIELD ∉ password)
|
||||||
|
XCTAssert(USER_FIELD ∉ password)
|
||||||
XCTAssert(NOTE_FIELD ∈ password)
|
XCTAssert(NOTE_FIELD ∈ password)
|
||||||
|
|
||||||
XCTAssertEqual(password.urlString, SECURE_URL_FIELD.content)
|
XCTAssertEqual(password.urlString, SECURE_URL_FIELD.content)
|
||||||
XCTAssertEqual(password.login, LOGIN_FIELD.content)
|
XCTAssertEqual(password.login, LOGIN_FIELD.content)
|
||||||
XCTAssertEqual(password.username, USERNAME_FIELD.content)
|
XCTAssertEqual(password.username, USERNAME_FIELD.content)
|
||||||
|
XCTAssertEqual(password.user, USER_FIELD.content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testTwoPasswords() {
|
func testTwoPasswords() {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ let SECURE_URL_FIELD = "url" => "https://secure.com"
|
||||||
let INSECURE_URL_FIELD = "url" => "http://insecure.com"
|
let INSECURE_URL_FIELD = "url" => "http://insecure.com"
|
||||||
let LOGIN_FIELD = "login" => "login name"
|
let LOGIN_FIELD = "login" => "login name"
|
||||||
let USERNAME_FIELD = "username" => "微 分 方 程"
|
let USERNAME_FIELD = "username" => "微 分 方 程"
|
||||||
|
let USER_FIELD = "user" => "积 分 方 程"
|
||||||
let NOTE_FIELD = "note" => "A NOTE"
|
let NOTE_FIELD = "note" => "A NOTE"
|
||||||
let HINT_FIELD = "some hints" => "äöüß // €³ %% −° && @²` | [{\\}],.<>"
|
let HINT_FIELD = "some hints" => "äöüß // €³ %% −° && @²` | [{\\}],.<>"
|
||||||
let TOTP_URL_FIELD = "otpauth" => "//totp/email@email.com?secret=abcd1234"
|
let TOTP_URL_FIELD = "otpauth" => "//totp/email@email.com?secret=abcd1234"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue