diff --git a/src/components/navigation/www/navigation.jsx b/src/components/navigation/www/navigation.jsx index c786fad79..af5f5f3b6 100644 --- a/src/components/navigation/www/navigation.jsx +++ b/src/components/navigation/www/navigation.jsx @@ -259,14 +259,14 @@ var Navigation = React.createClass({ - {this.props.session.session.permissions.educator ? [ + {this.props.permissions.educator ? [
  • ] : []} - {this.props.session.session.permissions.student ? [ + {this.props.permissions.student ? [
  • @@ -335,7 +335,8 @@ var Navigation = React.createClass({ var mapStateToProps = function (state) { return { - session: state.session + session: state.session, + permissions: state.permissions }; }; diff --git a/src/lib/render.jsx b/src/lib/render.jsx index 9c7ed465c..833694552 100644 --- a/src/lib/render.jsx +++ b/src/lib/render.jsx @@ -6,6 +6,7 @@ var ReactDOM = require('react-dom'); var StoreProvider = require('react-redux').Provider; var IntlProvider = require('./intl.jsx').IntlProvider; +var permissionsActions = require('../redux/permissions.js'); var sessionActions = require('../redux/session.js'); var reducer = require('../redux/reducer.js'); @@ -42,7 +43,8 @@ var render = function (jsx, element) { element ); - // Get initial session + // Get initial session & permissions + store.dispatch(permissionsActions.getPermissions()); store.dispatch(sessionActions.refreshSession()); }; diff --git a/src/redux/session.js b/src/redux/session.js index 16be21028..c6fa5ed25 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -2,6 +2,7 @@ var keyMirror = require('keymirror'); var defaults = require('lodash.defaults'); var api = require('../lib/api'); +var permissionsActions = require('./permissions.js'); var tokenActions = require('./token.js'); var Types = keyMirror({ @@ -75,6 +76,9 @@ module.exports.refreshSession = function () { dispatch(tokenActions.getToken()); dispatch(module.exports.setSession(body)); dispatch(module.exports.setStatus(module.exports.Status.FETCHED)); + + // get the permissions from the updated session + dispatch(permissionsActions.getPermissions()); return; } } diff --git a/src/views/splash/splash.jsx b/src/views/splash/splash.jsx index c4372f7e1..c3241fd62 100644 --- a/src/views/splash/splash.jsx +++ b/src/views/splash/splash.jsx @@ -4,7 +4,6 @@ var omit = require('lodash.omit'); var React = require('react'); var api = require('../../lib/api'); -var permissionsActions = require('../../redux/permissions.js'); var render = require('../../lib/render.jsx'); var sessionActions = require('../../redux/session.js'); var shuffle = require('../../lib/shuffle.js').shuffle; @@ -62,10 +61,6 @@ var Splash = injectIntl(React.createClass({ } } }, - componentWillMount: function () { - // Determine whether to show the teacher banner or not - this.props.dispatch(permissionsActions.getPermissions()); - }, componentDidMount: function () { this.getFeaturedGlobal(); if (this.props.session.session.user) {