Sobes.tech
Назад к вопросам
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, что обеспечивало гибкость и безопасность на клиенте.