Es sind aktuell keine Projekte vorhanden.
- {this.props.match.path.replace('/','') === 'project' ?
+ {this.props.location.pathname.replace('/','') === 'project' ?
Erstelle jetzt dein eigenes Projekt oder lasse dich von Projektbeispielen in der Galerie inspirieren.
: null}
@@ -138,4 +138,4 @@ const mapStateToProps = state => ({
});
-export default connect(mapStateToProps, { getProjects, resetProject, clearMessages })(withStyles(styles, { withTheme: true })(ProjectHome));
+export default connect(mapStateToProps, { getProjects, resetProject, clearMessages })(withStyles(styles, { withTheme: true })(withRouter(ProjectHome)));
diff --git a/src/components/Route/PrivateRoute.js b/src/components/Route/PrivateRoute.js
new file mode 100644
index 0000000..4de5bc5
--- /dev/null
+++ b/src/components/Route/PrivateRoute.js
@@ -0,0 +1,41 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+
+import { Route, Redirect, withRouter } from 'react-router-dom';
+
+
+class PrivateRoute extends Component {
+
+ render() {
+ return (
+
+ this.props.isAuthenticated ? (
+ this.props.children
+ ) : (()=>{
+ return (
+
+ )
+ })()
+ }
+ />
+ );
+ }
+}
+
+PrivateRoute.propTypes = {
+ isAuthenticated: PropTypes.bool
+};
+
+const mapStateToProps = state => ({
+ isAuthenticated: state.auth.isAuthenticated
+});
+
+export default connect(mapStateToProps, null)(withRouter(PrivateRoute));
diff --git a/src/components/Routes.js b/src/components/Route/Routes.js
similarity index 61%
rename from src/components/Routes.js
rename to src/components/Route/Routes.js
index 70bee87..79d1e01 100644
--- a/src/components/Routes.js
+++ b/src/components/Route/Routes.js
@@ -1,21 +1,22 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
-import { visitPage } from '../actions/generalActions';
+import { visitPage } from '../../actions/generalActions';
import { Route, Switch, withRouter } from 'react-router-dom';
-import Home from './Home';
-import Tutorial from './Tutorial/Tutorial';
-import TutorialHome from './Tutorial/TutorialHome';
-import Builder from './Tutorial/Builder/Builder';
-import NotFound from './NotFound';
-import ProjectHome from './Project/ProjectHome';
-import Project from './Project/Project';
-import Settings from './Settings/Settings';
-import Impressum from './Impressum';
-import Privacy from './Privacy';
-import Login from './User/Login';
+import PrivateRoute from './PrivateRoute';
+import Home from '../Home';
+import Tutorial from '../Tutorial/Tutorial';
+import TutorialHome from '../Tutorial/TutorialHome';
+import Builder from '../Tutorial/Builder/Builder';
+import NotFound from '../NotFound';
+import ProjectHome from '../Project/ProjectHome';
+import Project from '../Project/Project';
+import Settings from '../Settings/Settings';
+import Impressum from '../Impressum';
+import Privacy from '../Privacy';
+import Login from '../User/Login';
class Routes extends Component {
@@ -31,7 +32,9 @@ class Routes extends Component {
// Tutorials
-
+
+
+
// Sharing
@@ -39,8 +42,12 @@ class Routes extends Component {
// User-Projects
-
-
+
+
+
+
+
+
// User
// settings
diff --git a/src/components/User/Login.js b/src/components/User/Login.js
index 81e8963..d8dfc32 100644
--- a/src/components/User/Login.js
+++ b/src/components/User/Login.js
@@ -25,6 +25,7 @@ export class Login extends Component {
constructor(props) {
super(props);
this.state = {
+ redirect: props.location.state ? props.location.state.from.pathname : null,
email: '',
password: '',
snackbar: false,
@@ -36,10 +37,16 @@ export class Login extends Component {
}
componentDidUpdate(props){
+ console.log(this.state.redirect);
const { message } = this.props;
if (message !== props.message) {
if(message.id === 'LOGIN_SUCCESS'){
- this.props.history.goBack();
+ if(this.state.redirect){
+ this.props.history.push(this.state.redirect);
+ }
+ else{
+ this.props.history.goBack();
+ }
}
// Check for login error
else if(message.id === 'LOGIN_FAIL'){