These are chat archives for dektrium/yii2-user

3rd
Jul 2015
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 09:32
Кто подскажет, как получить в модели имя пользователя, email или что-нибудь, чтобы идентифицировать пользователя? Именно в своей модели, а не в dertrium.
Vitaly
@hellvesper
Jul 03 2015 09:46
\common\models\User::findOne(Yii::$app->user->identity->id)->username
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 10:03
@hellvesper спасибо, работает. Подскажите, как сделать такой же запрос в social_account таблицу? По аналогии не получается.
Vitaly
@hellvesper
Jul 03 2015 10:54
@cosmos-rusnire у нее вроде бы нет модели
например так $social = \Yii::$app->user->identity->getAccounts()['google'];
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 11:20
@hellvesper там нет гугл, есть обычная таблица, например, с полем user_id. Ваш код не работает, пишет редактор Method 'getAccounts' not found in class null|\yii\web\IdentityInterface
@hellvesper или можно получить \common\models\User::findOne(Yii::$app->user->identity->id)->id и уже в таблице аккаунтов искать запись по id (id и user_id совпадают). Только как вызвать мне эту таблицу из своей модели, которая работает с другой таблицей?
Vitaly
@hellvesper
Jul 03 2015 11:29
@cosmos-rusnire там есть поле provider в котором храниться название сервиса. я привел пример с вытягиванием записи гугла. Можно просто Yii::$app->user->identity->getAccounts(), выдаст все записи для авторизованного юзера

@hellvesper или можно получить \common\models\User::findOne(Yii::$app->user->identity->id)->id и уже в таблице аккаунтов искать запись по id (id и user_id совпадают). Только как вызвать мне эту таблицу из своей модели, которая работает с другой таблицей?

зачем делать этот запрос? ) Он вернет тот же id что ему и отдали в Yii::$app->user->identity->id

cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 11:48
@hellvesper спасибо огромное, разобрался с тем запросом. А почему вернет тот же id, если выбрать одну запись где 'user_id' => $id который мы получили?
Vitaly
@hellvesper
Jul 03 2015 11:52
потому что Yii::$app->user->identity->id и возвращает id пользователя с таблицы User и в том случае получается мы делаем запрос в таблицу User чтобы получить его ID который же ей и передаем для поиска. Кароче билиберда =)
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 11:53
@hellvesper так я то хотел к таблице social_account сделать =))
Vitaly
@hellvesper
Jul 03 2015 11:54
Ну тогда ей и надо скармливать Yii::$app->user->identity->id только не id, а user_id, т.к. в таблице аккаунтов id в принципе не равно user_id, хоть и может совпадать на каком-то этапе
ну в смысле как пример SocialModel::findAll(['user_id' => Yii::$app->user->identity->id])
Но конкретно в этом модуле нет смысла напрямую обращаться к этой таблице, т.к. они связаны relations самой базы и доступны через эти методы как я и писал выше Yii::$app->user->identity->getAccounts() вернет тоже самое
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 11:58

@hellvesper а, вот оно как. Спасибо еще раз!

И пользуясь случаем, спрошу: Мне приходится derktrium подгонять под себя. Например, с токеном работал и пришлось в 3-х файлах изменить код, добавить методы. Так вот, это нормально, редактировать код прям так, ведь, если обновить на новую версию, то все слетит. Как в данной ситуации быть?

Vitaly
@hellvesper
Jul 03 2015 12:01
в таких ситуациях обычно используют наследование и переопределение чтобы не трогать основной код и хранят свои файлы отдельно. По этому моменту в доках есть разделы http://yii2-user.dmeroff.ru/docs Пункт Overriding.
Либо можно просто форкнуть и изменять все по свойму как надо =)
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 12:03
@hellvesper а куда форк вынести лучше? Т.е. просто пользоваться методами из своего кода и уже дальше чудить?
Vitaly
@hellvesper
Jul 03 2015 12:05
форкнуть, поменять все неймспейсы на свои т.д., т.к. это тот же модуль и тот же функционал он будет хранится там же где и все только в папке с твоим именем, как сейчас хранится в папке dektrium. Неймспейсы только подправить не забыть.
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 12:20
@hellvesper т.е. лучше вынести в папку сразу после dektrium: namespace dektrium\fork; или во внутрь namespace dektrium\user\fork; или как душе угодно? :smile:
Vitaly
@hellvesper
Jul 03 2015 12:38
@cosmos-rusnire да не) namespace cosmos-rusnire\user вот так будет =)
cosmos-rusnire
@cosmos-rusnire
Jul 03 2015 14:12
@hellvesper аа, понял) благодарен за разъяснения)