Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
627bb19313 | ||
|
|
6f3ef8c76b |
@@ -78,13 +78,16 @@
|
|||||||
(fn [can-save?]
|
(fn [can-save?]
|
||||||
(if can-save?
|
(if can-save?
|
||||||
(keychain/get-credentials
|
(keychain/get-credentials
|
||||||
(str key-uid "-auth")
|
(str key-uid "-hashed" "-auth")
|
||||||
#(callback (if % (oops/oget % "password") auth-method-none)))
|
#(callback (if % (oops/oget % "password") auth-method-none)))
|
||||||
(callback nil))))))
|
(callback nil))))))
|
||||||
|
|
||||||
(defn save-user-password!
|
(defn save-user-password!
|
||||||
[key-uid password]
|
[key-uid password]
|
||||||
(keychain/save-credentials key-uid key-uid (security/safe-unmask-data password) #()))
|
(keychain/save-credentials key-uid
|
||||||
|
key-uid
|
||||||
|
(security/safe-unmask-data password)
|
||||||
|
#()))
|
||||||
|
|
||||||
(re-frame/reg-fx
|
(re-frame/reg-fx
|
||||||
:keychain/get-user-password
|
:keychain/get-user-password
|
||||||
|
|||||||
@@ -33,24 +33,14 @@
|
|||||||
(rf/sub [:profile/customization-color]))
|
(rf/sub [:profile/customization-color]))
|
||||||
syncing-results? (= :syncing-results @state/root-id)]
|
syncing-results? (= :syncing-results @state/root-id)]
|
||||||
[rn/view {:style (style/buttons insets)}
|
[rn/view {:style (style/buttons insets)}
|
||||||
[standard-auth/button
|
[quo/button
|
||||||
(merge
|
(merge
|
||||||
{:size 40
|
{:size 40
|
||||||
:accessibility-label :enable-biometrics-button
|
:accessibility-label :enable-biometrics-button
|
||||||
:icon-left :i/face-id
|
:icon-left :i/face-id
|
||||||
:customization-color profile-color
|
:customization-color profile-color
|
||||||
:button-label (i18n/label :t/biometric-enable-button {:bio-type-label bio-type-label})}
|
:button-label (i18n/label :t/biometric-enable-button {:bio-type-label bio-type-label})}
|
||||||
(if syncing-results?
|
{:on-press #(rf/dispatch [:onboarding-2/sync-enable-biometrics])})]
|
||||||
{:theme theme
|
|
||||||
:blur? true
|
|
||||||
:on-enter-password (fn [entered-password]
|
|
||||||
(rf/dispatch
|
|
||||||
[:onboarding-2/authenticate-enable-biometrics
|
|
||||||
(security/safe-unmask-data
|
|
||||||
entered-password)])
|
|
||||||
(rf/dispatch [:hide-bottom-sheet]))
|
|
||||||
:auth-button-label (i18n/label :t/confirm)}
|
|
||||||
{:on-press #(rf/dispatch [:onboarding-2/enable-biometrics])}))]
|
|
||||||
[quo/button
|
[quo/button
|
||||||
{:accessibility-label :maybe-later-button
|
{:accessibility-label :maybe-later-button
|
||||||
:background :blur
|
:background :blur
|
||||||
|
|||||||
@@ -35,11 +35,10 @@
|
|||||||
{:biometric/authenticate {:on-success #(rf/dispatch [:onboarding-2/biometrics-done])
|
{:biometric/authenticate {:on-success #(rf/dispatch [:onboarding-2/biometrics-done])
|
||||||
:on-fail #(rf/dispatch [:onboarding-2/biometrics-fail %])}})
|
:on-fail #(rf/dispatch [:onboarding-2/biometrics-fail %])}})
|
||||||
|
|
||||||
(rf/defn authenticate-enable-biometrics
|
(rf/defn sync-enable-biometrics
|
||||||
{:events [:onboarding-2/authenticate-enable-biometrics]}
|
{:events [:onboarding-2/sync-enable-biometrics]}
|
||||||
[{:keys [db]} password]
|
[{:keys [db]} password]
|
||||||
{:db (-> db
|
{:db (-> db
|
||||||
(assoc-in [:onboarding-2/profile :password] password)
|
|
||||||
(assoc-in [:onboarding-2/profile :syncing?] true))
|
(assoc-in [:onboarding-2/profile :syncing?] true))
|
||||||
:biometric/authenticate {:on-success #(rf/dispatch [:onboarding-2/biometrics-done])
|
:biometric/authenticate {:on-success #(rf/dispatch [:onboarding-2/biometrics-done])
|
||||||
:on-fail #(rf/dispatch [:onboarding-2/biometrics-fail %])}})
|
:on-fail #(rf/dispatch [:onboarding-2/biometrics-fail %])}})
|
||||||
@@ -145,15 +144,15 @@
|
|||||||
(rf/defn onboarding-new-account-finalize-setup
|
(rf/defn onboarding-new-account-finalize-setup
|
||||||
{:events [:onboarding-2/finalize-setup]}
|
{:events [:onboarding-2/finalize-setup]}
|
||||||
[{:keys [db]}]
|
[{:keys [db]}]
|
||||||
(let [masked-password (get-in db [:onboarding-2/profile :password])
|
(let [syncing? (get-in db [:onboarding-2/profile :syncing?])
|
||||||
|
masked-password (get-in db [:onboarding-2/profile :password])
|
||||||
key-uid (get-in db [:profile/profile :key-uid])
|
key-uid (get-in db [:profile/profile :key-uid])
|
||||||
syncing? (get-in db [:onboarding-2/profile :syncing?])
|
|
||||||
biometric-enabled? (= (get-in db [:onboarding-2/profile :auth-method])
|
biometric-enabled? (= (get-in db [:onboarding-2/profile :auth-method])
|
||||||
constants/auth-method-biometric)]
|
constants/auth-method-biometric)]
|
||||||
(cond-> {:db (assoc db :onboarding-2/generated-keys? true)}
|
(cond-> {:db (assoc db :onboarding-2/generated-keys? true)}
|
||||||
biometric-enabled?
|
biometric-enabled?
|
||||||
(assoc :keychain/save-password-and-auth-method
|
(assoc :keychain/save-password-and-auth-method
|
||||||
{:key-uid key-uid
|
{:key-uid (if syncing? (str key-uid "-hashed") key-uid)
|
||||||
:masked-password masked-password
|
:masked-password masked-password
|
||||||
:on-success (fn []
|
:on-success (fn []
|
||||||
(if syncing?
|
(if syncing?
|
||||||
|
|||||||
@@ -42,11 +42,19 @@
|
|||||||
{:db (assoc-in db [:profile/login :processing] true)
|
{:db (assoc-in db [:profile/login :processing] true)
|
||||||
::login [key-uid (native-module/sha3 (security/safe-unmask-data password))]}))
|
::login [key-uid (native-module/sha3 (security/safe-unmask-data password))]}))
|
||||||
|
|
||||||
|
(rf/defn biometry-login
|
||||||
|
{:events [:profile.login/biometry-login]}
|
||||||
|
[{:keys [db]}]
|
||||||
|
(let [{:keys [key-uid password]} (:profile/login db)]
|
||||||
|
{:db (assoc-in db [:profile/login :processing] true)
|
||||||
|
::login [key-uid (security/safe-unmask-data password)]}))
|
||||||
|
|
||||||
(rf/defn login-local-paired-user
|
(rf/defn login-local-paired-user
|
||||||
{:events [:profile.login/local-paired-user]}
|
{:events [:profile.login/local-paired-user]}
|
||||||
[{:keys [db]}]
|
[{:keys [db]}]
|
||||||
(let [{:keys [key-uid password]} (get-in db [:syncing :profile])]
|
(let [{:keys [key-uid password]} (get-in db [:syncing :profile])]
|
||||||
{::login [key-uid password]}))
|
{:db (assoc-in db [:onboarding-2/profile :password] (security/mask-data password))
|
||||||
|
::login [key-uid password]}))
|
||||||
|
|
||||||
(rf/defn redirect-to-root
|
(rf/defn redirect-to-root
|
||||||
[{:keys [db] :as cofx}]
|
[{:keys [db] :as cofx}]
|
||||||
@@ -158,14 +166,25 @@
|
|||||||
{:on-success #(rf/dispatch [:profile.login/biometric-success])
|
{:on-success #(rf/dispatch [:profile.login/biometric-success])
|
||||||
:on-faile #(rf/dispatch [:profile.login/biometric-auth-fail])}})))
|
:on-faile #(rf/dispatch [:profile.login/biometric-auth-fail])}})))
|
||||||
|
|
||||||
(rf/defn biometric-auth-success
|
;; TODO store the password in the hash keychain
|
||||||
{:events [:profile.login/biometric-success]}
|
(rf/defn backwards-compatible-biometric-auth-success
|
||||||
|
{:events [:profile.login/backwards-compatible-biometric-success]}
|
||||||
[{:keys [db] :as cofx}]
|
[{:keys [db] :as cofx}]
|
||||||
(let [key-uid (get-in db [:profile/login :key-uid])]
|
(let [key-uid (get-in db [:profile/login :key-uid])]
|
||||||
(keychain/get-user-password cofx
|
(keychain/get-user-password cofx
|
||||||
key-uid
|
key-uid
|
||||||
#(rf/dispatch [:profile.login/get-user-password-success %]))))
|
#(rf/dispatch [:profile.login/get-user-password-success %]))))
|
||||||
|
|
||||||
|
(rf/defn biometric-auth-success
|
||||||
|
{:events [:profile.login/biometric-success]}
|
||||||
|
[{:keys [db] :as cofx}]
|
||||||
|
(let [key-uid (get-in db [:profile/login :key-uid])]
|
||||||
|
(keychain/get-user-password cofx
|
||||||
|
(str key-uid "-hashed")
|
||||||
|
#(if (nil? %)
|
||||||
|
(rf/dispatch [:profile.login/backwards-compatible-biometric-success])
|
||||||
|
(rf/dispatch [:profile.login/get-user-password-success %])))))
|
||||||
|
|
||||||
;; result of :keychain/get-auth-method above
|
;; result of :keychain/get-auth-method above
|
||||||
(rf/defn get-user-password-success
|
(rf/defn get-user-password-success
|
||||||
{:events [:profile.login/get-user-password-success]}
|
{:events [:profile.login/get-user-password-success]}
|
||||||
@@ -175,7 +194,7 @@
|
|||||||
cofx
|
cofx
|
||||||
{:db (assoc-in db [:profile/login :password] password)}
|
{:db (assoc-in db [:profile/login :password] password)}
|
||||||
(navigation/init-root :progress)
|
(navigation/init-root :progress)
|
||||||
(login))))
|
(biometry-login))))
|
||||||
|
|
||||||
(rf/defn biometric-auth-fail
|
(rf/defn biometric-auth-fail
|
||||||
{:events [:profile.login/biometric-auth-fail]}
|
{:events [:profile.login/biometric-auth-fail]}
|
||||||
|
|||||||
Reference in New Issue
Block a user