Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function isSatisfied(requirement, credentials) {
if (...) {
return false;
}
return true;
}
Куда безопаснее сделать наоборот
function protect(requirement, WrappedComponent)const protect = requirement => WrappedComponet => props => { ... }import { compose } from 'redux';
import { connect } from 'react-redux';
const enhance = compose(
protect({ ... }),
connect(...),
);
export default enhance(App);[{
path: routes.ITEMS_LIST,
component: userHasItemsListRead(ItemsList),
}].map(r => ({ ...r, component: userIsAuthenticatedRedirect(r.component) }))
<Switch>
{authenticatedRoutes.map(r => (
<Route key={r.path} path={r.path} component={r.component} />
))}
<Route path={routes.LOGIN} component={userIsNotAuthenticatedRedirect(Login)} />
<Redirect from={routes.ROOT} exact to={routes.HOME_PAGE} />
<Route component={NotFoundPage} />
</Switch>
export const userHasItemsListRead= connectedRouterRedirect({
...unauthenticatedRedirect,
authenticatedSelector: userHasItemsListReadSelector,
wrapperDisplayName: 'HasItemsListRead',
})
Подход к реализации RBAC в ReactJS