Refactor/upgrade backend and frontend parts (#2)
* ♻️ Refactor and simplify backend code * ♻️ Refactor frontend state, integrate typesafe-vuex accessors into state files * ♻️ Use new state accessors and standardize layout * 🔒 Upgrade and fix npm security audit * 🔧 Update local re-generation scripts * 🔊 Log startup exceptions to detect errors early * ✏️ Fix password reset token content * 🔥 Remove unneeded Dockerfile directives * 🔥 Remove unnecessary print * 🔥 Remove unnecessary code, upgrade dependencies in backend * ✏️ Fix typos in docstrings and comments * 🏗️ Improve user Depends utilities to simplify and remove code * 🔥 Remove deprecated SQLAlchemy parameter
This commit is contained in:

committed by
GitHub

parent
9e0b826618
commit
cd112bd683
@@ -1,9 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { State } from '@/store/state';
|
||||
import { mutations } from '../mutations';
|
||||
import { AdminState } from '../state';
|
||||
|
||||
const {commit} = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const commitSetUser = commit(mutations.setUser);
|
||||
export const commitSetUsers = commit(mutations.setUsers);
|
@@ -1,10 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { AdminState } from '../state';
|
||||
import { State } from '@/store/state';
|
||||
import { actions } from '../actions';
|
||||
|
||||
const {dispatch} = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const dispatchCreateUser = dispatch(actions.actionCreateUser);
|
||||
export const dispatchGetUsers = dispatch(actions.actionGetUsers);
|
||||
export const dispatchUpdateUser = dispatch(actions.actionUpdateUser);
|
@@ -1,3 +0,0 @@
|
||||
export * from './commit';
|
||||
export * from './dispatch';
|
||||
export * from './read';
|
@@ -1,9 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { AdminState } from '../state';
|
||||
import { State } from '@/store/state';
|
||||
import { getters } from '../getters';
|
||||
|
||||
const { read } = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const readAdminOneUser = read(getters.adminOneUser);
|
||||
export const readAdminUsers = read(getters.adminUsers);
|
@@ -1,13 +1,12 @@
|
||||
import { api } from '@/api';
|
||||
import { ActionContext } from 'vuex';
|
||||
import {
|
||||
commitSetUsers,
|
||||
commitSetUser,
|
||||
} from './accessors/commit';
|
||||
import { IUserProfileCreate, IUserProfileUpdate } from '@/interfaces';
|
||||
import { State } from '../state';
|
||||
import { AdminState } from './state';
|
||||
import { dispatchCheckApiError, commitAddNotification, commitRemoveNotification } from '../main/accessors';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { commitSetUsers, commitSetUser } from './mutations';
|
||||
import { dispatchCheckApiError } from '../main/actions';
|
||||
import { commitAddNotification, commitRemoveNotification } from '../main/mutations';
|
||||
|
||||
type MainContext = ActionContext<AdminState, State>;
|
||||
|
||||
@@ -32,7 +31,7 @@ export const actions = {
|
||||
]))[0];
|
||||
commitSetUser(context, response.data);
|
||||
commitRemoveNotification(context, loadingNotification);
|
||||
commitAddNotification(context, {content: 'User successfully updated', color: 'success'});
|
||||
commitAddNotification(context, { content: 'User successfully updated', color: 'success' });
|
||||
} catch (error) {
|
||||
await dispatchCheckApiError(context, error);
|
||||
}
|
||||
@@ -53,3 +52,9 @@ export const actions = {
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const { dispatch } = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const dispatchCreateUser = dispatch(actions.actionCreateUser);
|
||||
export const dispatchGetUsers = dispatch(actions.actionGetUsers);
|
||||
export const dispatchUpdateUser = dispatch(actions.actionUpdateUser);
|
||||
|
@@ -1,4 +1,6 @@
|
||||
import { AdminState } from './state';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { State } from '../state';
|
||||
|
||||
export const getters = {
|
||||
adminUsers: (state: AdminState) => state.users,
|
||||
@@ -9,3 +11,8 @@ export const getters = {
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const { read } = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const readAdminOneUser = read(getters.adminOneUser);
|
||||
export const readAdminUsers = read(getters.adminUsers);
|
||||
|
@@ -1,5 +1,7 @@
|
||||
import { IUserProfile } from '@/interfaces';
|
||||
import { AdminState } from './state';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { State } from '../state';
|
||||
|
||||
export const mutations = {
|
||||
setUsers(state: AdminState, payload: IUserProfile[]) {
|
||||
@@ -11,3 +13,8 @@ export const mutations = {
|
||||
state.users = users;
|
||||
},
|
||||
};
|
||||
|
||||
const { commit } = getStoreAccessors<AdminState, State>('');
|
||||
|
||||
export const commitSetUser = commit(mutations.setUser);
|
||||
export const commitSetUsers = commit(mutations.setUsers);
|
||||
|
@@ -1,15 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { MainState } from '../state';
|
||||
import { State } from '@/store/state';
|
||||
import { mutations } from '../mutations';
|
||||
|
||||
const {commit} = getStoreAccessors<MainState | any, State>('');
|
||||
|
||||
export const commitSetDashboardMiniDrawer = commit(mutations.setDashboardMiniDrawer);
|
||||
export const commitSetDashboardShowDrawer = commit(mutations.setDashboardShowDrawer);
|
||||
export const commitSetLoggedIn = commit(mutations.setLoggedIn);
|
||||
export const commitSetLogInError = commit(mutations.setLogInError);
|
||||
export const commitSetToken = commit(mutations.setToken);
|
||||
export const commitSetUserProfile = commit(mutations.setUserProfile);
|
||||
export const commitAddNotification = commit(mutations.addNotification);
|
||||
export const commitRemoveNotification = commit(mutations.removeNotification);
|
@@ -1,20 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { MainState } from '../state';
|
||||
import { State } from '@/store/state';
|
||||
import { actions } from '../actions';
|
||||
|
||||
const {dispatch} = getStoreAccessors<MainState | any, State>('');
|
||||
|
||||
export const dispatchCheckApiError = dispatch(actions.actionCheckApiError);
|
||||
export const dispatchCheckLoggedIn = dispatch(actions.actionCheckLoggedIn);
|
||||
export const dispatchGetUserProfile = dispatch(actions.actionGetUserProfile);
|
||||
export const dispatchLogIn = dispatch(actions.actionLogIn);
|
||||
export const dispatchLogOut = dispatch(actions.actionLogOut);
|
||||
export const dispatchUserLogOut = dispatch(actions.actionUserLogOut);
|
||||
export const dispatchRemoveLogIn = dispatch(actions.actionRemoveLogIn);
|
||||
export const dispatchRouteLoggedIn = dispatch(actions.actionRouteLoggedIn);
|
||||
export const dispatchRouteLogOut = dispatch(actions.actionRouteLogOut);
|
||||
export const dispatchUpdateUserProfile = dispatch(actions.actionUpdateUserProfile);
|
||||
export const dispatchRemoveNotification = dispatch(actions.removeNotification);
|
||||
export const dispatchPasswordRecovery = dispatch(actions.passwordRecovery);
|
||||
export const dispatchResetPassword = dispatch(actions.resetPassword);
|
@@ -1,3 +0,0 @@
|
||||
export * from './commit';
|
||||
export * from './dispatch';
|
||||
export * from './read';
|
@@ -1,15 +0,0 @@
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { MainState } from '../state';
|
||||
import { State } from '@/store/state';
|
||||
import { getters } from '../getters';
|
||||
|
||||
const {read} = getStoreAccessors<MainState, State>('');
|
||||
|
||||
export const readDashboardMiniDrawer = read(getters.dashboardMiniDrawer);
|
||||
export const readDashboardShowDrawer = read(getters.dashboardShowDrawer);
|
||||
export const readHasAdminAccess = read(getters.hasAdminAccess);
|
||||
export const readIsLoggedIn = read(getters.isLoggedIn);
|
||||
export const readLoginError = read(getters.loginError);
|
||||
export const readToken = read(getters.token);
|
||||
export const readUserProfile = read(getters.userProfile);
|
||||
export const readFirstNotification = read(getters.firstNotification);
|
@@ -1,24 +1,19 @@
|
||||
import { api } from '@/api';
|
||||
import { saveLocalToken, getLocalToken, removeLocalToken } from '@/utils';
|
||||
import router from '@/router';
|
||||
import { getLocalToken, removeLocalToken, saveLocalToken } from '@/utils';
|
||||
import { AxiosError } from 'axios';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { ActionContext } from 'vuex';
|
||||
import { State } from '../state';
|
||||
import {
|
||||
commitSetToken,
|
||||
commitAddNotification,
|
||||
commitRemoveNotification,
|
||||
commitSetLoggedIn,
|
||||
commitSetLogInError,
|
||||
dispatchGetUserProfile,
|
||||
dispatchRouteLoggedIn,
|
||||
dispatchLogOut,
|
||||
commitSetToken,
|
||||
commitSetUserProfile,
|
||||
dispatchCheckApiError,
|
||||
dispatchRemoveLogIn,
|
||||
dispatchRouteLogOut,
|
||||
commitRemoveNotification,
|
||||
commitAddNotification,
|
||||
} from './accessors';
|
||||
import { AxiosError } from 'axios';
|
||||
import { State } from '../state';
|
||||
import { MainState, AppNotification } from './state';
|
||||
} from './mutations';
|
||||
import { AppNotification, MainState } from './state';
|
||||
|
||||
type MainContext = ActionContext<MainState, State>;
|
||||
|
||||
@@ -160,3 +155,19 @@ export const actions = {
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const { dispatch } = getStoreAccessors<MainState | any, State>('');
|
||||
|
||||
export const dispatchCheckApiError = dispatch(actions.actionCheckApiError);
|
||||
export const dispatchCheckLoggedIn = dispatch(actions.actionCheckLoggedIn);
|
||||
export const dispatchGetUserProfile = dispatch(actions.actionGetUserProfile);
|
||||
export const dispatchLogIn = dispatch(actions.actionLogIn);
|
||||
export const dispatchLogOut = dispatch(actions.actionLogOut);
|
||||
export const dispatchUserLogOut = dispatch(actions.actionUserLogOut);
|
||||
export const dispatchRemoveLogIn = dispatch(actions.actionRemoveLogIn);
|
||||
export const dispatchRouteLoggedIn = dispatch(actions.actionRouteLoggedIn);
|
||||
export const dispatchRouteLogOut = dispatch(actions.actionRouteLogOut);
|
||||
export const dispatchUpdateUserProfile = dispatch(actions.actionUpdateUserProfile);
|
||||
export const dispatchRemoveNotification = dispatch(actions.removeNotification);
|
||||
export const dispatchPasswordRecovery = dispatch(actions.passwordRecovery);
|
||||
export const dispatchResetPassword = dispatch(actions.resetPassword);
|
||||
|
@@ -1,4 +1,6 @@
|
||||
import { MainState } from './state';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { State } from '../state';
|
||||
|
||||
export const getters = {
|
||||
hasAdminAccess: (state: MainState) => {
|
||||
@@ -14,3 +16,14 @@ export const getters = {
|
||||
isLoggedIn: (state: MainState) => state.isLoggedIn,
|
||||
firstNotification: (state: MainState) => state.notifications.length > 0 && state.notifications[0],
|
||||
};
|
||||
|
||||
const {read} = getStoreAccessors<MainState, State>('');
|
||||
|
||||
export const readDashboardMiniDrawer = read(getters.dashboardMiniDrawer);
|
||||
export const readDashboardShowDrawer = read(getters.dashboardShowDrawer);
|
||||
export const readHasAdminAccess = read(getters.hasAdminAccess);
|
||||
export const readIsLoggedIn = read(getters.isLoggedIn);
|
||||
export const readLoginError = read(getters.loginError);
|
||||
export const readToken = read(getters.token);
|
||||
export const readUserProfile = read(getters.userProfile);
|
||||
export const readFirstNotification = read(getters.firstNotification);
|
||||
|
@@ -1,5 +1,7 @@
|
||||
import { IUserProfile } from '@/interfaces';
|
||||
import { MainState, AppNotification } from './state';
|
||||
import { getStoreAccessors } from 'typesafe-vuex';
|
||||
import { State } from '../state';
|
||||
|
||||
|
||||
export const mutations = {
|
||||
@@ -28,3 +30,14 @@ export const mutations = {
|
||||
state.notifications = state.notifications.filter((notification) => notification !== payload);
|
||||
},
|
||||
};
|
||||
|
||||
const {commit} = getStoreAccessors<MainState | any, State>('');
|
||||
|
||||
export const commitSetDashboardMiniDrawer = commit(mutations.setDashboardMiniDrawer);
|
||||
export const commitSetDashboardShowDrawer = commit(mutations.setDashboardShowDrawer);
|
||||
export const commitSetLoggedIn = commit(mutations.setLoggedIn);
|
||||
export const commitSetLogInError = commit(mutations.setLogInError);
|
||||
export const commitSetToken = commit(mutations.setToken);
|
||||
export const commitSetUserProfile = commit(mutations.setUserProfile);
|
||||
export const commitAddNotification = commit(mutations.addNotification);
|
||||
export const commitRemoveNotification = commit(mutations.removeNotification);
|
||||
|
Reference in New Issue
Block a user