mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 22:25:01 +00:00
fix: can't download invited graph
This commit is contained in:
@@ -351,6 +351,11 @@
|
|||||||
(assert (and k @e2ee-store))
|
(assert (and k @e2ee-store))
|
||||||
(idb-keyval/set k value @e2ee-store))
|
(idb-keyval/set k value @e2ee-store))
|
||||||
|
|
||||||
|
(defn- <clear-item!
|
||||||
|
[k]
|
||||||
|
(assert (and k @e2ee-store))
|
||||||
|
(idb-keyval/del k @e2ee-store))
|
||||||
|
|
||||||
(defn e2ee-base
|
(defn e2ee-base
|
||||||
[]
|
[]
|
||||||
(http-base-url))
|
(http-base-url))
|
||||||
@@ -471,10 +476,12 @@
|
|||||||
|
|
||||||
(defn <fetch-graph-aes-key-for-download
|
(defn <fetch-graph-aes-key-for-download
|
||||||
[repo graph-id]
|
[repo graph-id]
|
||||||
(let [base (e2ee-base)]
|
(let [base (e2ee-base)
|
||||||
|
aes-key-k (graph-encrypted-aes-key-idb-key graph-id)]
|
||||||
(when-not (and (string? base) (string? graph-id))
|
(when-not (and (string? base) (string? graph-id))
|
||||||
(fail-fast :db-sync/missing-field {:base base :graph-id graph-id}))
|
(fail-fast :db-sync/missing-field {:base base :graph-id graph-id}))
|
||||||
(p/let [{:keys [public-key encrypted-private-key]} (<fetch-user-rsa-key-pair-raw base)]
|
(p/let [{:keys [public-key encrypted-private-key]} (<fetch-user-rsa-key-pair-raw base)]
|
||||||
|
(<clear-item! aes-key-k)
|
||||||
(when-not (and (string? public-key) (string? encrypted-private-key))
|
(when-not (and (string? public-key) (string? encrypted-private-key))
|
||||||
(fail-fast :db-sync/missing-field {:graph-id graph-id :field :user-rsa-key-pair}))
|
(fail-fast :db-sync/missing-field {:graph-id graph-id :field :user-rsa-key-pair}))
|
||||||
(p/let [private-key (<decrypt-private-key encrypted-private-key)
|
(p/let [private-key (<decrypt-private-key encrypted-private-key)
|
||||||
@@ -487,12 +494,12 @@
|
|||||||
(when-not encrypted-aes-key
|
(when-not encrypted-aes-key
|
||||||
(fail-fast :db-sync/missing-field {:graph-id graph-id :field :encrypted-aes-key}))
|
(fail-fast :db-sync/missing-field {:graph-id graph-id :field :encrypted-aes-key}))
|
||||||
(when (and encrypted-aes-key (nil? local-encrypted))
|
(when (and encrypted-aes-key (nil? local-encrypted))
|
||||||
(<set-item! (graph-encrypted-aes-key-idb-key graph-id) encrypted-aes-key))
|
(<set-item! aes-key-k encrypted-aes-key))
|
||||||
(p/let [aes-key (crypt/<decrypt-aes-key private-key encrypted-aes-key)]
|
(p/let [aes-key (crypt/<decrypt-aes-key private-key encrypted-aes-key)]
|
||||||
(swap! *repo->aes-key assoc repo aes-key)
|
(swap! *repo->aes-key assoc repo aes-key)
|
||||||
aes-key)))))
|
aes-key)))))
|
||||||
|
|
||||||
(defn- <grant-graph-access!
|
(defn <grant-graph-access!
|
||||||
[repo graph-id target-email]
|
[repo graph-id target-email]
|
||||||
(if-not (graph-e2ee? repo)
|
(if-not (graph-e2ee? repo)
|
||||||
(p/resolved nil)
|
(p/resolved nil)
|
||||||
@@ -522,10 +529,6 @@
|
|||||||
{:response-schema :e2ee/grant-access})]
|
{:response-schema :e2ee/grant-access})]
|
||||||
nil))))))
|
nil))))))
|
||||||
|
|
||||||
(defn grant-graph-access!
|
|
||||||
[repo graph-id target-email]
|
|
||||||
(<grant-graph-access! repo graph-id target-email))
|
|
||||||
|
|
||||||
(defn- <encrypt-text-value
|
(defn- <encrypt-text-value
|
||||||
[aes-key value]
|
[aes-key value]
|
||||||
(assert (string? value) (str "encrypting value should be a string, value: " value))
|
(assert (string? value) (str "encrypting value should be a string, value: " value))
|
||||||
|
|||||||
@@ -423,7 +423,7 @@
|
|||||||
|
|
||||||
(def-thread-api :thread-api/db-sync-grant-graph-access
|
(def-thread-api :thread-api/db-sync-grant-graph-access
|
||||||
[repo graph-id target-email]
|
[repo graph-id target-email]
|
||||||
(db-sync/grant-graph-access! repo graph-id target-email))
|
(db-sync/<grant-graph-access! repo graph-id target-email))
|
||||||
|
|
||||||
(def-thread-api :thread-api/db-sync-ensure-user-rsa-keys
|
(def-thread-api :thread-api/db-sync-ensure-user-rsa-keys
|
||||||
[]
|
[]
|
||||||
@@ -643,10 +643,10 @@
|
|||||||
(def-thread-api :thread-api/db-sync-import-kvs-rows
|
(def-thread-api :thread-api/db-sync-import-kvs-rows
|
||||||
[repo rows reset? graph-id remote-tx]
|
[repo rows reset? graph-id remote-tx]
|
||||||
(p/let [_ (when reset? (close-db! repo))
|
(p/let [_ (when reset? (close-db! repo))
|
||||||
db (ensure-db-sync-import-db! repo reset?)
|
|
||||||
aes-key (db-sync/<fetch-graph-aes-key-for-download repo graph-id)
|
aes-key (db-sync/<fetch-graph-aes-key-for-download repo graph-id)
|
||||||
_ (when (nil? aes-key)
|
_ (when (nil? aes-key)
|
||||||
(db-sync/fail-fast :db-sync/missing-field {:repo repo :field :aes-key}))
|
(db-sync/fail-fast :db-sync/missing-field {:repo repo :field :aes-key}))
|
||||||
|
db (ensure-db-sync-import-db! repo reset?)
|
||||||
batches (medley/indexed (partition-all 100 rows))]
|
batches (medley/indexed (partition-all 100 rows))]
|
||||||
(rtc-log-and-state/rtc-log :rtc.log/download
|
(rtc-log-and-state/rtc-log :rtc.log/download
|
||||||
{:sub-type :download-progress
|
{:sub-type :download-progress
|
||||||
|
|||||||
Reference in New Issue
Block a user