fix: Password reset success msg has been shown (#652)
This commit is contained in:
@@ -35,7 +35,7 @@ import {
|
||||
import ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';
|
||||
import AccountActivationMessage from './AccountActivationMessage';
|
||||
import {
|
||||
loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
|
||||
loginRemovePasswordResetBanner, loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
|
||||
} from './data/actions';
|
||||
import { INVALID_FORM } from './data/constants';
|
||||
import { loginErrorSelector, loginFormDataSelector, loginRequestSelector } from './data/selectors';
|
||||
@@ -85,12 +85,21 @@ class LoginPage extends React.Component {
|
||||
return true;
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
if (this.props.resetPassword) {
|
||||
this.props.loginRemovePasswordResetBanner();
|
||||
}
|
||||
}
|
||||
|
||||
getEnterPriseLoginURL() {
|
||||
return getConfig().LMS_BASE_URL + ENTERPRISE_LOGIN_URL;
|
||||
}
|
||||
|
||||
handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
if (this.props.resetPassword) {
|
||||
this.props.loginRemovePasswordResetBanner();
|
||||
}
|
||||
this.setState({ isSubmitted: true });
|
||||
const { emailOrUsername, password } = this.state;
|
||||
const emailValidationError = this.validateEmail(emailOrUsername);
|
||||
@@ -367,6 +376,7 @@ LoginPage.propTypes = {
|
||||
loginRequestFailure: PropTypes.func.isRequired,
|
||||
loginRequestReset: PropTypes.func.isRequired,
|
||||
setLoginFormData: PropTypes.func.isRequired,
|
||||
loginRemovePasswordResetBanner: PropTypes.func.isRequired,
|
||||
loginResult: PropTypes.shape({
|
||||
redirectUrl: PropTypes.string,
|
||||
success: PropTypes.bool,
|
||||
@@ -417,5 +427,6 @@ export default connect(
|
||||
loginRequestFailure,
|
||||
loginRequestReset,
|
||||
setLoginFormData,
|
||||
loginRemovePasswordResetBanner,
|
||||
},
|
||||
)(injectIntl(LoginPage));
|
||||
|
||||
@@ -2,6 +2,7 @@ import { AsyncActionType } from '../../data/utils';
|
||||
|
||||
export const LOGIN_REQUEST = new AsyncActionType('LOGIN', 'REQUEST');
|
||||
export const LOGIN_PERSIST_FORM_DATA = 'LOGIN_PERSIST_FORM_DATA';
|
||||
export const LOGIN_REMOVE_PASSWORD_RESET_BANNER = 'LOGIN_REMOVE_PASSWORD_RESET_BANNER';
|
||||
|
||||
// Login
|
||||
export const loginRequest = creds => ({
|
||||
@@ -31,3 +32,7 @@ export const setLoginFormData = (formData) => ({
|
||||
type: LOGIN_PERSIST_FORM_DATA,
|
||||
payload: { formData },
|
||||
});
|
||||
|
||||
export const loginRemovePasswordResetBanner = () => ({
|
||||
type: LOGIN_REMOVE_PASSWORD_RESET_BANNER,
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DEFAULT_STATE, PENDING_STATE } from '../../data/constants';
|
||||
import { RESET_PASSWORD } from '../../reset-password';
|
||||
import { LOGIN_PERSIST_FORM_DATA, LOGIN_REQUEST } from './actions';
|
||||
import { LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER, LOGIN_REQUEST } from './actions';
|
||||
|
||||
export const defaultState = {
|
||||
loginError: null,
|
||||
@@ -49,13 +49,18 @@ const reducer = (state = defaultState, action) => {
|
||||
const { formData } = action.payload;
|
||||
return {
|
||||
...state,
|
||||
resetPassword: false,
|
||||
loginFormData: {
|
||||
...state.loginFormData,
|
||||
...formData,
|
||||
},
|
||||
};
|
||||
}
|
||||
case LOGIN_REMOVE_PASSWORD_RESET_BANNER: {
|
||||
return {
|
||||
...state,
|
||||
resetPassword: false,
|
||||
};
|
||||
}
|
||||
default:
|
||||
return {
|
||||
...state,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {
|
||||
LOGIN_PERSIST_FORM_DATA,
|
||||
LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER,
|
||||
} from '../actions';
|
||||
import reducer from '../reducers';
|
||||
|
||||
@@ -38,4 +38,21 @@ describe('login reducer', () => {
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it('should set resetPassword', () => {
|
||||
const state = {
|
||||
resetPassword: true,
|
||||
};
|
||||
const action = {
|
||||
type: LOGIN_REMOVE_PASSWORD_RESET_BANNER,
|
||||
};
|
||||
|
||||
expect(
|
||||
reducer(state, action),
|
||||
).toEqual(
|
||||
{
|
||||
resetPassword: false,
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@ import configureStore from 'redux-mock-store';
|
||||
|
||||
import { COMPLETE_STATE, PENDING_STATE } from '../../data/constants';
|
||||
import {
|
||||
loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
|
||||
loginRemovePasswordResetBanner, loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
|
||||
} from '../data/actions';
|
||||
import { INTERNAL_SERVER_ERROR } from '../data/constants';
|
||||
import LoginFailureMessage from '../LoginFailure';
|
||||
@@ -557,4 +557,20 @@ describe('LoginPage', () => {
|
||||
expect(loginPage.find('LoginPage').state('emailOrUsername')).toEqual('john_doe');
|
||||
expect(loginPage.find('LoginPage').state('password')).toEqual('password1');
|
||||
});
|
||||
|
||||
it('should update reset password value when unmount called', () => {
|
||||
store = mockStore({
|
||||
...initialState,
|
||||
login: {
|
||||
...initialState.login,
|
||||
resetPassword: true,
|
||||
},
|
||||
});
|
||||
|
||||
store.dispatch = jest.fn(store.dispatch);
|
||||
const loginPage = mount(reduxWrapper(<IntlLoginPage {...props} />));
|
||||
loginPage.unmount();
|
||||
|
||||
expect(store.dispatch).toHaveBeenCalledWith(loginRemovePasswordResetBanner());
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user