Страница 1 из 1
REST / USER ID
Добавлено: 2014.12.17, 23:40
a.k.
Доброго дня. Есть два контроллера - comments и feedback.
У обоих есть поле user_id. Как подставить Yii::$app->user->id если юзер авторизован? Если юзер не авторизован, то user_id=0 - считается анонимным.
Re: REST / USER ID
Добавлено: 2014.12.18, 01:43
samdark
Надо засунуть Yii::$app->user->id в user_id текущего контроллера?
Код: Выделить всё
class MyController extends Controller
{
public function init()
{
if (!Yii::$app->user->isGuest) {
$this->user_id = Yii::$app->user->id;
}
}
}
Re: REST / USER ID
Добавлено: 2014.12.18, 03:00
a.k.
Прошу прощения за неточность, на ночь глядя криво объяснил.
Есть две модели и два контроллера - COMMENTS и FEEDBACK - это комментарии и запросы от пользователей (могут быть анонимными).
Структура схожая - user_id, text (id пользователя и текст сообщения соответственно).
В соответствии с документацией action create срабатывает если приходит POST запрос - предположим, авторизованный пользователь отправляет комментарий методом POST - срабатывает action create. Как сохранить комментарий с надлежащим user id? Необходимо переопределять метод create, заменив $_POST['user_id']?
Re: REST / USER ID
Добавлено: 2014.12.18, 13:06
lynicidn
парент::инит
Re: REST / USER ID
Добавлено: 2014.12.18, 16:47
3ton
a.k. писал(а):Прошу прощения за неточность, на ночь глядя криво объяснил.
Есть две модели и два контроллера - COMMENTS и FEEDBACK - это комментарии и запросы от пользователей (могут быть анонимными).
Структура схожая - user_id, text (id пользователя и текст сообщения соответственно).
В соответствии с документацией action create срабатывает если приходит POST запрос - предположим, авторизованный пользователь отправляет комментарий методом POST - срабатывает action create. Как сохранить комментарий с надлежащим user id? Необходимо переопределять метод create, заменив $_POST['user_id']?
я бы описал в beforeSave() ваших моделей
Код: Выделить всё
public function beforeSave($insert)
{
if (!$this->user_id && Yii::$app->user->identity) $this->user_id = Yii::$app->user->identity->id;
return parent::beforeSave($insert);
}
можно и проще, но не все поддерживают такой синтаксис
Код: Выделить всё
public function beforeSave($insert)
{
if (!$this->user_id) $this->user_id = Yii::$app->user->identity['id'];
return parent::beforeSave($insert);
}
но думаю тут многие сейчас начнут рекомендовать делать это через поведение, что тоже верно, только кол-во строк в реале больше будет ))))
Re: REST / USER ID
Добавлено: 2014.12.20, 00:58
a.k.
Спасибо за помощь, разобрался.
Re: REST / USER ID
Добавлено: 2014.12.31, 13:28
sajid7
Как можно разрешить анонимным пользователям использовать протокол? Есть метод который сразу в голову пришел - создать пользователя Anonymous в базе, задать ему логин пароль и обращаться с соответствующим access-token, но данное решение по-моему ужасно топорное.
Re: REST / USER ID
Добавлено: 2014.12.31, 17:22
anton44eg
убрать аутентификацию для этого экшена