mirror of
https://github.com/inventree/InvenTree.git
synced 2026-05-21 16:56:47 +00:00
Merge branch 'master' of https://github.com/inventree/InvenTree into matmair/issue5729
This commit is contained in:
@@ -20,8 +20,8 @@ export const doClassicLogin = async (username: string, password: string) => {
|
||||
const token = await axios
|
||||
.get(apiUrl(ApiPaths.user_token), {
|
||||
auth: { username, password },
|
||||
baseURL: host.toString(),
|
||||
timeout: 5000,
|
||||
baseURL: host,
|
||||
timeout: 2000,
|
||||
params: {
|
||||
name: 'inventree-web-app'
|
||||
}
|
||||
@@ -43,6 +43,9 @@ export const doClassicLogin = async (username: string, password: string) => {
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Logout the user (invalidate auth token)
|
||||
*/
|
||||
export const doClassicLogout = async () => {
|
||||
// TODO @matmair - logout from the server session
|
||||
// Set token in context
|
||||
@@ -117,7 +120,7 @@ export function handleReset(navigate: any, values: { email: string }) {
|
||||
export function checkLoginState(navigate: any, redirect?: string) {
|
||||
api
|
||||
.get(apiUrl(ApiPaths.user_token), {
|
||||
timeout: 5000,
|
||||
timeout: 2000,
|
||||
params: {
|
||||
name: 'inventree-web-app'
|
||||
}
|
||||
@@ -137,8 +140,7 @@ export function checkLoginState(navigate: any, redirect?: string) {
|
||||
navigate('/login');
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error fetching login information:', error);
|
||||
.catch(() => {
|
||||
navigate('/login');
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ declare global {
|
||||
server_list: HostList;
|
||||
default_server: string;
|
||||
show_server_selector: boolean;
|
||||
url_base: string;
|
||||
base_url: string;
|
||||
sentry_dsn?: string;
|
||||
environment?: string;
|
||||
};
|
||||
@@ -25,6 +25,17 @@ export const IS_DEV = import.meta.env.DEV;
|
||||
export const IS_DEMO = import.meta.env.VITE_DEMO === 'true';
|
||||
export const IS_DEV_OR_DEMO = IS_DEV || IS_DEMO;
|
||||
|
||||
// Filter out any settings that are not defined
|
||||
let loaded_vals = (window.INVENTREE_SETTINGS || {}) as any;
|
||||
Object.keys(loaded_vals).forEach((key) => {
|
||||
if (loaded_vals[key] === undefined) {
|
||||
delete loaded_vals[key];
|
||||
// check for empty server list
|
||||
} else if (key === 'server_list' && loaded_vals[key].length === 0) {
|
||||
delete loaded_vals[key];
|
||||
}
|
||||
});
|
||||
|
||||
window.INVENTREE_SETTINGS = {
|
||||
server_list: {
|
||||
'mantine-cqj63coxn': {
|
||||
@@ -40,11 +51,11 @@ window.INVENTREE_SETTINGS = {
|
||||
}
|
||||
: {})
|
||||
},
|
||||
default_server: IS_DEMO ? 'mantine-u56l5jt85' : 'mantine-cqj63coxn', // use demo server for demo mode
|
||||
default_server: IS_DEMO ? 'mantine-u56l5jt85' : 'mantine-cqj63coxn',
|
||||
show_server_selector: IS_DEV_OR_DEMO,
|
||||
|
||||
// merge in settings that are already set via django's spa_view or for development
|
||||
...((window.INVENTREE_SETTINGS || {}) as any)
|
||||
...loaded_vals
|
||||
};
|
||||
|
||||
if (window.INVENTREE_SETTINGS.sentry_dsn) {
|
||||
@@ -56,7 +67,7 @@ if (window.INVENTREE_SETTINGS.sentry_dsn) {
|
||||
});
|
||||
}
|
||||
|
||||
export const url_base = window.INVENTREE_SETTINGS.url_base || 'platform';
|
||||
export const base_url = window.INVENTREE_SETTINGS.base_url || 'platform';
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
||||
<React.StrictMode>
|
||||
@@ -66,5 +77,5 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
||||
|
||||
// Redirect to base url if on /
|
||||
if (window.location.pathname === '/') {
|
||||
window.location.replace(`/${url_base}`);
|
||||
window.location.replace(`/${base_url}`);
|
||||
}
|
||||
|
||||
@@ -15,9 +15,12 @@ export const useServerApiState = create<ServerApiStateProps>((set, get) => ({
|
||||
setServer: (newServer: ServerAPIProps) => set({ server: newServer }),
|
||||
fetchServerApiState: async () => {
|
||||
// Fetch server data
|
||||
await api.get(apiUrl(ApiPaths.api_server_info)).then((response) => {
|
||||
set({ server: response.data });
|
||||
});
|
||||
await api
|
||||
.get(apiUrl(ApiPaths.api_server_info))
|
||||
.then((response) => {
|
||||
set({ server: response.data });
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ export const useUserState = create<UserStateProps>((set, get) => ({
|
||||
// Fetch user data
|
||||
await api
|
||||
.get(apiUrl(ApiPaths.user_me), {
|
||||
timeout: 5000
|
||||
timeout: 2000
|
||||
})
|
||||
.then((response) => {
|
||||
const user: UserProps = {
|
||||
|
||||
@@ -5,7 +5,7 @@ import { BrowserRouter } from 'react-router-dom';
|
||||
import { queryClient, setApiDefaults } from '../App';
|
||||
import { BaseContext } from '../contexts/BaseContext';
|
||||
import { defaultHostList } from '../defaults/defaultHostList';
|
||||
import { url_base } from '../main';
|
||||
import { base_url } from '../main';
|
||||
import { routes } from '../router';
|
||||
import { useLocalState } from '../states/LocalState';
|
||||
import { useSessionState } from '../states/SessionState';
|
||||
@@ -27,10 +27,6 @@ export default function DesktopAppView() {
|
||||
]);
|
||||
|
||||
// Local state initialization
|
||||
if (Object.keys(hostList).length === 0) {
|
||||
console.log('Loading default host list');
|
||||
useLocalState.setState({ hostList: defaultHostList });
|
||||
}
|
||||
setApiDefaults();
|
||||
|
||||
// Server Session
|
||||
@@ -38,6 +34,11 @@ export default function DesktopAppView() {
|
||||
const sessionState = useSessionState.getState();
|
||||
const [token] = sessionState.token ? [sessionState.token] : [null];
|
||||
useEffect(() => {
|
||||
if (Object.keys(hostList).length === 0) {
|
||||
console.log('Loading default host list', defaultHostList);
|
||||
useLocalState.setState({ hostList: defaultHostList });
|
||||
}
|
||||
|
||||
if (token && !fetchedServerSession) {
|
||||
setFetchedServerSession(true);
|
||||
fetchUserState();
|
||||
@@ -49,7 +50,7 @@ export default function DesktopAppView() {
|
||||
return (
|
||||
<BaseContext>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<BrowserRouter basename={url_base}>{routes}</BrowserRouter>
|
||||
<BrowserRouter basename={base_url}>{routes}</BrowserRouter>
|
||||
</QueryClientProvider>
|
||||
</BaseContext>
|
||||
);
|
||||
|
||||
@@ -11,9 +11,4 @@ test('Basic Platform UI test', async ({ page }) => {
|
||||
await page.goto('./platform/');
|
||||
|
||||
await expect(page).toHaveTitle('InvenTree Demo Server');
|
||||
await expect(
|
||||
page.getByRole('heading', {
|
||||
name: 'Welcome to your Dashboard, Ally Access'
|
||||
})
|
||||
).toBeVisible();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user