diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 1a3fdca1b..78e21ae02 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -28,6 +28,7 @@ + @@ -40,10 +41,12 @@ + \ No newline at end of file diff --git a/frontend/src/components/UI/SiteMenu.vue b/frontend/src/components/UI/SiteMenu.vue index 4943acfe4..b9123d8da 100644 --- a/frontend/src/components/UI/SiteMenu.vue +++ b/frontend/src/components/UI/SiteMenu.vue @@ -52,12 +52,6 @@ export default { restricted: false, login: true, }, - { - icon: "mdi-account", - title: "Logout", - restricted: true, - login: true, - }, { icon: "mdi-calendar-week", title: this.$i18n.t("meal-plan.dinner-this-week"), @@ -76,6 +70,12 @@ export default { nav: "/meal-plan/planner", restricted: true, }, + { + icon: "mdi-account", + title: "Logout", + restricted: true, + nav: "/logout", + }, { icon: "mdi-cog", title: this.$i18n.t("general.settings"), diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 05b7b2f2c..3898e5e0a 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -89,6 +89,8 @@ }, "settings": { "general-settings": "General Settings", + "change-password": "Change Password", + "admin-settings": "Admin Settings", "local-api": "Local API", "language": "Language", "add-a-new-theme": "Add a New Theme", diff --git a/frontend/src/pages/Admin/General/index.vue b/frontend/src/pages/Admin/General/index.vue deleted file mode 100644 index 5bf2d0bd8..000000000 --- a/frontend/src/pages/Admin/General/index.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/pages/Admin/ManageUsers/index.vue b/frontend/src/pages/Admin/ManageUsers/index.vue index d6425d68b..6d4609bd7 100644 --- a/frontend/src/pages/Admin/ManageUsers/index.vue +++ b/frontend/src/pages/Admin/ManageUsers/index.vue @@ -1,9 +1,226 @@ \ No newline at end of file + methods: { + openAvatarPicker() { + this.showAvatarPicker = true; + }, + selectAvatar(avatar) { + this.form.avatar = avatar; + }, + }, +}; + \ No newline at end of file diff --git a/frontend/src/pages/Admin/Settings/index.vue b/frontend/src/pages/Admin/Settings/index.vue index 2bff3a8d7..13d2bc18f 100644 --- a/frontend/src/pages/Admin/Settings/index.vue +++ b/frontend/src/pages/Admin/Settings/index.vue @@ -1,13 +1,54 @@ \ No newline at end of file diff --git a/frontend/src/routes/admin.js b/frontend/src/routes/admin.js index 3d5adf947..ee7f47e24 100644 --- a/frontend/src/routes/admin.js +++ b/frontend/src/routes/admin.js @@ -1,5 +1,4 @@ import Admin from "@/pages/Admin"; -import General from "@/pages/Admin/General"; import Backup from "@/pages/Admin/Backup"; import Theme from "@/pages/Admin/Theme"; import MealPlanner from "@/pages/Admin/MealPlanner"; @@ -20,10 +19,7 @@ export default { path: "profile", component: Profile, }, - { - path: "general", - component: General, - }, + { path: "backups", component: Backup, diff --git a/frontend/src/routes/index.js b/frontend/src/routes/index.js index 914c72b2d..60319b728 100644 --- a/frontend/src/routes/index.js +++ b/frontend/src/routes/index.js @@ -11,9 +11,18 @@ import LoginPage from "../pages/LoginPage"; import MealPlanThisWeekPage from "../pages/MealPlanThisWeekPage"; import api from "@/api"; import Admin from "./admin"; +import { store } from "../store/store"; export const routes = [ { path: "/", name: "home", component: HomePage }, + { + path: "/logout", + beforeEnter: (_to, _from, next) => { + store.commit("setToken", ""); + store.commit("setIsLoggedIn", false); + next("/"); + }, + }, { path: "/mealie", component: HomePage }, { path: "/login", component: LoginPage }, { path: "/debug", component: Debug }, diff --git a/frontend/src/store/modules/userSettings.js b/frontend/src/store/modules/userSettings.js index 2908837fc..6c97a0e65 100644 --- a/frontend/src/store/modules/userSettings.js +++ b/frontend/src/store/modules/userSettings.js @@ -18,6 +18,8 @@ const state = { activeTheme: {}, darkMode: "system", isDark: false, + isLoggedIn: false, + token: "", }; const mutations = { @@ -35,6 +37,13 @@ const mutations = { state.darkMode = payload; } }, + setIsLoggedIn(state, payload) { + state.isLoggedIn = payload; + }, + setToken(state, payload) { + state.isLoggedIn = true; + state.token = payload; + }, }; const actions = { @@ -63,6 +72,8 @@ const getters = { getActiveTheme: state => state.activeTheme, getDarkMode: state => state.darkMode, getIsDark: state => state.isDark, + getIsLoggedIn: state => state.isLoggedIn, + getToken: state => state.token, }; export default { diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index 13495c93b..19979f278 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -20,8 +20,6 @@ const store = new Vuex.Store({ homePage, }, state: { - // Auth - isLoggedIn: true, // All Recipe Data Store recentRecipes: [], @@ -30,10 +28,6 @@ const store = new Vuex.Store({ }, mutations: { - setIsLoggedIn(state, payload) { - state.isLoggedIn = payload; - }, - setRecentRecipes(state, payload) { state.recentRecipes = payload; }, @@ -62,7 +56,6 @@ const store = new Vuex.Store({ getters: { getRecentRecipes: state => state.recentRecipes, getMealPlanCategories: state => state.mealPlanCategories, - getIsLoggedIn: state => state.isLoggedIn, }, });