-
Notifications
You must be signed in to change notification settings - Fork 107
3. API
This package contains the following components:
import createOidcMiddleware, { createUserManager } from 'redux-oidc';
const config = {
// userManager config object
}
const mgr = createUserManager(config);
// a custom shouldValidate function
const shouldValidate = (state, action) => {
if (action.type === 'DONT_VALIDATE') {
return false;
}
return true;
}
const oidcMiddleware = createOidcMiddleware(userManager, shouldValidate);
-
userManagerrequired: aUserManagerinstance, -
shouldValidatedefault(state, action) => true: a function which gets the current state & action passed in. Returnstruewhen validation should occur orfalseif it shouldn't, - triggerAuthFlow default
true: iftrue, the middleware triggers a redirect to the token service when the user is expired.
NOTE: When triggerAuthFlow is set to false, you are responsible for initiating the redirect. The userExpired action is dispatched when the current user is invalid. You can have your sagas, thunks listen to this action and trigger custom behavior manually. See oidc-client-js's documentation for details.
import { OidcProvider } from 'redux-oidc';
import { createStore } from 'redux';
import { createUserManager, Provider } from 'react-redux';
const manager = createUserManager();
const store = createStore(/* your reducers */);
ReactDOM.render(
<Provider store={store}>
<OidcProvider store={store} userManager={userManager} />
</Provider>,
document.getElementById('app')
);
-
storerequired: the redux store, -
userManagerrequired: TheUserManagerinstance.
There are reducers avaiable for both classic JS and apps using immutable. They both store the current user object under the user key in the redux state.
import { reducer } from 'redux-oidc'; // classic JS
// OR
import { immutableReducer } from 'redux-oidc'; // immutable JS
import { combineReducers } from 'redux';
import { connect } from 'react-redux';
const rootReducer = combineReducers({
oidc: reducer,
// your other reducers...
});
The callback component manages the token callback from the identity provider. A custom successCallback function is required to handle the redirect after the callback has been completed.
import React from 'react';
import { CallbackComponent } from 'redux-oidc';
class MyCallbackPage extends React.Component {
successCallback = (user) => {
// the url before redirection was triggered is passed into the user object
// and can be accessed like this
redirect(user.state.redirectUrl);
};
render() {
return (
<CallbackComponent successCallback={this.successCallback}>
My custom content!
</CallbackComponent>
)
}
}
function mapDispatchToProps(dispatch) {
return {
dispatch
};
}
export default connect(null, mapDispatchToProps)(MyCallbackPage);
-
successCallbackrequired: A function which is called after the token callback was successfully processed.
A function which returns a UserManager instance.
import { createUserManager } from 'redux-oidc';
const mgr = createUserManager();
-
configoptional: a config object for theUserManager. See oidc-client-js's wiki for more information.
A function which is called when a silent renew is triggered. See silent renew for more information.
Usage example:
import { processSilentRenew } from 'redux-oidc';
processSilentRenew();