dzheka3d
@dzheka3d

Как правильно делать проверку на определенные действия пользователя?

Всем привет! На сайте пользователи могут удалять, изменять и добавлять какой-то контент, комментарии и т.д.
Какие-то группы пользователей могут только читать комментарии, какие-то добавлять, какие-то удалять свои или чужие комментарии или статьи.
Как правильно это организовывается?
Я делаю так... Например при открытии страницы редактирования статьи посылаю запрос к БД и получаю информацию о пользователе, который загрузил статью:
"SELECT `articles`.`user_id` FROM `articles` WHERE `id` = {$id} LIMIT 1"

// Делаем проверку на загрузившего
if($row['user_id'] == $user_id){
	$allow_edit = true;
}
// если по-прежнему не разрешено, проверяем, может пользователь находится в группе, для которой разрешено изменять чужие статьи
if(!$allow_edit){
	$user_groups = getUserGroups(); // получаем все разрешения для всех групп
	if($user_groups[$_SESSION['group_id']]['edit_all_articles'] == 1){
		$allow_edit = true;
	}
}


Ну и так далее... Правильно ли я делаю? Я засомневался тогда, когда такие проверки пришлось вставлять повсеместно, как для статей, так и для комментариев, на удаление и т.д.
Но кроме того, такие проверки нужно вставлять при выводе списка статей комментариев, новостей, записей и т.д. только для того, чтобы показать/скрыть ссылку на редактирование...
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Да, такие проверки надо делать на каждый блок и даже каждую ссылку/кнопку.
Для оптимизации можно один раз все права прочитать из БД или изначально хранить в подготовленных файлах (например, в виде готового PHP-массива).
https://habrahabr.ru/company/custis/blog/248649/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы