import React from "react" import { Route, Redirect } from "react-router-native" import { PropTypes } from "prop-types" import { api } from "../API" import { reactAutoBind, autoBind } from "auto-bind2" export class ProtectedRoute extends React.Component { static propTypes = { location: PropTypes.shape({ pathname: PropTypes.string, search: PropTypes.string, }), admin: PropTypes.bool, } constructor(props) { super(props) reactAutoBind(this) } updateComponent() { this.forceUpdate() } componentDidMount() { api.addListener("login", this.updateComponent) api.addListener("logout", this.updateComponent) } componentWillUnmount() { api.removeListener("login", this.updateComponent) api.removeListener("logout", this.updateComponent) } render(props) { const user = api.loggedInUser if (user.pending) { return null } else { if (!user._id || (this.props.admin && !user.administrator)) { return } else { return } } } }