X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b6ac7fe88d347582d39fffa002e300af222c578f..e10e24d713e5c31cbc34efca458f5718eb6eb000:/src/views-components/login-form/login-form.tsx diff --git a/src/views-components/login-form/login-form.tsx b/src/views-components/login-form/login-form.tsx index aac1364207..6c5902653b 100644 --- a/src/views-components/login-form/login-form.tsx +++ b/src/views-components/login-form/login-form.tsx @@ -12,6 +12,7 @@ import { AxiosPromise } from 'axios'; import { DispatchProp } from 'react-redux'; import { saveApiToken } from 'store/auth/auth-action'; import { navigateToRootProject } from 'store/navigation/navigation-action'; +import { replace } from 'react-router-redux'; type CssRules = 'root' | 'loginBtn' | 'card' | 'wrapper' | 'progress'; @@ -83,24 +84,31 @@ export const LoginForm = withStyles(styles)( setHelperText(''); setSubmitting(true); handleSubmit(username, password) - .then((response) => { - setSubmitting(false); - if (response.data.uuid && response.data.api_token) { - const apiToken = `v2/${response.data.uuid}/${response.data.api_token}`; - dispatch(saveApiToken(apiToken)).finally( - () => dispatch(navigateToRootProject)); - } else { + .then((response) => { + setSubmitting(false); + if (response.data.uuid && response.data.api_token) { + const apiToken = `v2/${response.data.uuid}/${response.data.api_token}`; + const rd = new URL(window.location.href); + const rdUrl = rd.pathname + rd.search; + dispatch(saveApiToken(apiToken)).finally( + () => { + if ((new URL(window.location.href).pathname) !== '/my-account') { + rdUrl === '/' ? dispatch(navigateToRootProject) : dispatch(replace(rdUrl)) + } + } + ); + } else { + setError(true); + setHelperText(response.data.message || 'Please try again'); + setFocus(); + } + }) + .catch((err) => { setError(true); - setHelperText(response.data.message || 'Please try again'); + setSubmitting(false); + setHelperText(`${(err.response && err.response.data && err.response.data.errors[0]) || 'Error logging in: ' + err}`); setFocus(); - } - }) - .catch((err) => { - setError(true); - setSubmitting(false); - setHelperText(`${(err.response && err.response.data && err.response.data.errors[0]) || 'Error logging in: '+err}`); - setFocus(); - }); + }); }; const handleKeyPress = (e: any) => { @@ -113,38 +121,38 @@ export const LoginForm = withStyles(styles)( return ( -
- -
- - setUsername(e.target.value)} - onKeyPress={(e) => handleKeyPress(e)} - /> - setPassword(e.target.value)} - onKeyPress={(e) => handleKeyPress(e)} - /> - - - - - { isSubmitting && } -
-
-
+
+ +
+ + setUsername(e.target.value)} + onKeyPress={(e) => handleKeyPress(e)} + /> + setPassword(e.target.value)} + onKeyPress={(e) => handleKeyPress(e)} + /> + + + + + {isSubmitting && } +
+
+
); });