Страница 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
убрать аутентификацию для этого экшена