This commit is contained in:
Nikita Gopienko 2019-10-07 14:41:04 +03:00
commit bea24a4b5e
8 changed files with 85 additions and 32 deletions

View File

@ -1,11 +1,12 @@
import React, { Suspense, lazy } from "react";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import { Router, Route, Switch } from "react-router-dom";
import { Loader } from "asc-web-components";
import StudioLayout from "./components/Layout/index";
import Login from "./components/pages/Login";
import { PrivateRoute } from "./helpers/privateRoute";
import PublicRoute from "./helpers/publicRoute";
import { Error404 } from "./components/pages/Error";
import history from './history';
const Home = lazy(() => import("./components/pages/Home"));
const About = lazy(() => import("./components/pages/About"));
@ -13,7 +14,7 @@ const Confirm = lazy(() => import("./components/pages/Confirm"));
const App = () => {
return (
<BrowserRouter>
<Router history={history}>
<StudioLayout>
<Suspense
fallback={<Loader className="pageLoader" type="rombs" size={40} />}
@ -27,7 +28,7 @@ const App = () => {
</Switch>
</Suspense>
</StudioLayout>
</BrowserRouter>
</Router>
);
};

View File

@ -1,6 +1,6 @@
import React, { Suspense, lazy } from "react";
import { connect } from "react-redux";
import { Redirect, Route, Switch } from "react-router-dom";
import { Route, Switch } from "react-router-dom";
import { Loader } from "asc-web-components";
import ConfirmRoute from "../../../helpers/confirmRoute";
import i18n from "./i18n";
@ -31,6 +31,7 @@ const Confirm = ({ match, language }) => {
component={CreateUserForm}
/>
<ConfirmRoute
forUnauthorized
path={`${match.path}/Activation`}
component={ActivateUserForm}
/>

View File

@ -111,13 +111,14 @@ class Confirm extends React.PureComponent {
firstname: this.state.firstName,
lastname: this.state.lastName
};
logout();
activateConfirmUser(personalData, loginData, this.state.key, this.state.userId, EmployeeActivationStatus.Activated)
.then(() => window.location.href = '/')
.catch(e => {
console.error("activate error", e);
this.setState({ errorText: e.message });
this.setState({ isLoading: false });
this.setState({
errorText: e.message,
isLoading: false
});
});
});
};
@ -321,4 +322,4 @@ function mapStateToProps(state) {
};
}
export default connect(mapStateToProps, { getConfirmationInfo, activateConfirmUser,logout })(withRouter(withTranslation()(ActivateUserForm)));
export default connect(mapStateToProps, { getConfirmationInfo, activateConfirmUser, logout })(withRouter(withTranslation()(ActivateUserForm)));

View File

@ -8,6 +8,23 @@ import PropTypes from 'prop-types';
class ChangeEmail extends React.PureComponent {
componentDidMount() {
const { changeEmail, userId, isLoaded, linkData } = this.props;
if (isLoaded) {
const email = linkData.email;
const key = linkData.confirmHeader;
changeEmail(userId, { email }, key)
.then((res) => {
console.log('change client email success', res)
window.location.href = `${window.location.origin}/products/people/view/@self?email_change=success`;
})
.catch((e) => {
console.log('change client email error', e)
window.location.href = `${window.location.origin}/error=${e.message}`;
});
}
}
componentDidUpdate() {
const { changeEmail, userId, isLoaded, linkData } = this.props;
if (isLoaded) {

View File

@ -1,11 +1,13 @@
import React from 'react';
import { Route } from 'react-router-dom';
import { Route, Redirect } from 'react-router-dom';
import { ValidationResult } from './../helpers/constants';
import { decomposeConfirmLink } from './../helpers/converters';
import { PageLayout, Loader } from "asc-web-components";
import { connect } from 'react-redux';
import { checkConfirmLink } from './../store/auth/actions';
import { withRouter } from "react-router";
import Cookies from "universal-cookie";
import { AUTH_KEY } from './constants';
class ConfirmRoute extends React.Component {
constructor(props) {
@ -56,24 +58,38 @@ class ConfirmRoute extends React.Component {
break;
}
})
.catch((e) => history.push(`${path}/error=${e}`));
.catch((e) => {
history.push(`${path}/error=${e.message}`);
})
}
render() {
const { component: Component, ...rest } = this.props;
const { component: Component, isAuthenticated, ...rest } = this.props;
let path = '';
if (!isAuthenticated) {
path = '/login';
}
const { forUnauthorized } = rest;
return (
<Route
{...rest}
render={props =>
!this.state.isLoaded ? (
<PageLayout
sectionBodyContent={
<Loader className="pageLoader" type="rombs" size={40} />
}
forUnauthorized && (new Cookies()).get(AUTH_KEY)
? <Redirect
to={{
pathname: `${path}/error=Access error`,
state: { from: props.location }
}}
/>
) : (
<Component {...props = { ...props, linkData: this.state.componentProps }} />
)
: !this.state.isLoaded ? (
<PageLayout
sectionBodyContent={
<Loader className="pageLoader" type="rombs" size={40} />
}
/>
) : (
<Component {...props = { ...props, linkData: this.state.componentProps }} />
)
}
/>
)

View File

@ -0,0 +1,6 @@
export function checkResponseError(res) {
if (res && res.data && res.data.error) {
console.error(res.data.error);
throw new Error(res.data.error.message);
}
}

View File

@ -0,0 +1,3 @@
import { createBrowserHistory } from 'history';
export default createBrowserHistory();

View File

@ -1,5 +1,6 @@
import * as api from '../services/api';
import setAuthorizationToken from '../services/setAuthorizationToken';
import { checkResponseError } from '../../helpers/utils';
export const LOGIN_POST = 'LOGIN_POST';
export const SET_CURRENT_USER = 'SET_CURRENT_USER';
@ -74,20 +75,34 @@ export function setNewEmail(email) {
};
};
export function getUser(dispatch) {
return api.getUser()
.then((res) => {
checkResponseError(res);
return dispatch(setCurrentUser(res.data.response));
});
}
export function getPortalSettings(dispatch) {
return api.getSettings()
.then(res => {
checkResponseError(res);
return dispatch(setSettings(res.data.response))
return dispatch(setSettings(res.data.response));
});
}
export function getModules(dispatch) {
return api.getModulesList()
.then(res => {
checkResponseError(res);
return dispatch(setModules(res.data.response));
});
}
export function getUserInfo(dispatch) {
return api.getUser()
.then((res) => dispatch(setCurrentUser(res.data.response)))
.then(() => getPortalSettings(dispatch))
.then(api.getModulesList)
.then((res) => dispatch(setModules(res.data.response)))
return getUser(dispatch)
.then(getPortalSettings.bind(this, dispatch))
.then(getModules.bind(this, dispatch))
.then(() => dispatch(setIsLoaded(true)));
};
@ -138,13 +153,6 @@ export function createConfirmUser(registerData, loginData, key) {
};
};
export function checkResponseError(res) {
if (res && res.data && res.data.error) {
console.error(res.data.error);
throw new Error(res.data.error.message);
}
}
export function changePassword(userId, password, key) {
return dispatch => {
return api.changePassword(userId, password, key)