From 522c5785a275ea8faccfa005b93ab5db90b20e95 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Thu, 2 Apr 2026 19:36:49 +0000 Subject: [PATCH] Create button for ending impersonation --- package.json | 1 + pnpm-lock.yaml | 34 +++++++++ ts/components/UserSelector.vue | 27 +++---- ts/components/sudo/UserImpersonation.vue | 93 +++++++++++++++++------- ts/store/user.ts | 21 ++++-- ts/view/configuration/User.vue | 17 ++--- 6 files changed, 134 insertions(+), 59 deletions(-) diff --git a/package.json b/package.json index bfcee181..3a728441 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "type": "module", "dependencies": { "@popperjs/core": "^2.11.8", + "@vueuse/core": "^14.2.1", "axios": "^1.13.6", "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41eafac7..e7324c4c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 + '@vueuse/core': + specifier: ^14.2.1 + version: 14.2.1(vue@3.5.30(typescript@5.9.3)) axios: specifier: ^1.13.6 version: 1.13.6 @@ -341,6 +344,9 @@ packages: '@types/supercluster@7.1.3': resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@vitejs/plugin-vue@6.0.5': resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -416,6 +422,19 @@ packages: '@vue/shared@3.5.30': resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} + peerDependencies: + vue: ^3.5.0 + acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} @@ -1244,6 +1263,8 @@ snapshots: dependencies: '@types/geojson': 7946.0.16 + '@types/web-bluetooth@0.0.21': {} + '@vitejs/plugin-vue@6.0.5(vite@8.0.1(sass@1.98.0)(yaml@2.8.3))(vue@3.5.30(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 @@ -1367,6 +1388,19 @@ snapshots: '@vue/shared@3.5.30': {} + '@vueuse/core@14.2.1(vue@3.5.30(typescript@5.9.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) + vue: 3.5.30(typescript@5.9.3) + + '@vueuse/metadata@14.2.1': {} + + '@vueuse/shared@14.2.1(vue@3.5.30(typescript@5.9.3))': + dependencies: + vue: 3.5.30(typescript@5.9.3) + acorn@8.16.0: {} alien-signals@3.1.2: {} diff --git a/ts/components/UserSelector.vue b/ts/components/UserSelector.vue index adc8330b..4d06065e 100644 --- a/ts/components/UserSelector.vue +++ b/ts/components/UserSelector.vue @@ -12,7 +12,7 @@ />