From 1c857c078182a9e25963a6ab8d195ed7b49cddfa Mon Sep 17 00:00:00 2001 From: Donald Zou Date: Sat, 2 Aug 2025 21:58:09 +0800 Subject: [PATCH] Add client settings --- src/client.py | 8 ++++ src/dashboard.py | 32 +++++++++++++++ .../clientSettingComponents/oidcSettings.vue | 40 +++++++++++++++++++ .../clientComponents/clientSettings.vue | 11 +---- src/static/app/src/views/clients.vue | 2 +- 5 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 src/static/app/src/components/clientComponents/clientSettingComponents/oidcSettings.vue diff --git a/src/client.py b/src/client.py index b31f19b..32f6f73 100644 --- a/src/client.py +++ b/src/client.py @@ -46,10 +46,18 @@ def createClientBlueprint(wireguardConfigurations: dict[WireguardConfiguration], @client.get(f'{prefix}/api/signin/oidc/providers') def ClientAPI_SignIn_OIDC_GetProviders(): + _, oidc = dashboardConfig.GetConfig("OIDC", "client_enable") + if not oidc: + return ResponseObject(status=False, message="OIDC is disabled") + return ResponseObject(data=dashboardClients.OIDC.GetProviders()) @client.post(f'{prefix}/api/signin/oidc') def ClientAPI_SignIn_OIDC(): + _, oidc = dashboardConfig.GetConfig("OIDC", "client_enable") + if not oidc: + return ResponseObject(status=False, message="OIDC is disabled") + data = request.json status, oidcData = dashboardClients.SignIn_OIDC(**data) if not status: diff --git a/src/dashboard.py b/src/dashboard.py index 9ead71e..0049328 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -1213,6 +1213,38 @@ def API_SystemStatus(): def API_ProtocolsEnabled(): return ResponseObject(data=ProtocolsEnabled()) +''' +OIDC Controller +''' +@app.get(f'{APP_PREFIX}/api/oidc/toggle') +def API_OIDC_Toggle(): + data = request.args + if not data.get('mode'): + return ResponseObject(False, "Please provide mode") + + mode = data.get('mode') + if mode == 'Client': + DashboardConfig.SetConfig("OIDC", "client_enable", + not DashboardConfig.GetConfig("OIDC", "client_enable")[1]) + elif mode == 'Admin': + DashboardConfig.SetConfig("OIDC", "admin_enable", + not DashboardConfig.GetConfig("OIDC", "admin_enable")[1]) + else: + return ResponseObject(False, "Mode does not exist") + return ResponseObject() + +@app.get(f'{APP_PREFIX}/api/oidc/status') +def API_OIDC_Status(): + data = request.args + if not data.get('mode'): + return ResponseObject(False, "Please provide mode") + mode = data.get('mode') + if mode == 'Client': + return ResponseObject(data=DashboardConfig.GetConfig("OIDC", "client_enable")[1]) + elif mode == 'Admin': + return ResponseObject(data=DashboardConfig.GetConfig("OIDC", "admin_enable")[1]) + return ResponseObject(False, "Mode does not exist") + ''' Client Controller ''' diff --git a/src/static/app/src/components/clientComponents/clientSettingComponents/oidcSettings.vue b/src/static/app/src/components/clientComponents/clientSettingComponents/oidcSettings.vue new file mode 100644 index 0000000..bae7250 --- /dev/null +++ b/src/static/app/src/components/clientComponents/clientSettingComponents/oidcSettings.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/src/static/app/src/components/clientComponents/clientSettings.vue b/src/static/app/src/components/clientComponents/clientSettings.vue index 9896465..645abb1 100644 --- a/src/static/app/src/components/clientComponents/clientSettings.vue +++ b/src/static/app/src/components/clientComponents/clientSettings.vue @@ -1,5 +1,6 @@ @@ -15,16 +16,8 @@ const emits = defineEmits(['close'])
-
- -
+
-
- - -
diff --git a/src/static/app/src/views/clients.vue b/src/static/app/src/views/clients.vue index f3ee729..d378d76 100644 --- a/src/static/app/src/views/clients.vue +++ b/src/static/app/src/views/clients.vue @@ -29,7 +29,7 @@ const oidc = computed(() => {
- +