From acd64f25f25cfb81b234e0103f6ff227973d5fa7 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Tue, 20 Dec 2022 23:38:19 +0000 Subject: [PATCH] add ui for self reset amidaware/tacticalrmm#1378 --- src/api/accounts.js | 19 +++++++ src/components/accounts/ResetPass.vue | 75 +++++++++++++++++++++++++++ src/layouts/MainLayout.vue | 51 ++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 src/components/accounts/ResetPass.vue diff --git a/src/api/accounts.js b/src/api/accounts.js index 16e3509..b028673 100644 --- a/src/api/accounts.js +++ b/src/api/accounts.js @@ -12,6 +12,25 @@ export async function fetchUsers(params = {}) { } } +export async function resetPass(pass) { + const payload = { password: pass }; + try { + const { data } = await axios.put(`${baseUrl}/resetpw/`, payload); + return data; + } catch (e) { + console.error(e); + } +} + +export async function resetTwoFactor() { + try { + const { data } = await axios.put(`${baseUrl}/reset2fa/`); + return data; + } catch (e) { + console.error(e); + } +} + // role api function export async function fetchRoles(params = {}) { try { diff --git a/src/components/accounts/ResetPass.vue b/src/components/accounts/ResetPass.vue new file mode 100644 index 0000000..810247a --- /dev/null +++ b/src/components/accounts/ResetPass.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 97a33d3..7eb4ac9 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -140,6 +140,32 @@ Preferences + + Account + + + + + + + + + Reset Password + + + + + Reset 2FA + + + + + Logout @@ -161,10 +187,13 @@ import { useQuasar } from "quasar"; import { useStore } from "vuex"; import axios from "axios"; import { getWSUrl } from "@/websocket/channels"; +import { resetTwoFactor } from "@/api/accounts"; +import { notifySuccess } from "@/utils/notify"; // ui imports import AlertsIcon from "@/components/AlertsIcon.vue"; import UserPreferences from "@/components/modals/coresettings/UserPreferences.vue"; +import ResetPass from "@/components/accounts/ResetPass.vue"; export default { name: "MainLayout", @@ -202,6 +231,26 @@ export default { }).onOk(() => store.dispatch("getDashInfo")); } + function resetPassword() { + $q.dialog({ + component: ResetPass, + }); + } + + function reset2FA() { + $q.dialog({ + title: "Reset 2FA", + message: "Are you sure you would like to reset your 2FA token?", + cancel: true, + persistent: true, + }).onOk(async () => { + try { + const ret = await resetTwoFactor(); + notifySuccess(ret, 3000); + } catch {} + }); + } + const serverCount = ref(0); const serverOfflineCount = ref(0); const workstationCount = ref(0); @@ -286,6 +335,8 @@ export default { // methods showUserPreferences, + resetPassword, + reset2FA, updateAvailable, }; },