소스 검색

enhance(ux): add warning on encryption password

Tienson Qin 4 주 전
부모
커밋
da55c1f1c1
1개의 변경된 파일52개의 추가작업 그리고 25개의 파일을 삭제
  1. 52 25
      src/main/frontend/components/settings.cljs

+ 52 - 25
src/main/frontend/components/settings.cljs

@@ -1199,6 +1199,32 @@
   [:div.panel-wrap.is-collaboration.mb-8
    (settings-rtc-members)])
 
+(rum/defc reset-encryption-password
+  [current-password new-password {:keys [set-new-password!
+                                         reset-password-status
+                                         on-click]}]
+  (let [[reset? set-reset!] (hooks/use-state false)]
+    (if reset?
+      [:div.flex.flex-col.gap-4
+       [:label.opacity-70 {:for "current-password"} "Current password"]
+       (shui/toggle-password
+        {:id "current-password"
+         :value current-password
+         :disabled true})
+       [:label.opacity-70 {:for "new-password"} "Set new Password"]
+       (shui/toggle-password
+        {:id "new-password"
+         :value new-password
+         :on-change #(set-new-password! (util/evalue %))})
+       (when reset-password-status [:p reset-password-status])
+       (shui/button
+        {:on-click on-click
+         :disabled (string/blank? new-password)}
+        "Reset Password")]
+      (shui/button
+       {:on-click #(set-reset! true)}
+       "Reset Password"))))
+
 (rum/defc encryption
   []
   [:div.panel-wrap.is-encryption.mb-8
@@ -1246,31 +1272,32 @@
                              (p/catch set-init-key-err!)))}
             "Init E2EE encrypt-key-pair")]
           rsa-key-pair
-          [:div.flex.flex-col.gap-4
-           ;; [:p "E2EE key-pair already generated!"]
-           [:label.opacity-70 {:for "current-password"} "Current password"]
-           (shui/toggle-password
-            {:id "current-password"
-             :value current-password
-             :disabled true})
-           [:label.opacity-70 {:for "new-password"} "Set new Password"]
-           (shui/toggle-password
-            {:id "new-password"
-             :value new-password
-             :on-change #(set-new-password! (util/evalue %))})
-           (when reset-password-status [:p reset-password-status])
-           (shui/button
-            {:on-click (fn []
-                         (-> (p/do!
-                              (set-reset-password-status! "Updating password ...")
-                              (state/<invoke-db-worker :thread-api/reset-e2ee-password
-                                                       token refresh-token user-uuid new-password)
-                              (set-reset-password-status! "Password updated successfully!"))
-                             (p/catch (fn [e]
-                                        (log/error :reset-password-failed e)
-                                        (set-reset-password-status! "Failed to update password.")))))
-             :disabled (string/blank? new-password)}
-            "Reset Password")]))])])
+          (let [on-submit (fn []
+                            (-> (p/do!
+                                 (set-reset-password-status! "Updating password ...")
+                                 (state/<invoke-db-worker :thread-api/reset-e2ee-password
+                                                          token refresh-token user-uuid new-password)
+                                 (set-reset-password-status! "Password updated successfully!"))
+                                (p/catch (fn [e]
+                                           (log/error :reset-password-failed e)
+                                           (set-reset-password-status! "Failed to update password.")))))]
+            [:div.flex.flex-col.gap-4
+             ;; [:p "E2EE key-pair already generated!"]
+             [:div.flex.flex-col
+              [:p
+               [:span "Please make sure you "]
+               "remember the password you have set, as we are unable to reset or retrieve it in case you forget it, "
+               [:span "and we recommend you "]
+               "keep a secure backup "
+               [:span "of the password."]]
+
+              [:p
+               "If you lose your password, all of your data in the cloud can’t be decrypted. "
+               [:span "You will still be able to access the local version of your graph."]]]
+             (reset-encryption-password current-password new-password
+                                        {:reset-password-status reset-password-status
+                                         :set-new-password! set-new-password!
+                                         :on-click on-submit})])))])])
 
 (rum/defc mcp-server-row
   [t]