Skip to content

Instantly share code, notes, and snippets.

@arekgotfryd
Created September 5, 2017 17:34
Show Gist options
  • Save arekgotfryd/9ed40de748aabd54220086e79f08a8f0 to your computer and use it in GitHub Desktop.
Save arekgotfryd/9ed40de748aabd54220086e79f08a8f0 to your computer and use it in GitHub Desktop.
How to use HOC in order to achieve proper authorziation handling in React
export default function Authorized(WrappedComponent) {
return class extends Component {
render() {
if (auth.isAuthenticated()) {
return <WrappedComponent {...this.props} />;
} else {
return <LogIn/>;
}
}
};
}
import React, {Component} from 'react';
import './App.css';
import './pages/Homepage';
import Homepage from "./pages/Homepage";
import {Link, Route} from 'react-router-dom'
import Account from "./pages/Account";
import Schedule from "./pages/Schedule";
import Authorized from "./components/Authorized";
const authorizedAccount = Authorized(Account);
const authorizedSchedule = Authorized(Schedule);
const authorizedAccount = Authorized(Account);
const authorizedSchedule = Authorized(Schedule);
class App extends Component {
render() {
return (
<div className="App">
<header className="header">
<Link className="headerLink" to="/">Example App</Link>
<nav>
<Link className="link" to="/account">My Account</Link>
|
<Link className="link" to="/schedule">My Schedule</Link>
</nav>
</header>
<section className="content">
<Route path="/" exact component={Homepage}/>
<Route path="/schedule" component={authorizedSchedule}/>
<Route path="/account" component={authorizedAccount}/>
</section>
</div>
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment