То, что вы ищете, это RBA C или управление доступом на основе ролей. Я построил библиотеку, которая делает большую часть того, что вы ищете. Вы можете просмотреть источник здесь для идей о том, как внедрить его в свой собственный проект. https://github.com/schester44/react-access-control
Примеры:
index. js
import { AccessProvider } from 'react-access-control;
return (<AccessProvder>
<App />
</AccessProvder>)
Приложение. js
import { useAccess } from 'react-access-control'
import Child from './Child.js'
function App() {
const { define } = useAccess()
React.useEffect(() => {
define({
permissions: {
"Admin": false,
"Moderator": true
}
})
}, [])
return <div>
<Child />
</div>
}
дочерний. js
import { hasPermission } from 'react-access-control'
function Child() {
const isAdmin = hasPermission('Admin')
const isModerator = hasPermission('Moderator')
return <div>
{isAdmin && <AdminButton />}
{isModerator && <ModeratorButton />}
</div>
}
Вы также можете использовать компонент <Show/>
для отображения / скрытия компонентов на основе разрешений.
import { Show } from 'react-access-control'
function Child() {
return <div>
<Show when="Admin">
<AdminButton />
</Show>
</div>
}