diff --git a/frontend/src/api/api-utils.js b/frontend/src/api/api-utils.js index d3cb95228..49f5e1fb1 100644 --- a/frontend/src/api/api-utils.js +++ b/frontend/src/api/api-utils.js @@ -47,7 +47,7 @@ const apiReq = { return response; } else return; }); - // processResponse(response); + processResponse(response); return response; }, diff --git a/frontend/src/api/users.js b/frontend/src/api/users.js index 14881e33c..74f97f1de 100644 --- a/frontend/src/api/users.js +++ b/frontend/src/api/users.js @@ -1,13 +1,14 @@ import { baseURL } from "./api-utils"; import { apiReq } from "./api-utils"; +import axios from "axios"; const authPrefix = baseURL + "auth"; const userPrefix = baseURL + "users"; const authURLs = { token: `${authPrefix}/token`, + refresh: `${authPrefix}/refresh`, }; - const usersURLs = { users: `${userPrefix}`, self: `${userPrefix}/self`, @@ -24,6 +25,12 @@ export default { }); return response; }, + async refresh() { + let response = await axios.get(authURLs.refresh).catch(function(event) { + console.log("Fetch failed", event); + }); + return response.data ? response.data : false; + }, async allUsers() { let response = await apiReq.get(usersURLs.users); return response.data; diff --git a/frontend/src/store/modules/userSettings.js b/frontend/src/store/modules/userSettings.js index b961525b3..82380440a 100644 --- a/frontend/src/store/modules/userSettings.js +++ b/frontend/src/store/modules/userSettings.js @@ -63,6 +63,20 @@ const actions = { } }, + async refreshToken({ commit, getters }) { + if (!getters.getIsLoggedIn) { + commit("setIsLoggedIn", false); // This is to be here... for some reasons? ¯\_(ツ)_/¯ + console.log("Not Logged In"); + return; + } + try { + let authResponse = await api.users.refresh(); + commit("setToken", authResponse.access_token); + } catch { + console.log("Failed Token Refresh, Logging Out..."); + commit("setIsLoggedIn", false); + } + }, async initTheme({ dispatch, getters }) { //If theme is empty resetTheme diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 9abdb83cd..69a8edbc2 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -1,6 +1,6 @@ import { vueApp } from "../main"; - +// TODO: Migrate to Mixins const notifyHelpers = { baseCSS: "notify-base", error: "notify-error-color", diff --git a/mealie/routes/users/auth.py b/mealie/routes/users/auth.py index 0e10888c5..b2c0437f4 100644 --- a/mealie/routes/users/auth.py +++ b/mealie/routes/users/auth.py @@ -60,10 +60,8 @@ def get_long_token( ) -@router.post("/refresh") -async def refresh_token( - current_user: UserInDB = Depends(manager), -): +@router.get("/refresh") +async def refresh_token(current_user: UserInDB = Depends(manager)): """ Use a valid token to get another token""" access_token = manager.create_access_token( data=dict(sub=current_user.email), expires=timedelta(hours=1)