add redirect feature for authentication
This commit is contained in:
		@@ -1,11 +1,12 @@
 | 
			
		||||
import React, { Component } from 'react';
 | 
			
		||||
 | 
			
		||||
import { Redirect, Route, Switch } from 'react-router';
 | 
			
		||||
import { Redirect, Switch } from 'react-router';
 | 
			
		||||
 | 
			
		||||
// authentication
 | 
			
		||||
import * as Authentication from './authentication/Authentication';
 | 
			
		||||
import AuthenticationWrapper from './authentication/AuthenticationWrapper';
 | 
			
		||||
import AuthenticatedRoute from './authentication/AuthenticatedRoute';
 | 
			
		||||
import UnauthenticatedRoute from './authentication/UnauthenticatedRoute';
 | 
			
		||||
 | 
			
		||||
// containers
 | 
			
		||||
import WiFiConfiguration from './containers/WiFiConfiguration';
 | 
			
		||||
@@ -24,7 +25,7 @@ class AppRouting extends Component {
 | 
			
		||||
    return (
 | 
			
		||||
      <AuthenticationWrapper>
 | 
			
		||||
        <Switch>
 | 
			
		||||
          <Route exact path="/" component={SignInPage} />
 | 
			
		||||
          <UnauthenticatedRoute exact path="/" component={SignInPage} />
 | 
			
		||||
          <AuthenticatedRoute exact path="/wifi-configuration" component={WiFiConfiguration} />
 | 
			
		||||
          <AuthenticatedRoute exact path="/ap-configuration" component={APConfiguration} />
 | 
			
		||||
          <AuthenticatedRoute exact path="/ntp-configuration" component={NTPConfiguration} />
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ export function fetchLoginRedirect() {
 | 
			
		||||
  const loginSearch = localStorage.getItem(LOGIN_SEARCH);
 | 
			
		||||
  clearLoginRedirect();
 | 
			
		||||
  return {
 | 
			
		||||
    pathname: loginPathname || "/",
 | 
			
		||||
    pathname: loginPathname || "/wifi-configuration",
 | 
			
		||||
    search: (loginPathname && loginSearch) || undefined
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								interface/src/authentication/UnauthenticatedRoute.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								interface/src/authentication/UnauthenticatedRoute.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
import * as React from 'react';
 | 
			
		||||
import {
 | 
			
		||||
  Redirect, Route
 | 
			
		||||
} from "react-router-dom";
 | 
			
		||||
 | 
			
		||||
import { withAuthenticationContext } from './Context.js';
 | 
			
		||||
import * as Authentication from './Authentication';
 | 
			
		||||
 | 
			
		||||
class UnauthenticatedRoute extends React.Component {
 | 
			
		||||
  render() {
 | 
			
		||||
    const { component:Component, ...rest } = this.props;
 | 
			
		||||
    const renderComponent = (props) => {
 | 
			
		||||
      if (this.props.authenticationContext.jwt) {
 | 
			
		||||
        return (<Redirect to={Authentication.fetchLoginRedirect()} />);
 | 
			
		||||
      }
 | 
			
		||||
      return (<Component {...props} />);
 | 
			
		||||
    }
 | 
			
		||||
    return (
 | 
			
		||||
      <Route {...rest} render={renderComponent} />
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default withAuthenticationContext(UnauthenticatedRoute);
 | 
			
		||||
		Reference in New Issue
	
	Block a user