From fae2786c5d1cdaa7342c4ec6dac949e294c5133c Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Fri, 3 Dec 2021 06:06:34 +0200 Subject: [PATCH 1/5] Remove 1Password pod --- Podfile | 1 - Podfile.lock | 6 +----- WordPressAuthenticator.xcodeproj/project.pbxproj | 2 -- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Podfile b/Podfile index f36dabd58..f4bf390bc 100644 --- a/Podfile +++ b/Podfile @@ -13,7 +13,6 @@ platform :ios, ios_deployment_target ## ===================== ## def third_party_pods - pod '1PasswordExtension', '1.8.6' pod 'Alamofire', '4.8' pod 'CocoaLumberjack', '3.5.2' pod 'GoogleSignIn', '6.0.1' diff --git a/Podfile.lock b/Podfile.lock index 60c76bf32..3d72a9898 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,5 +1,4 @@ PODS: - - 1PasswordExtension (1.8.6) - Alamofire (4.8.0) - AppAuth (1.4.0): - AppAuth/Core (= 1.4.0) @@ -43,7 +42,6 @@ PODS: - wpxmlrpc (0.9.0) DEPENDENCIES: - - 1PasswordExtension (= 1.8.6) - Alamofire (= 4.8) - CocoaLumberjack (= 3.5.2) - Expecta (= 1.0.6) @@ -60,7 +58,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - - 1PasswordExtension - Alamofire - AppAuth - CocoaLumberjack @@ -83,7 +80,6 @@ SPEC REPOS: - wpxmlrpc SPEC CHECKSUMS: - 1PasswordExtension: f97cc80ae58053c331b2b6dc8843ba7103b33794 Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 AppAuth: 31bcec809a638d7bd2f86ea8a52bd45f6e81e7c7 CocoaLumberjack: 118bf4a820efc641f79fa487b75ed928dccfae23 @@ -105,6 +101,6 @@ SPEC CHECKSUMS: WordPressUI: 1cf47a3b78154faf69caa18569ee7ece1e510fa0 wpxmlrpc: bf55a43a7e710bd2a4fb8c02dfe83b1246f14f13 -PODFILE CHECKSUM: 7cf50800dab5ef3d524c968936a1fc8242ea023c +PODFILE CHECKSUM: d9073c8eaf970df5ce640ddb8620640ada3e775e COCOAPODS: 1.10.2 diff --git a/WordPressAuthenticator.xcodeproj/project.pbxproj b/WordPressAuthenticator.xcodeproj/project.pbxproj index 517a1ac56..2b1edf08e 100644 --- a/WordPressAuthenticator.xcodeproj/project.pbxproj +++ b/WordPressAuthenticator.xcodeproj/project.pbxproj @@ -1138,7 +1138,6 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-WordPressAuthenticatorTests/Pods-WordPressAuthenticatorTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/1PasswordExtension/OnePasswordExtension.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/AppAuth/AppAuth.framework", "${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework", @@ -1162,7 +1161,6 @@ ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OnePasswordExtension.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaLumberjack.framework", From 0aa43899efeaff0ce684498c3cb0cf72a90d7369 Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Fri, 3 Dec 2021 06:15:59 +0200 Subject: [PATCH 2/5] Remove 1Password code --- .../project.pbxproj | 8 - .../WordPressAuthenticator.swift | 36 ----- .../Extensions/WPStyleGuide+Login.swift | 46 ------ .../Services/OnePasswordFacade.swift | 141 ------------------ .../Services/OnePasswordResultsFetcher.swift | 7 - .../Signin/LoginEmailViewController.swift | 18 --- .../LoginSelfHostedViewController.swift | 19 --- .../LoginUsernamePasswordViewController.swift | 19 --- .../Signin/LoginWPComViewController.swift | 25 ---- 9 files changed, 319 deletions(-) delete mode 100644 WordPressAuthenticator/Services/OnePasswordFacade.swift delete mode 100644 WordPressAuthenticator/Services/OnePasswordResultsFetcher.swift diff --git a/WordPressAuthenticator.xcodeproj/project.pbxproj b/WordPressAuthenticator.xcodeproj/project.pbxproj index 2b1edf08e..026177896 100644 --- a/WordPressAuthenticator.xcodeproj/project.pbxproj +++ b/WordPressAuthenticator.xcodeproj/project.pbxproj @@ -78,7 +78,6 @@ B560910D208A54F800399AE4 /* WordPressXMLRPCAPIFacade.m in Sources */ = {isa = PBXBuildFile; fileRef = B5609102208A54F800399AE4 /* WordPressXMLRPCAPIFacade.m */; }; B560910E208A54F800399AE4 /* LoginFacade.h in Headers */ = {isa = PBXBuildFile; fileRef = B5609103208A54F800399AE4 /* LoginFacade.h */; settings = {ATTRIBUTES = (Public, ); }; }; B560910F208A54F800399AE4 /* SafariCredentialsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5609104208A54F800399AE4 /* SafariCredentialsService.swift */; }; - B5609110208A54F800399AE4 /* OnePasswordFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5609105208A54F800399AE4 /* OnePasswordFacade.swift */; }; B5609111208A54F800399AE4 /* WordPressXMLRPCAPIFacade.h in Headers */ = {isa = PBXBuildFile; fileRef = B5609106208A54F800399AE4 /* WordPressXMLRPCAPIFacade.h */; settings = {ATTRIBUTES = (Public, ); }; }; B5609116208A555600399AE4 /* LoginTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5609112208A555500399AE4 /* LoginTextField.swift */; }; B5609117208A555600399AE4 /* SearchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5609113208A555500399AE4 /* SearchTableViewCell.swift */; }; @@ -123,7 +122,6 @@ BA53D64B24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64A24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift */; }; BA53D64D24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64C24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift */; }; BA53D64F24DFE981001F1ABF /* MockOnePasswordFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64E24DFE981001F1ABF /* MockOnePasswordFacade.swift */; }; - BA53D65324DFEA58001F1ABF /* OnePasswordResultsFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D65224DFEA58001F1ABF /* OnePasswordResultsFetcher.swift */; }; BA70352424F70C9F00B3AA1C /* ModalViewControllerPresenting.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA70352324F70C9F00B3AA1C /* ModalViewControllerPresenting.swift */; }; CE16177521B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */; }; CE16177821B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177721B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift */; }; @@ -287,7 +285,6 @@ B5609102208A54F800399AE4 /* WordPressXMLRPCAPIFacade.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WordPressXMLRPCAPIFacade.m; sourceTree = ""; }; B5609103208A54F800399AE4 /* LoginFacade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginFacade.h; sourceTree = ""; }; B5609104208A54F800399AE4 /* SafariCredentialsService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafariCredentialsService.swift; sourceTree = ""; }; - B5609105208A54F800399AE4 /* OnePasswordFacade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnePasswordFacade.swift; sourceTree = ""; }; B5609106208A54F800399AE4 /* WordPressXMLRPCAPIFacade.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WordPressXMLRPCAPIFacade.h; sourceTree = ""; }; B5609112208A555500399AE4 /* LoginTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginTextField.swift; sourceTree = ""; }; B5609113208A555500399AE4 /* SearchTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchTableViewCell.swift; sourceTree = ""; }; @@ -338,7 +335,6 @@ BA53D64A24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordpressAuthenticatorProvider.swift; sourceTree = ""; }; BA53D64C24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModalViewControllerPresentingSpy.swift; sourceTree = ""; }; BA53D64E24DFE981001F1ABF /* MockOnePasswordFacade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockOnePasswordFacade.swift; sourceTree = ""; }; - BA53D65224DFEA58001F1ABF /* OnePasswordResultsFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnePasswordResultsFetcher.swift; sourceTree = ""; }; BA70352324F70C9F00B3AA1C /* ModalViewControllerPresenting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalViewControllerPresenting.swift; sourceTree = ""; }; C736FF243DE333FCAB1C2614 /* Pods_WordPressAuthenticator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressAuthenticator.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressAuthenticatorDisplayStrings.swift; sourceTree = ""; }; @@ -666,8 +662,6 @@ B5609103208A54F800399AE4 /* LoginFacade.h */, B5609100208A54F800399AE4 /* LoginFacade.m */, F1AF1BEE24E4A80F00BA453E /* LoginFacade.swift */, - B5609105208A54F800399AE4 /* OnePasswordFacade.swift */, - BA53D65224DFEA58001F1ABF /* OnePasswordResultsFetcher.swift */, B5609104208A54F800399AE4 /* SafariCredentialsService.swift */, B56090FE208A54F700399AE4 /* SignupService.swift */, CE1B18C820EEC2C200BECC3F /* SocialService.swift */, @@ -1234,7 +1228,6 @@ B560913E208A563800399AE4 /* SigninEditingState.swift in Sources */, CE2D03E024E5DD4500D18942 /* UnifiedSignupViewController.swift in Sources */, 98CF18F7248725370047B66C /* GoogleSignupConfirmationViewController.swift in Sources */, - BA53D65324DFEA58001F1ABF /* OnePasswordResultsFetcher.swift in Sources */, 1A21EE9822832BC300C940C6 /* WordPressComOAuthClientFacade+Swift.swift in Sources */, D87F120B2586DA26005675C5 /* SpacerTableViewCell.swift in Sources */, CEC77C6624854F2E00FB9050 /* SiteAddressViewController.swift in Sources */, @@ -1263,7 +1256,6 @@ CE6BCD3824A3CB5E001BCDC5 /* TextLinkButtonTableViewCell.swift in Sources */, CE16177521B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift in Sources */, CE1B18CE20EEC3CB00BECC3F /* WordPressAuthenticatorDelegateProtocol.swift in Sources */, - B5609110208A54F800399AE4 /* OnePasswordFacade.swift in Sources */, F180B82424F59263000A01F5 /* StoredCredentialsPicker.swift in Sources */, D881A311256B5B4700FE5605 /* NavigateToEnterSite.swift in Sources */, B5609109208A54F800399AE4 /* SignupService.swift in Sources */, diff --git a/WordPressAuthenticator/Authenticator/WordPressAuthenticator.swift b/WordPressAuthenticator/Authenticator/WordPressAuthenticator.swift index 7c0716c9f..07777feee 100644 --- a/WordPressAuthenticator/Authenticator/WordPressAuthenticator.swift +++ b/WordPressAuthenticator/Authenticator/WordPressAuthenticator.swift @@ -465,42 +465,6 @@ import WordPressKit // Otherwise, the default bundle is used for resources return defaultBundle } - - // MARK: - 1Password Helper - - /// Request credentails from 1Password (if supported) - /// - /// - Parameter sender: A UIView. Typically the button the user tapped on. - /// - class func fetchOnePasswordCredentials(_ controller: UIViewController, - sourceView: UIView, - loginFields: LoginFields, - allowUsernameChange: Bool = true, - onePasswordFetcher: OnePasswordResultsFetcher = OnePasswordFacade(), - success: @escaping ((_ loginFields: LoginFields) -> Void)) { - - let loginURL = loginFields.meta.userIsDotCom ? OnePasswordDefaults.dotcomURL : loginFields.siteAddress - - onePasswordFetcher.findLogin(for: loginURL, viewController: controller, sender: sourceView, success: { (username, password, otp) in - if allowUsernameChange { - loginFields.username = username - } - - loginFields.password = password - loginFields.multifactorCode = otp ?? String() - - WordPressAuthenticator.track(.onePasswordLogin) - success(loginFields) - - }, failure: { error in - guard error != .cancelledByUser else { - return - } - - DDLogError("OnePassword Error: \(error.localizedDescription)") - WordPressAuthenticator.track(.onePasswordFailed) - }) - } } public extension WordPressAuthenticator { diff --git a/WordPressAuthenticator/Extensions/WPStyleGuide+Login.swift b/WordPressAuthenticator/Extensions/WPStyleGuide+Login.swift index 9f046418e..8fec50dd5 100644 --- a/WordPressAuthenticator/Extensions/WPStyleGuide+Login.swift +++ b/WordPressAuthenticator/Extensions/WPStyleGuide+Login.swift @@ -40,52 +40,6 @@ extension WPStyleGuide { view.backgroundColor = wordPressBlue() } - /// Adds a 1password button to a WPWalkthroughTextField, if available - /// - Note: this is for the old UI. - /// - class func configureOnePasswordButtonForTextfield(_ textField: WPWalkthroughTextField, target: NSObject, selector: Selector) { - guard OnePasswordFacade.isOnePasswordEnabled else { - return - } - - let onePasswordButton = UIButton(type: .custom) - onePasswordButton.setImage(.onePasswordImage, for: .normal) - textField.tintColor = WordPressAuthenticator.shared.style.secondaryNormalBorderColor - onePasswordButton.sizeToFit() - - onePasswordButton.accessibilityLabel = - NSLocalizedString("Fill with password manager", comment: "The password manager button in login pages. The button opens a dialog showing which password manager to use (e.g. 1Password, LastPass). ") - - textField.rightView = onePasswordButton - textField.rightViewMode = .always - - onePasswordButton.addTarget(target, action: selector, for: .touchUpInside) - } - - /// Adds a 1password button to a stack view, if available - /// - Note: this is for the old UI. - /// - class func configureOnePasswordButtonForStackView(_ stack: UIStackView, target: NSObject, selector: Selector) { - guard OnePasswordFacade.isOnePasswordEnabled else { - return - } - - let onePasswordButton = UIButton(type: .custom) - onePasswordButton.setImage(.onePasswordImage, for: .normal) - onePasswordButton.tintColor = WordPressAuthenticator.shared.style.secondaryNormalBorderColor - onePasswordButton.sizeToFit() - onePasswordButton.setContentHuggingPriority(.required, for: .horizontal) - onePasswordButton.setContentCompressionResistancePriority(.required, for: .horizontal) - - onePasswordButton.accessibilityTraits = .button - onePasswordButton.accessibilityLabel = NSLocalizedString("One Password button", comment: "Accessibility label for 1 password button") - onePasswordButton.accessibilityHint = NSLocalizedString("Opens One Password manager", comment: "Accessibility hint for 1 password button") - - stack.addArrangedSubview(onePasswordButton) - - onePasswordButton.addTarget(target, action: selector, for: .touchUpInside) - } - /// Configures a plain text button with default styles. /// class func configureTextButton(_ button: UIButton) { diff --git a/WordPressAuthenticator/Services/OnePasswordFacade.swift b/WordPressAuthenticator/Services/OnePasswordFacade.swift deleted file mode 100644 index de9c6282a..000000000 --- a/WordPressAuthenticator/Services/OnePasswordFacade.swift +++ /dev/null @@ -1,141 +0,0 @@ -import Foundation -import UIKit -import OnePasswordExtension - -// MARK: - This protocol is a Facade that hides some of the implementation details for interacting with 1Password. -// -class OnePasswordFacade { - - /// This method will pull up the 1Password extension and display any logins for the passed in `loginUrl`. - /// - /// - Parameters: - /// - url: URL of the site in question. - /// - viewController: ViewController of the class that needs the 1Password extension to appear. - /// - sender: the control that triggered the action. - /// - success: closure that is called when 1Password successfully retrieves credentials. - /// - failure: closure that is called when 1Password couldn't find any credentials. - /// - func findLogin(for url: String, - viewController: UIViewController, - sender: Any, - success: @escaping (_ username: String, _ password: String, _ otp: String?) -> Void, - failure: @escaping (OnePasswordError) -> Void) { - OnePasswordExtension.shared().findLogin(forURLString: url, for: viewController, sender: sender) { (dictionary, error) in - if let error = error as NSError? { - failure(OnePasswordError(error: error)) - return - } - - guard let username = dictionary?[AppExtensionUsernameKey] as? String, - let password = dictionary?[AppExtensionPasswordKey] as? String, - !username.isEmpty, - !password.isEmpty - else { - failure(.unknown) - return - } - - let oneTimePassword = dictionary?[AppExtensionTOTPKey] as? String - success(username, password, oneTimePassword) - } - } - - /// Stores a new entry in the 1Password extension. - /// - /// - Parameters: - /// - url: the URL of the site in question. - /// - username: The username to store. - /// - password: The password to store. - /// - title: Title of the password to be stored. - /// - minimumLength: Generated Password's Minimum Length. - /// - maximumLength: Generated Password's Maximum Length. - /// - viewController: ViewController of the class that needs the 1Password extension to appear. - /// - sender: The control that triggered the action. - /// - success: Closure that is called when 1Password successfully store the credentials. - /// - failure: Closure that is called when 1Password failed to store credentials. - /// - func createLogin(url: String = OnePasswordDefaults.dotcomURL, - username: String, - password: String, - title: String = OnePasswordDefaults.passwordTitle, - minimumLength: Int = OnePasswordDefaults.minimumLength, - maximumLength: Int = OnePasswordDefaults.maximumLength, - for viewController: UIViewController, - sender: Any, - success: @escaping (_ username: String, _ password: String) -> Void, - failure: @escaping (OnePasswordError) -> Void) { - - let loginDetails = [ - AppExtensionTitleKey: title, - AppExtensionUsernameKey: username, - AppExtensionPasswordKey: password - ] - - let options = [ - AppExtensionGeneratedPasswordMinLengthKey: minimumLength, - AppExtensionGeneratedPasswordMaxLengthKey: maximumLength - ] - - OnePasswordExtension.shared().storeLogin(forURLString: url, loginDetails: loginDetails, passwordGenerationOptions: options, for: viewController, sender: sender) { (loginDict, error) in - if let error = error as NSError? { - failure(OnePasswordError(error: error)) - return - } - - guard let username = loginDict?[AppExtensionUsernameKey] as? String, - let password = loginDict?[AppExtensionPasswordKey] as? String - else { - failure(.unknown) - return - } - - success(username, password) - } - } - - /// Indicates if the 1P Extension is enabled, or not. - /// - static var isOnePasswordEnabled: Bool { - return OnePasswordExtension.shared().isAppExtensionAvailable() - } -} - -extension OnePasswordFacade: OnePasswordResultsFetcher {} - -// MARK: - Default Settings -// -enum OnePasswordDefaults { - - /// WordPress.com default URL - /// - static let dotcomURL = "wordpress.com" - - /// Default minimum length of the generated password. - /// - static let minimumLength = 7 - - /// Default maximum length of the generated password. - /// - static let maximumLength = 50 - - /// Default Password Title. - /// - static let passwordTitle = "WordPress" -} - -// MARK: - OnePasswordError -// -enum OnePasswordError: Error { - case cancelledByUser - case failedToRetrieveCredentials - case unknown - - init(error: NSError) { - switch AppExtensionErrorCode.init(rawValue: UInt(error.code)) { - case .cancelledByUser: - self = .cancelledByUser - default: - self = .unknown - } - } -} diff --git a/WordPressAuthenticator/Services/OnePasswordResultsFetcher.swift b/WordPressAuthenticator/Services/OnePasswordResultsFetcher.swift deleted file mode 100644 index ea67573fd..000000000 --- a/WordPressAuthenticator/Services/OnePasswordResultsFetcher.swift +++ /dev/null @@ -1,7 +0,0 @@ -protocol OnePasswordResultsFetcher { - func findLogin(for url: String, - viewController: UIViewController, - sender: Any, - success: @escaping (_ username: String, _ password: String, _ otp: String?) -> Void, - failure: @escaping (OnePasswordError) -> Void) -} diff --git a/WordPressAuthenticator/Signin/LoginEmailViewController.swift b/WordPressAuthenticator/Signin/LoginEmailViewController.swift index 67c597188..2c66cb447 100644 --- a/WordPressAuthenticator/Signin/LoginEmailViewController.swift +++ b/WordPressAuthenticator/Signin/LoginEmailViewController.swift @@ -40,7 +40,6 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { super.viewDidLoad() localizeControls() - setupOnePasswordButtonIfNeeded() alternativeLoginLabel?.isHidden = showLoginOptions if !showLoginOptions { @@ -133,14 +132,6 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { submitButton?.accessibilityIdentifier = "Login Email Next Button" } - /// Sets up a 1Password button if 1Password is available. - /// - func setupOnePasswordButtonIfNeeded() { - WPStyleGuide.configureOnePasswordButtonForTextfield(emailTextField, - target: self, - selector: #selector(handleOnePasswordButtonTapped(_:))) - } - /// Add the log in with Google button to the view /// func addGoogleButton() { @@ -464,15 +455,6 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { validateForm() } - @objc func handleOnePasswordButtonTapped(_ sender: UIButton) { - view.endEditing(true) - - WordPressAuthenticator.fetchOnePasswordCredentials(self, sourceView: sender, loginFields: loginFields) { [weak self] (loginFields) in - self?.emailTextField.text = loginFields.username - self?.loginWithUsernamePassword(immediately: true) - } - } - @IBAction func handleSelfHostedButtonTapped(_ sender: UIButton) { loginToSelfHostedSite() } diff --git a/WordPressAuthenticator/Signin/LoginSelfHostedViewController.swift b/WordPressAuthenticator/Signin/LoginSelfHostedViewController.swift index ef10dd25e..ed62a8058 100644 --- a/WordPressAuthenticator/Signin/LoginSelfHostedViewController.swift +++ b/WordPressAuthenticator/Signin/LoginSelfHostedViewController.swift @@ -32,7 +32,6 @@ class LoginSelfHostedViewController: LoginViewController, NUXKeyboardResponder { configureHeader() localizeControls() - setupOnePasswordButtonIfNeeded() displayLoginMessage("") configureForAcessibility() } @@ -101,14 +100,6 @@ class LoginSelfHostedViewController: LoginViewController, NUXKeyboardResponder { forgotPasswordButton.accessibilityTraits = .link } - /// Sets up a 1Password button if 1Password is available. - /// - @objc func setupOnePasswordButtonIfNeeded() { - WPStyleGuide.configureOnePasswordButtonForTextfield(usernameField, - target: self, - selector: #selector(handleOnePasswordButtonTapped(_:))) - } - /// Configures the content of the text fields based on what is saved in `loginFields`. /// @objc func configureTextFields() { @@ -226,16 +217,6 @@ class LoginSelfHostedViewController: LoginViewController, NUXKeyboardResponder { validateForm() } - @objc func handleOnePasswordButtonTapped(_ sender: UIButton) { - view.endEditing(true) - - WordPressAuthenticator.fetchOnePasswordCredentials(self, sourceView: sender, loginFields: loginFields) { [unowned self] (loginFields) in - self.usernameField.text = loginFields.username - self.passwordField.text = loginFields.password - self.validateForm() - } - } - @IBAction func handleForgotPasswordButtonTapped(_ sender: UIButton) { WordPressAuthenticator.openForgotPasswordURL(loginFields) WordPressAuthenticator.track(.loginForgotPasswordClicked) diff --git a/WordPressAuthenticator/Signin/LoginUsernamePasswordViewController.swift b/WordPressAuthenticator/Signin/LoginUsernamePasswordViewController.swift index 7683db53d..94dfa855a 100644 --- a/WordPressAuthenticator/Signin/LoginUsernamePasswordViewController.swift +++ b/WordPressAuthenticator/Signin/LoginUsernamePasswordViewController.swift @@ -32,7 +32,6 @@ class LoginUsernamePasswordViewController: LoginViewController, NUXKeyboardRespo configureHeader() localizeControls() - setupOnePasswordButtonIfNeeded() displayLoginMessage("") } @@ -83,14 +82,6 @@ class LoginUsernamePasswordViewController: LoginViewController, NUXKeyboardRespo forgotPasswordButton.titleLabel?.numberOfLines = 0 } - /// Sets up a 1Password button if 1Password is available. - /// - @objc func setupOnePasswordButtonIfNeeded() { - WPStyleGuide.configureOnePasswordButtonForTextfield(usernameField, - target: self, - selector: #selector(handleOnePasswordButtonTapped(_:))) - } - /// Configures the content of the text fields based on what is saved in `loginFields`. /// @objc func configureTextFields() { @@ -208,16 +199,6 @@ class LoginUsernamePasswordViewController: LoginViewController, NUXKeyboardRespo validateForm() } - @objc func handleOnePasswordButtonTapped(_ sender: UIButton) { - view.endEditing(true) - - WordPressAuthenticator.fetchOnePasswordCredentials(self, sourceView: sender, loginFields: loginFields) { [unowned self] (loginFields) in - self.usernameField.text = loginFields.username - self.passwordField.text = loginFields.password - self.validateForm() - } - } - @IBAction func handleForgotPasswordButtonTapped(_ sender: UIButton) { WordPressAuthenticator.openForgotPasswordURL(loginFields) WordPressAuthenticator.track(.loginForgotPasswordClicked) diff --git a/WordPressAuthenticator/Signin/LoginWPComViewController.swift b/WordPressAuthenticator/Signin/LoginWPComViewController.swift index f93bf95a8..f5a1cd178 100644 --- a/WordPressAuthenticator/Signin/LoginWPComViewController.swift +++ b/WordPressAuthenticator/Signin/LoginWPComViewController.swift @@ -31,7 +31,6 @@ class LoginWPComViewController: LoginViewController, NUXKeyboardResponder { super.viewDidLoad() localizeControls() - setupOnePasswordButtonIfNeeded() } override func viewWillAppear(_ animated: Bool) { @@ -75,14 +74,6 @@ class LoginWPComViewController: LoginViewController, NUXKeyboardResponder { // MARK: Setup and Configuration - /// Sets up a 1Password button if 1Password is available. - @objc func setupOnePasswordButtonIfNeeded() { - guard let emailStackView = emailStackView else { return } - WPStyleGuide.configureOnePasswordButtonForStackView(emailStackView, - target: self, - selector: #selector(LoginWPComViewController.handleOnePasswordButtonTapped(_:))) - } - /// Configures the appearance and state of the submit button. /// override func configureSubmitButton(animating: Bool) { @@ -209,22 +200,6 @@ class LoginWPComViewController: LoginViewController, NUXKeyboardResponder { WordPressAuthenticator.track(.loginForgotPasswordClicked) } - @objc func handleOnePasswordButtonTapped(_ sender: UIButton) { - view.endEditing(true) - - // Don't update username for social accounts. - // This prevents inadvertent account linking. - // Ref: https://git.io/JJSUM - let allowUsernameChange = (loginFields.meta.socialService == nil) - - WordPressAuthenticator.fetchOnePasswordCredentials(self, sourceView: sender, loginFields: loginFields, allowUsernameChange: allowUsernameChange) { [weak self] (loginFields) in - - self?.emailLabel?.text = loginFields.username - self?.passwordField?.text = loginFields.password - self?.validateForm() - } - } - override func displayRemoteError(_ error: Error) { configureViewLoading(false) From 169179df22a7c3eb07d1d77aa9f416764f0fe5d2 Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Fri, 3 Dec 2021 06:18:05 +0200 Subject: [PATCH 3/5] Remove 1Password tests --- .../project.pbxproj | 4 --- .../WordPressAuthenticatorTests.swift | 19 ------------- .../Mocks/MockOnePasswordFacade.swift | 27 ------------------- 3 files changed, 50 deletions(-) delete mode 100644 WordPressAuthenticatorTests/Mocks/MockOnePasswordFacade.swift diff --git a/WordPressAuthenticator.xcodeproj/project.pbxproj b/WordPressAuthenticator.xcodeproj/project.pbxproj index 026177896..47041e493 100644 --- a/WordPressAuthenticator.xcodeproj/project.pbxproj +++ b/WordPressAuthenticator.xcodeproj/project.pbxproj @@ -121,7 +121,6 @@ BA53D64824DFDF97001F1ABF /* WordPressSourceTagTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64724DFDF97001F1ABF /* WordPressSourceTagTests.swift */; }; BA53D64B24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64A24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift */; }; BA53D64D24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64C24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift */; }; - BA53D64F24DFE981001F1ABF /* MockOnePasswordFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA53D64E24DFE981001F1ABF /* MockOnePasswordFacade.swift */; }; BA70352424F70C9F00B3AA1C /* ModalViewControllerPresenting.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA70352324F70C9F00B3AA1C /* ModalViewControllerPresenting.swift */; }; CE16177521B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */; }; CE16177821B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177721B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift */; }; @@ -334,7 +333,6 @@ BA53D64724DFDF97001F1ABF /* WordPressSourceTagTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordPressSourceTagTests.swift; sourceTree = ""; }; BA53D64A24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WordpressAuthenticatorProvider.swift; sourceTree = ""; }; BA53D64C24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModalViewControllerPresentingSpy.swift; sourceTree = ""; }; - BA53D64E24DFE981001F1ABF /* MockOnePasswordFacade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockOnePasswordFacade.swift; sourceTree = ""; }; BA70352324F70C9F00B3AA1C /* ModalViewControllerPresenting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalViewControllerPresenting.swift; sourceTree = ""; }; C736FF243DE333FCAB1C2614 /* Pods_WordPressAuthenticator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressAuthenticator.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressAuthenticatorDisplayStrings.swift; sourceTree = ""; }; @@ -815,7 +813,6 @@ BA53D64924DFE06C001F1ABF /* Mocks */ = { isa = PBXGroup; children = ( - BA53D64E24DFE981001F1ABF /* MockOnePasswordFacade.swift */, BA53D64C24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift */, BA53D64A24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift */, D85C36EB256E10EA00D56E34 /* MockNavigationController.swift */, @@ -1312,7 +1309,6 @@ BA53D64D24DFE4E6001F1ABF /* ModalViewControllerPresentingSpy.swift in Sources */, BA53D64624DFDE1D001F1ABF /* CredentialsTests.swift in Sources */, D85C36EC256E10EA00D56E34 /* MockNavigationController.swift in Sources */, - BA53D64F24DFE981001F1ABF /* MockOnePasswordFacade.swift in Sources */, 3F550D4E23DA429B007E5897 /* AppSelectorTests.swift in Sources */, BA53D64B24DFE07D001F1ABF /* WordpressAuthenticatorProvider.swift in Sources */, CE16177821B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift in Sources */, diff --git a/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift b/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift index 8c6c7d37f..b444d0be9 100644 --- a/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift +++ b/WordPressAuthenticatorTests/Authenticator/WordPressAuthenticatorTests.swift @@ -192,23 +192,4 @@ class WordPressAuthenticatorTests: XCTestCase { XCTAssertTrue(authenticator.handleWordPressAuthUrl(url!, rootViewController: UIViewController(), automatedTesting: true)) } - - // MARK: WordPressAuthenticator OnePassword Tests - func testFetchOnePasswordCredentialsSucceeds() { - let onePasswordFetcher = MockOnePasswordFacade(username: "username", password: "knockknock", otp: nil) - let loginFields = LoginFields() - loginFields.meta.userIsDotCom = true - - let expect = expectation(description: "Could fetch OnePassword credentials") - - WordPressAuthenticator.fetchOnePasswordCredentials(UIViewController(), sourceView: UIView(), loginFields: loginFields, onePasswordFetcher: onePasswordFetcher) { (credentials) in - - XCTAssertEqual(credentials.username, "username") - XCTAssertEqual(credentials.password, "knockknock") - XCTAssertEqual(credentials.multifactorCode, String()) - expect.fulfill() - } - - waitForExpectations(timeout: timeout, handler: nil) - } } diff --git a/WordPressAuthenticatorTests/Mocks/MockOnePasswordFacade.swift b/WordPressAuthenticatorTests/Mocks/MockOnePasswordFacade.swift deleted file mode 100644 index 94a56a3b5..000000000 --- a/WordPressAuthenticatorTests/Mocks/MockOnePasswordFacade.swift +++ /dev/null @@ -1,27 +0,0 @@ -import Foundation -@testable import WordPressAuthenticator - -class MockOnePasswordFacade: OnePasswordResultsFetcher { - private struct Parameters { - let username: String - let password: String - let otp: String? - } - - private let result: Result - - init(username: String, password: String, otp: String?) { - result = .success(Parameters(username: username, password: password, otp: otp)) - } - - init(error: OnePasswordError) { - result = .failure(error) - } - - func findLogin(for url: String, viewController: UIViewController, sender: Any, success: @escaping (String, String, String?) -> Void, failure: @escaping (OnePasswordError) -> Void) { - switch result { - case .failure(let error): failure(error) - case .success(let parameters): success(parameters.username, parameters.password, parameters.otp) - } - } -} From 1aa387f8b209fc86700abfd28d3ea86f6e480098 Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Fri, 3 Dec 2021 07:10:54 +0200 Subject: [PATCH 4/5] Remove 1Password logo --- .../Extensions/UIImage+Assets.swift | 7 ------- .../Resources/Assets.xcassets/Contents.json | 6 +++--- .../onepassword-button.imageset/Contents.json | 15 --------------- .../onepassword-button.pdf | Bin 4096 -> 0 bytes 4 files changed, 3 insertions(+), 25 deletions(-) delete mode 100644 WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/Contents.json delete mode 100644 WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/onepassword-button.pdf diff --git a/WordPressAuthenticator/Extensions/UIImage+Assets.swift b/WordPressAuthenticator/Extensions/UIImage+Assets.swift index 4ffaed4f8..01e242d60 100644 --- a/WordPressAuthenticator/Extensions/UIImage+Assets.swift +++ b/WordPressAuthenticator/Extensions/UIImage+Assets.swift @@ -22,13 +22,6 @@ extension UIImage { return UIImage(named: "site-address", in: bundle, compatibleWith: nil) ?? UIImage() } - /// Returns the Default Gravatar Placeholder Image. - /// - @objc - public static var onePasswordImage: UIImage { - return UIImage(named: "onepassword-button", in: bundle, compatibleWith: nil) ?? UIImage() - } - /// Returns the Link Image. /// @objc diff --git a/WordPressAuthenticator/Resources/Assets.xcassets/Contents.json b/WordPressAuthenticator/Resources/Assets.xcassets/Contents.json index da4a164c9..73c00596a 100644 --- a/WordPressAuthenticator/Resources/Assets.xcassets/Contents.json +++ b/WordPressAuthenticator/Resources/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/Contents.json b/WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/Contents.json deleted file mode 100644 index 94e6a33cb..000000000 --- a/WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "onepassword-button.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/onepassword-button.pdf b/WordPressAuthenticator/Resources/Assets.xcassets/onepassword-button.imageset/onepassword-button.pdf deleted file mode 100644 index ac17838f67bfe40bdbd00f3017f9edfc0afcf89c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 From 7bd0e7023b27df12627aac218eb255e5416af86e Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Fri, 3 Dec 2021 07:11:11 +0200 Subject: [PATCH 5/5] Remove 1Password from podspec --- WordPressAuthenticator.podspec | 1 - 1 file changed, 1 deletion(-) diff --git a/WordPressAuthenticator.podspec b/WordPressAuthenticator.podspec index 8eac98bd9..1c74c8bd5 100644 --- a/WordPressAuthenticator.podspec +++ b/WordPressAuthenticator.podspec @@ -33,7 +33,6 @@ Pod::Spec.new do |s| } s.header_dir = 'WordPressAuthenticator' - s.dependency '1PasswordExtension', '~> 1.8.6' s.dependency 'Alamofire', '~> 4.8' s.dependency 'CocoaLumberjack', '~> 3.5' s.dependency 'lottie-ios', '~> 3.1.6'