Где / как поставить класс для управления тем, что может делать пользователь (привилегии)?

Я использую класс, который выполняет правильный запрос на основе $_POST['action'].. Пример:

class data {     //>pseudocode
 __constructor(){
   if ($_POST['action']=='insert')
      mysql_query("INSERT ..");
   else if ($_POST['action']=='edit') 
      mysql_query("UPDATE ..");
 }
}

Теперь, конечно, я бы хотел запретить пользователю делать то, что он не может делать... например, редактировать посты кого-то другого, или что-то более сложное, например, он может редактировать свои посты, только если они еще не опубликованы. После публикации сообщения он больше не может редактировать (или, может быть, что-то, основанное на времени)

Как бы вы добавили эти проверки в моем class data? Я когда-то слышал о Zend_ACL, это то, что может работать в этом случае?

Изменить: я бы не использовал базу данных для хранения привилегий

Edit2: я хотел бы сделать это: каждый пользователь получил "уровень", уровень = 1 означает, что вы являетесь администратором, уровень = 2 означает, что вы редактор, уровень 3 = означает, что вы простой пользователь.

Так что на каждом уровне предусмотрены некоторые привилегии. Теперь, где я должен поместить эту информацию?

ти

2 ответа

Вы должны установить flag в вашей таблице, а затем проверьте эти флаги.. и в соответствии с этим вы можете разработать слои доступа

в основном ваши таблицы должны иметь эти поля

post_id(PK) | post_by(user_id of the post owner) |is_published(ENUM (Y,N))

Теперь проверьте следующее при редактировании этого поста

  • во-первых, текущий зарегистрированный идентификатор пользователя и идентификатор post_by одинаковы или нет

    • если да, то проверьте, что is_published установлен в Y или же N
      • если N тогда не позволяйте редактировать
      • если Y затем разрешите редактировать

Ваш псевдокод выглядит слишком просто для меня. Делать все в конструкторе? Или как это перевести?

ИМО сначала нужно определить свои потребности. Какие задачи разрешены, а какие нет? Когда у вас есть план, у вас есть решение тоже.

Другие вопросы по тегам