Skip to content

Instantly share code, notes, and snippets.

@MegaBlackLabel
Forked from wuct/AuthorizationHOC.js
Created February 1, 2018 07:07
Show Gist options
  • Save MegaBlackLabel/20b11f4d1cb1204d0048b7faa670fc5b to your computer and use it in GitHub Desktop.
Save MegaBlackLabel/20b11f4d1cb1204d0048b7faa670fc5b to your computer and use it in GitHub Desktop.
An authorization high-order-component using recompose, redux and react-router.
import { emptyObject } from 'fbjs/lib/emptyObject';
import { connect } from 'react-redux';
import { pushState } from 'redux-router';
import pure from 'recompose/pure';
import defaultProps from 'recompose/defaultProps';
import doOnReceiveProps from 'recompose/doOnReceiveProps';
import renderNothing from 'recompose/renderNothing';
import renderComponent from 'recompose/renderComponent';
import branch from 'recompose/branch';
import compose from 'recompose/compose';
export default function(BaseComponent) {
return compose(
connect(
({ auth }) => ({ auth }),
{ pushState }
),
pure,
defaultProps({ auth: emptyObject }),
doOnReceiveProps(props => {
if (!props.auth.token) {
props.pushState(null, `/login?next=${location.pathname}`);
}
}),
branch(
props => props.auth.token,
renderComponent(BaseComponent),
renderNothing,
)
)(BaseComponent);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment