rename jwt to user in authentication context, in prepartion for filtering display by user level
This commit is contained in:
		@@ -13,7 +13,7 @@ export class AuthenticatedRoute extends React.Component {
 | 
			
		||||
    const { raiseNotification, authenticationContext, component: Component, ...rest } = this.props;
 | 
			
		||||
    const { location } = this.props;
 | 
			
		||||
    const renderComponent = (props) => {
 | 
			
		||||
      if (authenticationContext.jwt) {
 | 
			
		||||
      if (authenticationContext.isAuthenticated()) {
 | 
			
		||||
        return (
 | 
			
		||||
          <Component {...props} />
 | 
			
		||||
        );
 | 
			
		||||
 
 | 
			
		||||
@@ -27,14 +27,13 @@ class AuthenticationWrapper extends React.Component {
 | 
			
		||||
 | 
			
		||||
  constructor(props) {
 | 
			
		||||
    super(props);
 | 
			
		||||
    this.refresh = this.refresh.bind(this);
 | 
			
		||||
    this.signIn = this.signIn.bind(this);
 | 
			
		||||
    this.signOut = this.signOut.bind(this);
 | 
			
		||||
    this.state = {
 | 
			
		||||
      context: {
 | 
			
		||||
        refresh: this.refresh,
 | 
			
		||||
        signIn: this.signIn,
 | 
			
		||||
        signOut: this.signOut
 | 
			
		||||
        signOut: this.signOut,
 | 
			
		||||
        isAuthenticated: this.isAuthenticated,
 | 
			
		||||
        isAdmin: this.isAdmin        
 | 
			
		||||
      },
 | 
			
		||||
      initialized: false
 | 
			
		||||
    };
 | 
			
		||||
@@ -72,44 +71,53 @@ class AuthenticationWrapper extends React.Component {
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  refresh() {
 | 
			
		||||
  refresh = () => {
 | 
			
		||||
    var accessToken = localStorage.getItem(ACCESS_TOKEN);
 | 
			
		||||
    if (accessToken) {
 | 
			
		||||
      authorizedFetch(VERIFY_AUTHORIZATION_ENDPOINT)
 | 
			
		||||
        .then(response => {
 | 
			
		||||
          const jwt = response.status === 200 ? jwtDecode(accessToken) : undefined;
 | 
			
		||||
          this.setState({ initialized: true, context: { ...this.state.context, jwt } });
 | 
			
		||||
          const user = response.status === 200 ? jwtDecode(accessToken) : undefined;
 | 
			
		||||
          this.setState({ initialized: true, context: { ...this.state.context, user } });
 | 
			
		||||
        }).catch(error => {
 | 
			
		||||
          this.setState({ initialized: true, context: { ...this.state.context, jwt: undefined } });
 | 
			
		||||
          this.setState({ initialized: true, context: { ...this.state.context, user: undefined } });
 | 
			
		||||
          this.props.raiseNotification("Error verifying authorization: " + error.message);
 | 
			
		||||
        });
 | 
			
		||||
    } else {
 | 
			
		||||
      this.setState({ initialized: true, context: { ...this.state.context, jwt: undefined } });
 | 
			
		||||
      this.setState({ initialized: true, context: { ...this.state.context, user: undefined } });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  signIn(accessToken) {
 | 
			
		||||
  signIn = (accessToken) => {
 | 
			
		||||
    try {
 | 
			
		||||
      this.setState({ context: { ...this.state.context, jwt: jwtDecode(accessToken) } });
 | 
			
		||||
      this.setState({ context: { ...this.state.context, user: jwtDecode(accessToken) } });
 | 
			
		||||
      localStorage.setItem(ACCESS_TOKEN, accessToken);
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      this.setState({ initialized: true, context: { ...this.state.context, jwt: undefined } });
 | 
			
		||||
      this.setState({ initialized: true, context: { ...this.state.context, user: undefined } });
 | 
			
		||||
      this.props.raiseNotification("Failed to parse JWT " + err.message);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  signOut() {
 | 
			
		||||
  signOut = () => {
 | 
			
		||||
    localStorage.removeItem(ACCESS_TOKEN);
 | 
			
		||||
    this.setState({
 | 
			
		||||
      context: {
 | 
			
		||||
        ...this.state.context,
 | 
			
		||||
        jwt: undefined
 | 
			
		||||
        user: undefined
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    this.props.raiseNotification("You have signed out.");
 | 
			
		||||
    history.push('/');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isAuthenticated = () => {
 | 
			
		||||
    return this.state.context.user;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  isAdmin = () => {
 | 
			
		||||
    const { context } = this.state;    
 | 
			
		||||
    return context.user && context.user.admin;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default withStyles(styles)(withNotifier(AuthenticationWrapper))
 | 
			
		||||
 
 | 
			
		||||
@@ -8,9 +8,9 @@ import * as Authentication from './Authentication';
 | 
			
		||||
 | 
			
		||||
class UnauthenticatedRoute extends React.Component {
 | 
			
		||||
  render() {
 | 
			
		||||
    const { component:Component, ...rest } = this.props;
 | 
			
		||||
    const { authenticationContext, component:Component, ...rest } = this.props;
 | 
			
		||||
    const renderComponent = (props) => {
 | 
			
		||||
      if (this.props.authenticationContext.jwt) {
 | 
			
		||||
      if (authenticationContext.isAuthenticated()) {
 | 
			
		||||
        return (<Redirect to={Authentication.fetchLoginRedirect()} />);
 | 
			
		||||
      }
 | 
			
		||||
      return (<Component {...props} />);
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +189,7 @@ class MenuAppBar extends React.Component {
 | 
			
		||||
                              <AccountCircleIcon />
 | 
			
		||||
                            </Avatar>
 | 
			
		||||
                          </ListItemAvatar>
 | 
			
		||||
                          <ListItemText primary={"Signed in as: " + authenticationContext.jwt.username} secondary={ authenticationContext.jwt.admin ? "Admin User" : undefined} />
 | 
			
		||||
                          <ListItemText primary={"Signed in as: " + authenticationContext.user.username} secondary={ authenticationContext.isAdmin() ? "Admin User" : undefined} />
 | 
			
		||||
                        </ListItem>
 | 
			
		||||
                      </List>
 | 
			
		||||
                    </CardContent>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user