Skip to content

Instantly share code, notes, and snippets.

@wuct
Created December 22, 2015 06:22
Show Gist options
  • Select an option

  • Save wuct/d9e1ee3b335b2fa6ef5d to your computer and use it in GitHub Desktop.

Select an option

Save wuct/d9e1ee3b335b2fa6ef5d to your computer and use it in GitHub Desktop.

Revisions

  1. wuct created this gist Dec 22, 2015.
    31 changes: 31 additions & 0 deletions AuthorizationHOC.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    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);
    }