Назад к вопросам
МТС Банк
Middle
2
Расскажи, как у вас была устроена матрица прав и как в коде организовывалось отображение элементов в зависимости от роли пользователя?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В нашем проекте матрица прав была реализована в виде объекта, где ключами выступали роли пользователей, а значениями — наборы разрешённых действий или доступных компонентов интерфейса. Например, для каждой роли мы определяли, какие кнопки, страницы или функции доступны.
В коде это выглядело примерно так:
const permissions = {
admin: ['viewDashboard', 'editUsers', 'deletePosts'],
editor: ['viewDashboard', 'editPosts'],
viewer: ['viewDashboard']
};
function canAccess(role, action) {
return permissions[role]?.includes(action);
}
// В React-компоненте
function Dashboard({ userRole }) {
return (
<div>
{canAccess(userRole, 'viewDashboard') && <DashboardContent />}
{canAccess(userRole, 'editUsers') && <EditUsersButton />}
</div>
);
}
Такой подход позволял централизованно управлять правами и легко расширять их при добавлении новых ролей или функций. Отображение элементов интерфейса зависело от проверки прав через функцию canAccess, что обеспечивало гибкость и безопасность на клиенте.