Как запретить роли видеть все индексы кроме тех, к которым есть доступ?

Ссылка скопирована
1 ответ

Есть неймспейс проекта, в него пишется 2 индекса с прода и теста.
Есть роль, у которой привелегии настроены на доступ только к индексу теста.
Когда пользователь в этой роли авторизируется, то у него есть возможность видеть все индексы в этом неймспейсе (просматривать сами логи возможности у него нет), даже к тем, доступ к которым не надам.

Как запретить роли видеть все индексы кроме тех, к которым есть доступ?

Есть ли возможность убрать отображение индекса для прода(и любых других), если к ним нет доступа?
Или сделать индекс теста дефолтным (дефолтное отображение можно назначить в настройках неймспейса, но это не подходит, нужно дефолтное отображение относительно роли)

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Для того чтобы запретить определенным пользователям видеть все индексы, кроме тех, к которым у них есть доступ, можно использовать различные способы и технологии в зависимости от специфики вашего проекта. Ниже приведен пример использования PHP и MySQL для решения данной проблемы.

1. Сначала необходимо создать таблицу в базе данных, где будут храниться данные о доступе пользователей к индексам. Пример структуры таблицы:

CREATE TABLE access (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    index_id INT
);

CREATE TABLE access ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, index_id INT );

2. Далее необходимо реализовать логику проверки доступа к индексам. Пример функции, которая будет проверять доступ пользователя к конкретному индексу:

function checkAccess($user_id, $index_id) {
    $db = new PDO("mysql:host=localhost;dbname=your_db", "username", "password");
 
    $stmt = $db->prepare("SELECT COUNT(*) FROM access WHERE user_id = :user_id AND index_id = :index_id");
    $stmt->bindParam(':user_id', $user_id);
    $stmt->bindParam(':index_id', $index_id);
    $stmt->execute();
 
    $result = $stmt->fetchColumn();
 
    return $result > 0;
}

function checkAccess($user_id, $index_id) { $db = new PDO("mysql:host=localhost;dbname=your_db", "username", "password"); $stmt = $db->prepare("SELECT COUNT(*) FROM access WHERE user_id = :user_id AND index_id = :index_id"); $stmt->bindParam(':user_id', $user_id); $stmt->bindParam(':index_id', $index_id); $stmt->execute(); $result = $stmt->fetchColumn(); return $result > 0; }

3. Теперь необходимо добавить проверку доступа к индексам в вашем приложении. Пример:

$user_id = 1; // ID пользователя
$index_id = 5; // ID индекса
 
if (checkAccess($user_id, $index_id)) {
    // Пользователь имеет доступ к индексу
    // Ваш код для отображения индекса
} else {
    // Пользователь не имеет доступа к индексу
    echo "У вас нет доступа к данному индексу";
}

$user_id = 1; // ID пользователя $index_id = 5; // ID индекса if (checkAccess($user_id, $index_id)) { // Пользователь имеет доступ к индексу // Ваш код для отображения индекса } else { // Пользователь не имеет доступа к индексу echo "У вас нет доступа к данному индексу"; }

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно