Browse Source

add redirect feature for authentication

master
Rick Watson 5 years ago
parent
commit
5c6ba73e1f
  1. 5
      interface/src/AppRouting.js
  2. 2
      interface/src/authentication/Authentication.js
  3. 24
      interface/src/authentication/UnauthenticatedRoute.js

5
interface/src/AppRouting.js

@ -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} />

2
interface/src/authentication/Authentication.js

@ -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

@ -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);
Loading…
Cancel
Save