REST / USER ID

Всё что касается построения API
Ответить
a.k.
Сообщения: 56
Зарегистрирован: 2014.11.29, 10:39

REST / USER ID

Сообщение a.k. »

Доброго дня. Есть два контроллера - comments и feedback.
У обоих есть поле user_id. Как подставить Yii::$app->user->id если юзер авторизован? Если юзер не авторизован, то user_id=0 - считается анонимным.

Аватара пользователя
samdark
Администратор
Сообщения: 9327
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: REST / USER ID

Сообщение 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;
        }
    }
}
 

a.k.
Сообщения: 56
Зарегистрирован: 2014.11.29, 10:39

Re: REST / USER ID

Сообщение a.k. »

Прошу прощения за неточность, на ночь глядя криво объяснил.
Есть две модели и два контроллера - COMMENTS и FEEDBACK - это комментарии и запросы от пользователей (могут быть анонимными).
Структура схожая - user_id, text (id пользователя и текст сообщения соответственно).
В соответствии с документацией action create срабатывает если приходит POST запрос - предположим, авторизованный пользователь отправляет комментарий методом POST - срабатывает action create. Как сохранить комментарий с надлежащим user id? Необходимо переопределять метод create, заменив $_POST['user_id']?

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: REST / USER ID

Сообщение lynicidn »

парент::инит

3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: REST / USER ID

Сообщение 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);
    }
но думаю тут многие сейчас начнут рекомендовать делать это через поведение, что тоже верно, только кол-во строк в реале больше будет ))))

a.k.
Сообщения: 56
Зарегистрирован: 2014.11.29, 10:39

Re: REST / USER ID

Сообщение a.k. »

Спасибо за помощь, разобрался.

sajid7
Сообщения: 1
Зарегистрирован: 2014.12.31, 13:24

Re: REST / USER ID

Сообщение sajid7 »

Как можно разрешить анонимным пользователям использовать протокол? Есть метод который сразу в голову пришел - создать пользователя Anonymous в базе, задать ему логин пароль и обращаться с соответствующим access-token, но данное решение по-моему ужасно топорное.
sajid

Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: REST / USER ID

Сообщение anton44eg »

убрать аутентификацию для этого экшена

Ответить