Bläddra i källkod

feat(encryption): add warning text and setting option

Tienson Qin 4 år sedan
förälder
incheckning
6febfa02bf

+ 7 - 2
src/main/frontend/components/encryption.cljs

@@ -7,7 +7,8 @@
             [frontend.db.utils :as db-utils]
             [clojure.string :as string]
             [frontend.state :as state]
-            [frontend.handler.metadata :as metadata-handler]))
+            [frontend.handler.metadata :as metadata-handler]
+            [frontend.ui :as ui]))
 
 (rum/defcs encryption-dialog-inner <
   (rum/local false ::reveal-secret-phrase?)
@@ -57,9 +58,13 @@
       [:div
        [:div.sm:flex.sm:items-start
         [:div.mt-3.text-center.sm:mt-0.sm:text-left
-         [:h3#modal-headline.text-lg.leading-6.font-medium.text-gray-900
+         [:h3#modal-headline.text-lg.leading-6.font-medium.text-gray-900.font-bold
           "Enter a password"]]]
 
+       (ui/admonition
+        :warning
+        [:div.text-gray-700
+         "If you lose your password, all the data can't be decrypted!! Make sure keeping a secure backup of your password."])
        [:input.form-input.block.w-full.sm:text-sm.sm:leading-5.my-2
         {:auto-focus true
          :style {:color "#000"}

+ 28 - 24
src/main/frontend/components/settings.cljs

@@ -138,6 +138,7 @@
         enable-timetracking? (state/enable-timetracking?)
         current-repo (state/get-current-repo)
         enable-journals? (state/enable-journals? current-repo)
+        enable-encryption? (state/enable-encryption? current-repo)
         enable-git-auto-push? (state/enable-git-auto-push? current-repo)
         enable-block-time? (state/enable-block-time?)
         show-brackets? (state/show-brackets?)
@@ -292,6 +293,13 @@
                                      :else
                                      (notification/show! "Please make sure the page exists!" :warning))))}]]]])
 
+         (toggle "enable_encryption"
+                 (t :settings-page/enable-encryption)
+                 enable-encryption?
+                 (fn []
+                   (let [value (not enable-encryption?)]
+                     (config-handler/set-config! :feature/enable-encryption? value))))
+
          (when (string/starts-with? current-repo "https://")
            (toggle "enable_git_auto_push"
                    "Enable Git auto push"
@@ -300,6 +308,25 @@
                      (let [value (not enable-git-auto-push?)]
                        (config-handler/set-config! :git-auto-push value))))) [:hr]
 
+         [:div.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start.sm:pt-5
+          [:label.block.text-sm.font-medium.leading-5.sm:mt-px.sm:pt-2.opacity-70
+           (t :settings-page/current-version)]
+          [:div.mt-1.sm:mt-0.sm:col-span-2
+           [:p version]
+           (if (util/electron?) (app-updater))]]
+
+         [:div.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start.sm:pt-5
+          [:label.block.text-sm.font-medium.leading-5.sm:mt-px.sm:pt-2.opacity-70
+           {:for "developer_mode"}
+           (t :settings-page/developer-mode)]
+          [:div.mt-1.sm:mt-0.sm:col-span-2
+           [:div.max-w-lg.rounded-md.shadow-sm.sm:max-w-xs
+            (ui/button (if developer-mode? (t :settings-page/disable-developer-mode) (t :settings-page/enable-developer-mode))
+                       :on-click #(state/set-developer-mode! (not developer-mode?)))]]]
+
+         [:br]
+         (t :settings-page/developer-mode-desc)
+
          (when logged?
            [:div
             (ui/admonition
@@ -325,30 +352,7 @@
                                     (if (= "Enter" k)
                                       (when-let [server (util/evalue event)]
                                         (user-handler/set-cors! server)
-                                        (notification/show! "Custom CORS proxy updated successfully!" :success)))))}]]]]
-
-            [:hr]])
-
-         [:div.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start.sm:pt-5
-          [:label.block.text-sm.font-medium.leading-5.sm:mt-px.sm:pt-2.opacity-70
-           (t :settings-page/current-version)]
-          [:div.mt-1.sm:mt-0.sm:col-span-2
-           [:p version]
-           (if (util/electron?) (app-updater))]]
-
-         [:hr]
-
-         [:div.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start.sm:pt-5
-          [:label.block.text-sm.font-medium.leading-5.sm:mt-px.sm:pt-2.opacity-70
-           {:for "developer_mode"}
-           (t :settings-page/developer-mode)]
-          [:div.mt-1.sm:mt-0.sm:col-span-2
-           [:div.max-w-lg.rounded-md.shadow-sm.sm:max-w-xs
-            (ui/button (if developer-mode? (t :settings-page/disable-developer-mode) (t :settings-page/enable-developer-mode))
-                       :on-click #(state/set-developer-mode! (not developer-mode?)))]]]
-
-         [:br]
-         (t :settings-page/developer-mode-desc)
+                                        (notification/show! "Custom CORS proxy updated successfully!" :success)))))}]]]]])
 
          [:hr]
 

+ 2 - 0
src/main/frontend/dicts.cljs

@@ -285,6 +285,7 @@ title: How to take dummy notes?
         :settings-page/preferred-workflow "Preferred workflow"
         :settings-page/enable-timetracking "Enable timetracking"
         :settings-page/enable-journals "Enable journals"
+        :settings-page/enable-encryption "Enable encryption feature"
         :settings-page/home-default-page "Set the default home page"
         :settings-page/enable-block-time "Enable block timestamps"
         :settings-page/dont-use-other-peoples-proxy-servers "Don't use other people's proxy servers. It's very dangerous, which could make your token and notes stolen. Logseq will not be responsible for this loss if you use other people's proxy servers. You can deploy it yourself, check "
@@ -1005,6 +1006,7 @@ title: How to take dummy notes?
            :settings-page/preferred-workflow "首选工作流"
            :settings-page/enable-timetracking "开启 timetracking"
            :settings-page/enable-journals "开启日记"
+           :settings-page/enable-encryption "激活加密功能"
            :settings-page/home-default-page "设置首页默认页面"
            :settings-page/enable-block-time "记录 block 创建/修改时间"
            :settings-page/dont-use-other-peoples-proxy-servers "不要使用其他人的代理服务器。这非常危险,可能会使您的令牌和笔记被盗。 如果您使用其他人的代理服务器,Logseq 将不会对此损失负责。您可以自己部署它,请查阅 "

+ 1 - 1
src/main/frontend/handler/repo.cljs

@@ -200,7 +200,7 @@
                                     (:file/content %)) files)]
           (file-handler/restore-config! repo-url content true))))
     (when first-clone?
-      (if (not db-encrypted?)
+      (if (and (not db-encrypted?) (state/enable-encryption? repo-url))
         (state/set-modal!
          (encryption/encryption-setup-dialog
           repo-url

+ 5 - 0
src/main/frontend/state.cljs

@@ -193,6 +193,11 @@
   (not (false? (:feature/enable-journals?
                 (get (sub-config) repo)))))
 
+(defn enable-encryption?
+  [repo]
+  (:feature/enable-encryption?
+   (get (sub-config) repo)))
+
 (defn enable-git-auto-push?
   [repo]
   (not (false? (:git-auto-push