Sobes.tech
Middle

Racontez comment la matrice des droits était organisée et comment l'affichage des éléments en fonction du rôle de l'utilisateur était organisé dans le code.

sobes.tech IA

Réponse de l'IA

В нашем проекте матрица прав была реализована в виде объекта, где ключами выступали роли пользователей, а значениями — наборы разрешённых действий или доступных компонентов интерфейса. Например, для каждой роли мы определяли, какие кнопки, страницы или функции доступны.

В коде это выглядело примерно так:

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