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

Я использую класс, который выполняет правильный запрос на основе $ _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 ]

0 голосов
/ 28 марта 2011

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

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

0 голосов
/ 28 марта 2011

Вы должны установить 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, а затем разрешать редактировать
      * 1024.*
...