From 59b4f4889760d57a927c4b7b024ec50952a9e268 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 27 Nov 2022 18:12:59 +0700 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B0=20=D0=BE=D0=B3=D1=80=D0=B0=D0=BD=D0=B8=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Api/Api.vue | 22 +++++++- client/components/App.vue | 5 +- server/config/base.js | 1 + server/config/index.js | 1 + server/controllers/WebSocketController.js | 61 ++++++++++++++++++++--- 5 files changed, 80 insertions(+), 10 deletions(-) diff --git a/client/components/Api/Api.vue b/client/components/Api/Api.vue index c2fb977..59da42b 100644 --- a/client/components/Api/Api.vue +++ b/client/components/Api/Api.vue @@ -60,10 +60,21 @@ const componentOptions = { settings() { this.loadSettings(); }, + modelValue(newValue) { + this.accessGranted = newValue; + }, + accessGranted(newValue) { + this.$emit('update:modelValue', newValue); + } }, }; class Api { _options = componentOptions; + _props = { + modelValue: Boolean, + }; + accessGranted = false; + busyDialogVisible = false; mainMessage = ''; jobMessage = ''; @@ -123,7 +134,13 @@ class Api { }); if (result && result.value) { - const accessToken = utils.toHex(cryptoUtils.sha256(result.value)); + //получим свежую соль + const response = await wsc.message(await wsc.send({}), 10); + let salt = ''; + if (response && response.error == 'need_access_token' && response.salt) + salt = response.salt; + + const accessToken = utils.toHex(cryptoUtils.sha256(result.value + salt)); this.commit('setSettings', {accessToken}); } } finally { @@ -192,10 +209,13 @@ class Api { const response = await wsc.message(await wsc.send(params), timeoutSecs); if (response && response.error == 'need_access_token') { + this.accessGranted = false; await this.showPasswordDialog(); } else if (response && response.error == 'server_busy') { + this.accessGranted = true; await this.showBusyDialog(); } else { + this.accessGranted = true; if (response.error) { throw new Error(response.error); } diff --git a/client/components/App.vue b/client/components/App.vue index 8e46141..c83b25b 100644 --- a/client/components/App.vue +++ b/client/components/App.vue @@ -1,10 +1,10 @@