-
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 OpenID provider when the user is expired.
NOTE: When triggerAuthFlow is set to false, you can implement custom behavior. The userExpired action is dispatched when the current user is invalid. You can have your sagas/thunks/etc listen to this action and trigger custom behavior manually. See oidc-client-js's documentation for details on how to trigger the redirection manually.
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();