introduce props.credentials.authenticating
helps prevent auth dupes and allows "flash" of Login component to be avoided while waiting for an authentication attempt that may succeed
This commit is contained in:
parent
ee13fcf3ad
commit
3071c489a7
|
@ -28,6 +28,10 @@ class AppContainer extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
queryStringAuthenticate() {
|
queryStringAuthenticate() {
|
||||||
|
if (this.props.credentials.authenticating) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const token = this.getQueryToken();
|
const token = this.getQueryToken();
|
||||||
|
|
||||||
if (!token) {
|
if (!token) {
|
||||||
|
@ -46,7 +50,10 @@ class AppContainer extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
requireAuthentication() {
|
requireAuthentication() {
|
||||||
return this.props.credentials.token && this.props.credentials.host && !this.props.credentials.authenticated;
|
return !this.props.credentials.authenticating &&
|
||||||
|
!this.props.credentials.authenticated &&
|
||||||
|
this.props.credentials.token &&
|
||||||
|
this.props.credentials.host;
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(){
|
componentDidUpdate(){
|
||||||
|
@ -71,7 +78,8 @@ class AppContainer extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldRenderLogin() {
|
shouldRenderLogin() {
|
||||||
return this.props.authenticationError || !this.props.credentials.authenticated;
|
return this.props.authenticationError ||
|
||||||
|
!(this.props.credentials.authenticated || this.props.credentials.authenticating);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleTheme() {
|
toggleTheme() {
|
||||||
|
|
|
@ -200,7 +200,7 @@ function compilingContract(state = false, action) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
const DEFAULT_CREDENTIALS_STATE = {host: DEFAULT_HOST, token: '', authenticated: false};
|
const DEFAULT_CREDENTIALS_STATE = {host: DEFAULT_HOST, token: '', authenticated: false, authenticating: false};
|
||||||
|
|
||||||
function credentials(state = DEFAULT_CREDENTIALS_STATE, action) {
|
function credentials(state = DEFAULT_CREDENTIALS_STATE, action) {
|
||||||
if (action.type === LOGOUT[SUCCESS]) {
|
if (action.type === LOGOUT[SUCCESS]) {
|
||||||
|
@ -208,17 +208,21 @@ function credentials(state = DEFAULT_CREDENTIALS_STATE, action) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action.type === AUTHENTICATE[FAILURE]) {
|
if (action.type === AUTHENTICATE[FAILURE]) {
|
||||||
return {error: action.error, authenticated: false};
|
return {error: action.error, authenticated: false, authenticating: false};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action.type === AUTHENTICATE[SUCCESS]) {
|
if (action.type === AUTHENTICATE[SUCCESS]) {
|
||||||
return {...state, ...{authenticated: true, token: action.token, host: action.host, error: null}};
|
return {...state, ...{authenticated: true, authenticating: false, token: action.token, host: action.host, error: null}};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action.type === FETCH_CREDENTIALS[SUCCESS]) {
|
if (action.type === FETCH_CREDENTIALS[SUCCESS]) {
|
||||||
return {...state, ...{token: action.token, host: action.host}};
|
return {...state, ...{token: action.token, host: action.host}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (action.type === AUTHENTICATE[REQUEST]) {
|
||||||
|
return {...state, ...{authenticating: true}};
|
||||||
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue