From 030c1bdcbad36c4b9352a656143dced1a5f2308d Mon Sep 17 00:00:00 2001 From: Donald Zou Date: Fri, 5 Sep 2025 16:39:59 +0800 Subject: [PATCH] Added toggle for client side app --- src/client.py | 3 ++ src/dashboard.py | 8 ++++ src/modules/DashboardConfig.py | 2 +- src/static/app/public/json/manifest.json | 4 +- .../clientComponents/clientSettings.vue | 48 +++++++++++-------- .../clientComponents/clientViewer.vue | 4 +- 6 files changed, 43 insertions(+), 26 deletions(-) diff --git a/src/client.py b/src/client.py index 7f665b33..cc7ac218 100644 --- a/src/client.py +++ b/src/client.py @@ -45,6 +45,9 @@ def createClientBlueprint(wireguardConfigurations: dict[WireguardConfiguration], @client.before_request def clientBeforeRequest(): + if not dashboardConfig.GetConfig("Clients", "enable")[1]: + abort(404) + if request.method.lower() == 'options': return ResponseObject(True) diff --git a/src/dashboard.py b/src/dashboard.py index 8fbc0a31..3090dd15 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -1342,6 +1342,14 @@ def API_OIDC_Status(): ''' Client Controller ''' + +@app.get(f'{APP_PREFIX}/api/clients/toggleStatus') +def API_Clients_ToggleStatus(): + DashboardConfig.SetConfig("Clients", "enable", + not DashboardConfig.GetConfig("Clients", "enable")[1]) + return ResponseObject(data=DashboardConfig.GetConfig("Clients", "enable")[1]) + + @app.get(f'{APP_PREFIX}/api/clients/allClients') def API_Clients_AllClients(): return ResponseObject(data=DashboardClients.GetAllClients()) diff --git a/src/modules/DashboardConfig.py b/src/modules/DashboardConfig.py index 014bbd22..a50e8c53 100644 --- a/src/modules/DashboardConfig.py +++ b/src/modules/DashboardConfig.py @@ -81,7 +81,7 @@ class DashboardConfig: "client_enable": "false" }, "Clients": { - "allow_local_sign_up": "true" + "enable": "true", }, "WireGuardConfiguration": { "autostart": "" diff --git a/src/static/app/public/json/manifest.json b/src/static/app/public/json/manifest.json index 113af305..295606a9 100644 --- a/src/static/app/public/json/manifest.json +++ b/src/static/app/public/json/manifest.json @@ -8,13 +8,13 @@ "short_name": "WGDashboard", "screenshots": [ { - "src": "https://donaldzou.github.io/WGDashboard-Documentation/images/sign-in.png", + "src": "https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/sign-in.png", "sizes": "2880x1826", "type": "image/png", "form_factor": "wide" }, { - "src": "https://donaldzou.github.io/WGDashboard-Documentation/images/sign-in.png", + "src": "https://wgdashboard-resources.tor1.cdn.digitaloceanspaces.com/Documentation%20Images/index.png", "sizes": "2880x1826", "type": "image/png" } diff --git a/src/static/app/src/components/clientComponents/clientSettings.vue b/src/static/app/src/components/clientComponents/clientSettings.vue index 7adb7805..ae554db4 100644 --- a/src/static/app/src/components/clientComponents/clientSettings.vue +++ b/src/static/app/src/components/clientComponents/clientSettings.vue @@ -2,13 +2,23 @@ import { ref, reactive } from "vue" import LocaleText from "@/components/text/localeText.vue"; import OidcSettings from "@/components/clientComponents/clientSettingComponents/oidcSettings.vue"; +import { fetchGet } from "@/utilities/fetch.js" const emits = defineEmits(['close']) import { DashboardConfigurationStore } from "@/stores/DashboardConfigurationStore" const dashboardConfigurationStore = DashboardConfigurationStore() const loading = ref(false) const values = reactive({ - allow_local_sign_up: dashboardConfigurationStore.Configuration.Clients.allow_local_sign_up + enableClients: dashboardConfigurationStore.Configuration.Clients.enable }) + +const toggling = ref(false) +const toggleClientSideApp = async () => { + toggling.value = true + await fetchGet("/api/clients/toggleStatus", {}, (res) => { + values.enableClients = res.data + }) + toggling.value = false +}