Где / как поставить класс для управления тем, что может делать пользователь (привилегии)?
Я использую класс, который выполняет правильный запрос на основе $_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
затем разрешите редактировать
- если
- если да, то проверьте, что is_published установлен в
Ваш псевдокод выглядит слишком просто для меня. Делать все в конструкторе? Или как это перевести?
ИМО сначала нужно определить свои потребности. Какие задачи разрешены, а какие нет? Когда у вас есть план, у вас есть решение тоже.