From 1cc9f7a4c9b6db60bbccd8b0cec4e993a4368090 Mon Sep 17 00:00:00 2001 From: sadnub Date: Thu, 2 Sep 2021 21:10:17 -0400 Subject: [PATCH] allow for creating special tokens for api access and bypassing two factor auth --- src/api/accounts.js | 27 ++- src/components/core/APIKeysForm.vue | 122 ++++++++++ src/components/core/APIKeysTable.vue | 212 ++++++++++++++++++ src/components/modals/admin/RolesForm.vue | 2 + src/components/modals/admin/UserForm.vue | 12 +- .../modals/coresettings/EditCoreSettings.vue | 7 + src/composables/accounts.js | 8 +- 7 files changed, 386 insertions(+), 4 deletions(-) create mode 100644 src/components/core/APIKeysForm.vue create mode 100644 src/components/core/APIKeysTable.vue diff --git a/src/api/accounts.js b/src/api/accounts.js index dcb4b3b..1dc01fc 100644 --- a/src/api/accounts.js +++ b/src/api/accounts.js @@ -2,9 +2,34 @@ import axios from "axios" const baseUrl = "/accounts" +// user api functions export async function fetchUsers(params = {}) { try { const { data } = await axios.get(`${baseUrl}/users/`, { params: params }) return data } catch (e) { } -} \ No newline at end of file +} + + +// api key api functions +export async function fetchAPIKeys(params = {}) { + try { + const { data } = await axios.get(`${baseUrl}/apikeys/`, { params: params }) + return data + } catch (e) { } +} + +export async function saveAPIKey(payload) { + const { data } = await axios.post(`${baseUrl}/apikeys/`, payload) + return data +} + +export async function editAPIKey(payload) { + const { data } = await axios.put(`${baseUrl}/apikeys/${payload.id}/`, payload) + return data +} + +export async function removeAPIKey(id) { + const { data } = await axios.delete(`${baseUrl}/apikeys/${id}/`) + return data +} diff --git a/src/components/core/APIKeysForm.vue b/src/components/core/APIKeysForm.vue new file mode 100644 index 0000000..90cc8e9 --- /dev/null +++ b/src/components/core/APIKeysForm.vue @@ -0,0 +1,122 @@ + + + \ No newline at end of file diff --git a/src/components/core/APIKeysTable.vue b/src/components/core/APIKeysTable.vue new file mode 100644 index 0000000..87a356f --- /dev/null +++ b/src/components/core/APIKeysTable.vue @@ -0,0 +1,212 @@ + + + \ No newline at end of file diff --git a/src/components/modals/admin/RolesForm.vue b/src/components/modals/admin/RolesForm.vue index 8455a35..5f3a9b4 100644 --- a/src/components/modals/admin/RolesForm.vue +++ b/src/components/modals/admin/RolesForm.vue @@ -56,6 +56,7 @@ + @@ -180,6 +181,7 @@ export default { can_manage_notes: false, can_view_core_settings: false, can_edit_core_settings: false, + can_manage_api_keys: false, can_do_server_maint: false, can_code_sign: false, can_manage_checks: false, diff --git a/src/components/modals/admin/UserForm.vue b/src/components/modals/admin/UserForm.vue index d06a2b2..091e467 100644 --- a/src/components/modals/admin/UserForm.vue +++ b/src/components/modals/admin/UserForm.vue @@ -68,7 +68,7 @@
Active:
- +
@@ -88,6 +88,14 @@ class="col-10" /> + + + @@ -109,6 +117,7 @@ export default { return { localUser: { is_active: true, + deny_dashboard_login: false, }, roles: [], isPwd: true, @@ -146,6 +155,7 @@ export default { // dont allow updating is_active if username is same as logged in user if (this.localUser.username === this.logged_in_user) { delete this.localUser.is_active; + delete this.localUser.deny_dashboard_login; } this.$axios diff --git a/src/components/modals/coresettings/EditCoreSettings.vue b/src/components/modals/coresettings/EditCoreSettings.vue index 41dcde7..0781b06 100644 --- a/src/components/modals/coresettings/EditCoreSettings.vue +++ b/src/components/modals/coresettings/EditCoreSettings.vue @@ -11,6 +11,7 @@ +