ampache_react/app/containers/RequireAuthentication.js

52 lines
1.2 KiB
JavaScript

import React, { Component, PropTypes } from "react";
import { connect } from "react-redux";
// TODO: Handle expired session
export class RequireAuthentication extends Component {
componentWillMount () {
this.checkAuth(this.props.isAuthenticated);
}
componentWillUpdate (newProps) {
this.checkAuth(newProps.isAuthenticated);
}
checkAuth (isAuthenticated) {
if (!isAuthenticated) {
this.context.router.replace({
pathname: "/login",
state: {
nextPathname: this.props.location.pathname,
nextQuery: this.props.location.query
}
});
}
}
render () {
return (
<div>
{this.props.isAuthenticated === true
? this.props.children
: null
}
</div>
);
}
}
RequireAuthentication.propTypes = {
// Injected by React Router
children: PropTypes.node
};
RequireAuthentication.contextTypes = {
router: PropTypes.object.isRequired
};
const mapStateToProps = (state) => ({
isAuthenticated: state.auth.isAuthenticated
});
export default connect(mapStateToProps)(RequireAuthentication);