diff --git a/src/WebApi_network.cpp b/src/WebApi_network.cpp index 27760f9..4c3cf2b 100644 --- a/src/WebApi_network.cpp +++ b/src/WebApi_network.cpp @@ -7,6 +7,7 @@ #include "AsyncJson.h" #include "Configuration.h" #include "NetworkSettings.h" +#include "WebApi.h" #include "helper.h" void WebApiNetworkClass::init(AsyncWebServer* server) @@ -52,6 +53,10 @@ void WebApiNetworkClass::onNetworkStatus(AsyncWebServerRequest* request) void WebApiNetworkClass::onNetworkAdminGet(AsyncWebServerRequest* request) { + if (!WebApi.checkCredentials(request)) { + return; + } + AsyncJsonResponse* response = new AsyncJsonResponse(); JsonObject root = response->getRoot(); const CONFIG_T& config = Configuration.get(); @@ -72,6 +77,10 @@ void WebApiNetworkClass::onNetworkAdminGet(AsyncWebServerRequest* request) void WebApiNetworkClass::onNetworkAdminPost(AsyncWebServerRequest* request) { + if (!WebApi.checkCredentials(request)) { + return; + } + AsyncJsonResponse* response = new AsyncJsonResponse(); JsonObject retMsg = response->getRoot(); retMsg[F("type")] = F("warning"); diff --git a/webapp/src/router/index.ts b/webapp/src/router/index.ts index 6f0b997..f4d6c7b 100644 --- a/webapp/src/router/index.ts +++ b/webapp/src/router/index.ts @@ -100,7 +100,7 @@ const router = createRouter({ router.beforeEach((to, from, next) => { // redirect to login page if not logged in and trying to access a restricted page const publicPages = ['/', '/login', '/about', '/info/network', '/info/system', '/info/ntp', '/info/mqtt', - '/settings/network', '/settings/ntp', '/settings/mqtt', '/settings/inverter', '/firmware/upgrade', '/settings/config', ]; + '/settings/ntp', '/settings/mqtt', '/settings/inverter', '/firmware/upgrade', '/settings/config', ]; const authRequired = !publicPages.includes(to.path); const loggedIn = localStorage.getItem('user'); diff --git a/webapp/src/views/NetworkAdminView.vue b/webapp/src/views/NetworkAdminView.vue index a9c0b53..ea617fd 100644 --- a/webapp/src/views/NetworkAdminView.vue +++ b/webapp/src/views/NetworkAdminView.vue @@ -104,6 +104,7 @@ import { defineComponent } from 'vue'; import BasePage from '@/components/BasePage.vue'; import BootstrapAlert from "@/components/BootstrapAlert.vue"; +import { handleResponse, authHeader } from '@/utils/authentication'; import type { NetworkConfig } from "@/types/NetworkkConfig"; export default defineComponent({ @@ -126,8 +127,8 @@ export default defineComponent({ methods: { getNetworkConfig() { this.dataLoading = true; - fetch("/api/network/config") - .then((response) => response.json()) + fetch("/api/network/config", { headers: authHeader() }) + .then(handleResponse) .then((data) => { this.networkConfigList = data; this.dataLoading = false; @@ -141,15 +142,10 @@ export default defineComponent({ fetch("/api/network/config", { method: "POST", + headers: authHeader(), body: formData, }) - .then(function (response) { - if (response.status != 200) { - throw response.status; - } else { - return response.json(); - } - }) + .then(handleResponse) .then( (response) => { this.alertMessage = response.message;