# react-jwt-store

React JWT user store

## Usage

```javascript
let React = require('react'),
  userStore = require('react-jwt-store')();

class someComponent extends React.Component {
  constructor() {
    super(props);

    this.state = {
      user: userStore.getUser(),
      token: userStore.getToken()
    };
  }
  render() {
    let user = this.state.user,
      token = this.state.token;

    return (
      <div>
        <h1>{user}</h1>
        <h2>{token}</h1>
  }
}
```

### Set the token
You can set the token without interacting with cookies via the following.
```javascript
userStore.setToken('jwt')
```

### Refresh the token
You can force a refresh of the token via the following.
```javascript
userStore.refreshToken()
```

### Tweak the refresh timimg

By default, the store will check to see if the token is about to expire every minute and refresh the token if it will expire within 5 minutes. This can be customized by setting the `refreshInterval` and `expiryWindow`, respectively. See below for an example.

```javascript
  let userStore = require('react-jwt-store')({
    refreshInterval: 1000 // ms,
    expiryWindow: 15000 // ms
  })
```

### Override Cookie Key

By default, the JWT assumes the cookie key is `XSRF-TOKEN`. This can be overridden
by passing `cookie` on the `options` hash:

```javascript
  let userStore = require('react-jwt-store')({ cookie: 'NOT-XSRF-TOKEN'});
```

### Set a logger

By default, the store does not log anything, but if you pass in a `console`
compatible logger, the store will log the state of the token as it changes.
