mirror of
https://github.com/inventree/InvenTree.git
synced 2026-05-13 21:17:33 +00:00
add frontend redirect for MFA login
This commit is contained in:
@@ -197,14 +197,14 @@ export function RegistrationForm() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
if (err.response.status === 400) {
|
if (err?.response.status === 400) {
|
||||||
setIsRegistering(false);
|
setIsRegistering(false);
|
||||||
for (const [key, value] of Object.entries(err.response.data)) {
|
for (const [key, value] of Object.entries(err?.response.data)) {
|
||||||
registrationForm.setFieldError(key, value as string);
|
registrationForm.setFieldError(key, value as string);
|
||||||
}
|
}
|
||||||
let err_msg = '';
|
let err_msg = '';
|
||||||
if (err.response?.data?.non_field_errors) {
|
if (err?.response?.data?.non_field_errors) {
|
||||||
err_msg = err.response.data.non_field_errors;
|
err_msg = err?.response.data.non_field_errors;
|
||||||
}
|
}
|
||||||
showLoginNotification({
|
showLoginNotification({
|
||||||
title: t`Input error`,
|
title: t`Input error`,
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { t } from '@lingui/macro';
|
import { t } from '@lingui/macro';
|
||||||
import { notifications } from '@mantine/notifications';
|
import { notifications } from '@mantine/notifications';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import { NavigateFunction } from 'react-router-dom';
|
||||||
|
|
||||||
import { api, setApiDefaults } from '../App';
|
import { api, setApiDefaults } from '../App';
|
||||||
import { ApiEndpoints } from '../enums/ApiEndpoints';
|
import { ApiEndpoints } from '../enums/ApiEndpoints';
|
||||||
import { apiUrl } from '../states/ApiState';
|
import { apiUrl, useServerApiState } from '../states/ApiState';
|
||||||
import { useLocalState } from '../states/LocalState';
|
import { useLocalState } from '../states/LocalState';
|
||||||
import { useUserState } from '../states/UserState';
|
import { useUserState } from '../states/UserState';
|
||||||
import { fetchGlobalStates } from '../states/states';
|
import { fetchGlobalStates } from '../states/states';
|
||||||
@@ -50,7 +51,19 @@ export const doBasicLogin = async (username: string, password: string) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch((err) => {
|
||||||
|
if (
|
||||||
|
err?.response.status == 403 &&
|
||||||
|
err?.response.data.detail == 'MFA required for this user'
|
||||||
|
) {
|
||||||
|
const auth_settings = useServerApiState.getState().auth_settings;
|
||||||
|
if (auth_settings?.mfa_urls.authenticate) {
|
||||||
|
window.location.href = auth_settings?.mfa_urls.authenticate;
|
||||||
|
} else {
|
||||||
|
console.log('MFA required but no redirect provided.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
await fetchUserState();
|
await fetchUserState();
|
||||||
@@ -65,7 +78,7 @@ export const doBasicLogin = async (username: string, password: string) => {
|
|||||||
*
|
*
|
||||||
* @arg deleteToken: If true, delete the token from the server
|
* @arg deleteToken: If true, delete the token from the server
|
||||||
*/
|
*/
|
||||||
export const doLogout = async (navigate: any) => {
|
export const doLogout = async (navigate: NavigateFunction) => {
|
||||||
const { clearUserState, isLoggedIn } = useUserState.getState();
|
const { clearUserState, isLoggedIn } = useUserState.getState();
|
||||||
|
|
||||||
// Logout from the server session
|
// Logout from the server session
|
||||||
|
|||||||
Reference in New Issue
Block a user