Procházet zdrojové kódy

enhance(rtc,e2ee): update exceptions

rcmerci před 4 dny
rodič
revize
29153ff0fd

+ 15 - 11
src/main/frontend/worker/rtc/crypt.cljs

@@ -7,7 +7,6 @@
             [frontend.common.crypt :as crypt]
             [frontend.common.missionary :as c.m]
             [frontend.worker.rtc.ws-util :as ws-util]
-            [lambdaisland.glogi :as log]
             [missionary.core :as m]
             [promesa.core :as p]))
 
@@ -47,8 +46,9 @@
                                            {:action "upload-graph-encrypted-aes-key"
                                             :graph-uuid graph-uuid
                                             :encrypted-aes-key encrypted-aes-key}))]
-      (when-not (:success response)
-        (log/error :msg "Failed to upload graph encrypted AES key" :response response)))))
+      (when (:ex-data response)
+        (throw (ex-info (:ex-message response)
+                        (assoc (:ex-data response) :type :rtc.exception/upload-graph-encrypted-aes-key-error)))))))
 
 (defn task--upload-user-rsa-key-pair
   "Uploads the user's RSA key pair to the server."
@@ -60,8 +60,9 @@
                                             :user-id               user-id
                                             :public-key            public-key
                                             :encrypted-private-key encrypted-private-key}))]
-      (when-not (:success response)
-        (log/error :msg "Failed to upload user RSA key pair" :response response)))))
+      (when (:ex-data response)
+        (throw (ex-info (:ex-message response)
+                        (assoc (:ex-data response) :type :rtc.exception/upload-user-rsa-key-pair-error)))))))
 
 (defn task--fetch-user-rsa-key-pair
   "Fetches the user's RSA key pair, from indexeddb or server."
@@ -76,13 +77,15 @@
               response (m/? (ws-util/send&recv get-ws-create-task
                                                {:action "fetch-user-rsa-key-pair"
                                                 :user-id user-id}))]
-          (if (:success response)
+          (if (:ex-data response)
+            (throw (ex-info (:ex-message response)
+                            (assoc (:ex-data response)
+                                   :type :rtc.exception/fetch-user-rsa-key-pair-error)))
             (let [retrieved-key-pair (:body response)]
               (c.m/<? (<set-item! (user-rsa-key-pair-idb-key user-id) retrieved-key-pair))
               (let [private-key (c.m/<? (crypt/<decrypt-private-key password (:encrypted-private-key retrieved-key-pair)))]
                 {:public-key (:public-key retrieved-key-pair)
-                 :private-key private-key}))
-            (log/error :msg "Failed to fetch user RSA key pair" :response response)))))))
+                 :private-key private-key}))))))))
 
 (defn task--fetch-graph-aes-key
   "Fetches the AES key for a graph, from indexeddb or server."
@@ -95,11 +98,12 @@
               response (m/? (ws-util/send&recv get-ws-create-task
                                                {:action "fetch-graph-aes-key"
                                                 :graph-uuid graph-uuid}))]
-          (if (:success response)
+          (if (:ex-data response)
+            (throw (ex-info (:ex-message response) (assoc (:ex-data response)
+                                                          :type :rtc.exception/fetch-graph-aes-key-error)))
             (let [fetched-encrypted-aes-key (:body response)]
               (c.m/<? (<set-item! (graph-encrypted-aes-key-idb-key graph-uuid) fetched-encrypted-aes-key))
-              (c.m/<? (crypt/<decrypt-aes-key private-key fetched-encrypted-aes-key)))
-            (log/error :msg "Failed to fetch graph AES key" :response response)))))))
+              (c.m/<? (crypt/<decrypt-aes-key private-key fetched-encrypted-aes-key)))))))))
 
 (comment
   (do

+ 7 - 1
src/main/frontend/worker/rtc/exception.cljs

@@ -25,7 +25,13 @@ When response from remote is too huge(> 32KB),
 the server will put it to s3 and return its presigned-url to clients."}
   :rtc.exception/bad-request-body {:doc "bad request body, rejected by server-schema"}
   :rtc.exception/not-allowed {:doc "this api-call is not allowed"}
-  :rtc.exception/ws-timeout {:doc "websocket timeout"})
+  :rtc.exception/ws-timeout {:doc "websocket timeout"}
+
+  :rtc.exception/fetch-user-rsa-key-pair-error {:doc "Failed to fetch user RSA key pair from server"}
+  :rtc.exception/fetch-graph-aes-key-error {:doc "Failed to fetch graph AES key from server"}
+  :rtc.exception/upload-graph-encrypted-aes-key-error {:doc "Failed to upload graph encrypted AES key to server"}
+  :rtc.exception/upload-user-rsa-key-pair-error {:doc "Failed to upload user RSA key pair to server"}
+  )
 
 (def ex-ws-already-disconnected
   (ex-info "websocket conn is already disconnected" {:type :rtc.exception/ws-already-disconnected}))