Prevent user from going to login page id no user is registered

This commit is contained in:
cyril lopez 2017-12-12 15:12:08 +01:00
parent 455ff3ed68
commit 02e2016a7a
4 changed files with 26 additions and 5 deletions

View File

@ -66,10 +66,22 @@ export class AdminPage extends React.Component { // eslint-disable-line react/pr
this.props.history.push(`/plugins/users-permissions/auth/${endPoint}`); this.props.history.push(`/plugins/users-permissions/auth/${endPoint}`);
} }
if (!this.isUrlProtected(props) && includes(props.location.pathname, 'register') && this.hasAdminUser(props)) { if (!this.isUrlProtected(props) && includes(props.location.pathname, 'auth/register') && this.hasAdminUser(props)) {
this.props.history.push('/plugins/users-permissions/auth/login'); this.props.history.push('/plugins/users-permissions/auth/login');
} }
if (!this.isUrlProtected(props) && includes(props.location.pathname, 'auth/login') && !this.hasAdminUser(props)) {
this.props.history.push('/plugins/users-permissions/auth/register');
}
if (!this.isUrlProtected(props) && includes(props.location.pathname, 'auth/forgot-password') && !this.hasAdminUser(props)) {
this.props.history.push('/plugins/users-permissions/auth/register');
}
if (!this.isUrlProtected(props) && includes(props.location.pathname, 'auth/reset-password') && !this.hasAdminUser(props)) {
this.props.history.push('/plugins/users-permissions/auth/register');
}
if (!props.hasUserPlugin || auth.getToken() && !this.state.hasAlreadyRegistereOtherPlugins) { if (!props.hasUserPlugin || auth.getToken() && !this.state.hasAlreadyRegistereOtherPlugins) {
map(omit(this.props.plugins.toJS(), ['users-permissions', 'email']), plugin => { map(omit(this.props.plugins.toJS(), ['users-permissions', 'email']), plugin => {
switch (true) { switch (true) {

View File

@ -77,9 +77,10 @@ export function setForm(formType, email) {
}; };
} }
export function submit() { export function submit(context) {
return { return {
type: SUBMIT, type: SUBMIT,
context,
}; };
} }

View File

@ -85,7 +85,7 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
this.props.setErrors(formErrors); this.props.setErrors(formErrors);
if (isEmpty(formErrors)) { if (isEmpty(formErrors)) {
this.props.submit(); this.props.submit(this.context);
} }
} }
@ -190,6 +190,10 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
} }
} }
AuthPage.contextTypes = {
updatePlugin: PropTypes.func,
};
AuthPage.propTypes = { AuthPage.propTypes = {
didCheckErrors: PropTypes.bool.isRequired, didCheckErrors: PropTypes.bool.isRequired,
formErrors: PropTypes.array.isRequired, formErrors: PropTypes.array.isRequired,

View File

@ -7,7 +7,7 @@ import { makeSelectFormType, makeSelectModifiedData } from './selectors';
import { submitError, submitSucceeded } from './actions'; import { submitError, submitSucceeded } from './actions';
import { SUBMIT } from './constants'; import { SUBMIT } from './constants';
export function* submitForm() { export function* submitForm(action) {
try { try {
const formType = yield select(makeSelectFormType()); const formType = yield select(makeSelectFormType());
const body = yield select(makeSelectModifiedData()); const body = yield select(makeSelectModifiedData());
@ -38,11 +38,15 @@ export function* submitForm() {
yield call(auth.setUserInfo, response.user, body.rememberMe); yield call(auth.setUserInfo, response.user, body.rememberMe);
} }
if (formType === 'register') {
action.context.updatePlugin('users-permissions', 'hasAdminUser', true);
}
yield put(submitSucceeded()); yield put(submitSucceeded());
} catch(error) { } catch(error) {
const formType = yield select(makeSelectFormType()); const formType = yield select(makeSelectFormType());
if (isArray(error.response.payload.message)) { if (isArray(get(error, ['response', 'payload', 'message']))) {
const errors = error.response.payload.message.reduce((acc, key) => { const errors = error.response.payload.message.reduce((acc, key) => {
const err = key.messages.reduce((acc, key) => { const err = key.messages.reduce((acc, key) => {