2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-15 03:25:42 +00:00

Frontend server settings (#5765)

* Update ApiToken model

- Add metadata
- Remove unique_together requirement
- Add last_seen field

* Update admin page for token

* Store metadata against token on creation

* Track last-seen date

* Allow match against existing valid token

- If token is expired or revoked, create a new one
- Prevents duplication of tokens

* Update unit tests

* Fix default server

* Improve functionality for extracting frontend settings

* Update default server list

* Use f-strings

* Revert logger name

* Remove mark_safe warning
This commit is contained in:
Oliver
2023-10-23 22:33:16 +11:00
committed by GitHub
parent 39c499622d
commit 679b49b4f7
12 changed files with 99 additions and 52 deletions

View File

@ -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

View File

@ -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;
};
@ -27,20 +27,20 @@ export const IS_DEV_OR_DEMO = IS_DEV || IS_DEMO;
window.INVENTREE_SETTINGS = {
server_list: {
'mantine-cqj63coxn': {
localhost: {
host: `${window.location.origin}/`,
name: 'Current Server'
},
...(IS_DEV_OR_DEMO
? {
'mantine-u56l5jt85': {
demo: {
host: 'https://demo.inventree.org/',
name: 'InvenTree Demo'
}
}
: {})
},
default_server: IS_DEMO ? 'mantine-u56l5jt85' : 'mantine-cqj63coxn', // use demo server for demo mode
default_server: IS_DEMO ? 'demo' : 'localhost',
show_server_selector: IS_DEV_OR_DEMO,
// merge in settings that are already set via django's spa_view or for development
@ -56,7 +56,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 +66,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}`);
}

View File

@ -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';
@ -49,7 +49,7 @@ export default function DesktopAppView() {
return (
<BaseContext>
<QueryClientProvider client={queryClient}>
<BrowserRouter basename={url_base}>{routes}</BrowserRouter>
<BrowserRouter basename={base_url}>{routes}</BrowserRouter>
</QueryClientProvider>
</BaseContext>
);