В моем контроллере есть два следующих действия:
function add()
{
if (!empty($this->data))
{
if ($this->Favour->save($this->data))
{
$this->Session->setFlash('Your favour has been saved.');
$this->redirect(array('controller'=>'favours','action'=>'index'));
}
}
}
function edit($id = null)
{
$this->Favour->id = $id;
if (empty($this->data))
{
$this->data = $this->Favour->read();
}
else
{
if ($this->Favour->save($this->data))
{
$this->Session->setFlash('Your favour has been updated.');
$this->redirect(array('controller'=>'favours','action'=>'index'));
}
}
}
1) Я хочу иметь возможность добавить идентификатор пользователя, вошедшего в систему, в действие add, чтобы новыйpost создается с этим пользователем в качестве идентификатора автора (это внешний ключ в таблице db).Я не уверен, как разговаривать с полями в самом контроллере.
2) А для действия редактирования я хочу сделать так, чтобы редактировать пост мог только автор.Например, пользователь 200 создает сообщение 20, но пользователь 100 не может редактировать это сообщение, поскольку его идентификатор не равен 200!Я не использую ACL для своего приложения, я просто использую простую аутентификацию.
Я думал о том, чтобы сделать простое выражение if в действии, например:
function edit($id = null)
{
$this->Favour->id = $id;
$this->Favour->user_id = $user_id;
if($this->Auth->user('id') != $user_id)
{
$this->Session->setFlash('You do not have permission to edit that favour!');
$this->redirect(array('controller'=>'favours','action'=>'index'));
}
else
{
if (empty($this->data))
{
$this->data = $this->Favour->read();
}
else
{
if ($this->Favour->save($this->data))
{
$this->Session->setFlash('Your favour has been updated.');
$this->redirect(array('controller'=>'favours','action'=>'index'));
}
}
}
Было бы это правильно? НО как мне получить идентификатор пользователя из услуги?