brave / brave-ios

Brave iOS Browser
https://brave.com
Mozilla Public License 2.0
1.7k stars 442 forks source link

Private Mode Biometric Authentication #7810

Closed soner-yuksel closed 1 year ago

soner-yuksel commented 1 year ago

Problem Description

The Private Tabs should be able to be. secured by local biometric authentication and this functionality should be enabled - disabled. This functionality became more desired after change in Safari with iOS 17.

Feature Overview

The existing local Biometric Authentication needs to be added to Mode changer in Tab-Tray. When user changes from normal mode to private if the settings related with this preference is enabled, the user should be prompted with local biometric _ pincode Authentication sequence.

Design

synctest1

Implementation Details

The biometric authentication should be providing the functionality of cancel in case user cant or does not want to authenticate while changing to private mode. User should not stuck on Authentication. And a toggle should be provided in order to disable this feature.

User Experience

  1. Press Private Button in Tab Tray
  2. Biometric Authentication pases
  3. Display Private tabs

Additional information

The Settings for this enhancement can be found under security in Settings and the functionality will be changed with ongoing changes to Tab-Tray new design sequences.

Uni-verse commented 1 year ago

Verified on iPhone X running iOS 16.5.1 per https://github.com/brave/brave-ios/issues/7855#issuecomment-1684482570

Uni-verse commented 1 year ago

Verified on iPad (7th Gen) running iPadOS 16.5.1 using version 1.57 (23.8.23.20)

Case: Fresh Profile - Verified Test Plan in https://github.com/brave/brave-ios/pull/7868#issue-1845883601. - Ensured enabling private mode lock will prompts user to authenticate. - Ensured disabling `Require Face ID` toggle and enabling `Browser lock` setting still works. - Ensured user is able to enter passcode to unlock private tabs when face id fails. - Ensured user is able to cancel authentication. - Ensured disabling `Keep Private Tabs` toggle will close all private tabs. Example | Example | Example | Example | Example -|-|-|-|- ![Screenshot 2023-08-24 at 12 15 33 PM](https://github.com/brave/brave-ios/assets/17885425/04b480e7-2cf4-479d-9478-977f497c558d) | ![Screenshot 2023-08-24 at 12 19 56 PM](https://github.com/brave/brave-ios/assets/17885425/990cca75-08cc-4438-b03e-df2514a579db) | ![Screenshot 2023-08-24 at 12 20 23 PM](https://github.com/brave/brave-ios/assets/17885425/76ac468f-5c5d-4b53-880b-28e4de03b958) | ![Screenshot 2023-08-24 at 12 20 47 PM](https://github.com/brave/brave-ios/assets/17885425/7d78ff0f-6de3-4913-800e-b0ef42ed8bae) | ![Screenshot 2023-08-24 at 12 21 42 PM](https://github.com/brave/brave-ios/assets/17885425/84e9f5b1-a3b8-4473-8de2-dd8c68765616)
Case: Existing Profile - Verified Test Plan in https://github.com/brave/brave-ios/pull/7868#issue-1845883601. - Ensured enabling private mode lock will prompts user to authenticate on existing profile. - Ensured user is able to enter passcode to unlock private tabs when face id fails. - Ensured disabling `Require Touch ID` toggle and enabling `Browser lock` setting still works. - Ensured user is able to cancel authentication. - Ensured disabling `Keep Private Tabs` toggle will close all private tabs.
Case: Private tab entry points - Ensured opening private tab works from NTP works - Ensured opening private tab works using + works - Ensured opening private tab works from promo widget - Ensured opening private tab works from widgets on lockscreen - Ensured opening private tabs works from iOS home screen - Ensured opening articles on news widget in private tab when enabled
Case: Browser Lock enabled - Ensured disabling `Require Touch ID` toggle and enabling `Browser lock` setting still works. - Ensured enabling both Require Touch ID and Browser Lock will require authentication for both launching browser and private tabs access.
Case: Private Browsing Mode - Verified activating Private Browsing will remove the Private Tabs setting menu

Encountered Issues: https://github.com/brave/brave-ios/issues/7952 https://github.com/brave/brave-ios/issues/7957 https://github.com/brave/brave-ios/issues/7953