Kaynağa Gözat

Add feature: support to do other type encrypted requests.

ZRY 1 yıl önce
ebeveyn
işleme
2862d6b4df
2 değiştirilmiş dosya ile 80 ekleme ve 1 silme
  1. 79 0
      index.js
  2. 1 1
      package.json

+ 79 - 0
index.js

@@ -203,6 +203,85 @@ class ZLLAuth1Frontend {
         })
     }
 
+    DoOtherEncryptedRequestWithAutoInitSecure(reqArgsData, url) {
+        return new Promise((resolve, reject) => {
+            if (this.cryptReady) {
+                this.DoOtherEncryptedRequest(reqArgsData, url)
+                    .then((res) => {
+                        resolve(res)
+                    }, (err) => {
+                        reject(err)
+                    })
+                    .catch((err) => {
+                        throw err
+                    })
+            } else {
+                this.InitSecure()
+                    .then(() => {
+                        this.DoOtherEncryptedRequest(reqArgsData, url)
+                            .then((res) => {
+                                resolve(res)
+                            }, (err) => {
+                                reject(err)
+                            })
+                            .catch((err) => {
+                                throw err
+                            })
+                    })
+                    .catch((err) => {
+                        throw err
+                    })
+            }
+        })
+    }
+    
+    DoOtherEncryptedRequest(reqArgsData, url) {
+        return new Promise((resolve, reject) => {
+            if (!this.cryptReady) {
+                throw new Error("zllauthv1 frontend secure module not init")
+            }
+            var jsonStr = JSON.stringify(reqArgsData)
+            var cm = 1;
+            if (this.encrypt_info.cipherMode === "C1C3C2") {
+                cm = 1;
+            } else {
+                cm = 0;
+            }
+            var ct = this.sm2.doEncrypt(jsonStr, this.encrypt_info.pubkey, cm)
+            var fullCt = this.encrypt_info.header + ct
+            var apiData = { login_data: fullCt }
+            this.axios.post(url, apiData)
+                .then((res) => {
+                    if (res.data.suc) {
+                        if(res.data.data){
+                            resolve(res.data.data)
+                        }else{
+                            reject({
+                            "ecode": "internal_error",
+                            "emsg": {
+                                "zh_CN": "内部错误(若您是专业人士,需要了解错误细节,详见浏览器脚本控制台)",
+                                "en_US": "Internal error (if you want detail, please se browser's script console)"
+                            },
+                            "raw_response": res.data
+                            })
+                        }
+                    } else {
+                        reject({
+                            "ecode": "internal_error",
+                            "emsg": {
+                                "zh_CN": "内部错误(若您是专业人士,需要了解错误细节,详见浏览器脚本控制台)",
+                                "en_US": "Internal error (if you want detail, please se browser's script console)"
+                            },
+                            "raw_response": res.data
+                        })
+                    }
+                })
+                .catch((err) => {
+                    throw err
+                })
+        })
+    }
+
     __wrapLoginError(eresp) {
         switch (eresp.login_ecode) {
             case "invalid_username_or_password": {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zllauth1-frontend",
-  "version": "1.1.10",
+  "version": "1.2.0",
   "description": "ZLLAuth V1 frontend library",
   "main": "index.js",
   "repository": "https://git.swzry.com/zry/zllauth1-frontend.git",