Niko
сделай ->joinWith(['adBannerFormat t2' => function($q){ $q->select(['needed_id', 'name AS banner_format']) }]) и получи вместе со связью А вначале селект убери
Дмитрий
@crestoff а если просто ad_banner_format.name то оно появляется в $name?
появляется, я кстати это писал ещё в начале)
Anonymous
ща
Не делай 😭😭😭
Дмитрий
да делал , не помогло
Anonymous
почему?
Я пошутил🤔
Niko
return $this ->joinWith(['domains', 'cdn', 'adBannerFormat t2' => function($q){ $q->select(['needed_id', 'name AS banner_format']) ->with(['adBannerFormat']) ->FilterWhere([ 'domain_id' => $domain_id, 'ad_type_id' => $ad_type, 'id' => $ad_campaign_id, ]) ->active() ->asArray() ->all();
Niko
да делал , не помогло
Попробуй так ^ Ты хотя бы массивом получи желаемые поля, а потом определишь в какую модель их вставить
Дмитрий
ща
Niko
только t2 убери, если он нигде не используется
Дмитрий
щаща
Niko
щаща
ну что, не судьба?
Дмитрий
да ошибки полезли , разбираю
Niko
алиас определи на основную таблицу и прокинь его в эктив
Niko
и на needed_id обрати внимание, там должен быть id для связи
Дмитрий
ок
Дмитрий
делаю
Дмитрий
короче решил проблему
Дмитрий
немного по-другому , но получил что хотел)
Дмитрий
'ad_banner_format_id',
Дмитрий
добавил в селект
Дмитрий
тогда модель баннер-формат
Дмитрий
начала подтягиваться
Дмитрий
из неё уже дёргаю и размеры и название
Дмитрий
короче спасибо большое за помощь!
Yuriy
Добрый вечер! Пожалуйста, подскажите, для чего здесь https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/master/api/models/User.php использовать authKey? (https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/master/api/config/web.php yii\web\User::enableAutoLogin = true). Если при запросах к api в данном случае используется токен..
Yuriy
к тому же auth_key используется для подтверждения email после регистрации https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/models/SignupForm.php#L98
Yuriy
по моим рассуждениям - yii\web\User::enableAutoLogin прям должен быть false, сам authKey - заиспользован не по назначению. и проще переименовать его во что-то вроде emailConfirmToken, для успокоения) интересует следующее - я прав или что-то напутал?
Anonymous
А
Anonymous
Тут ж верстаки были вроде как
Anonymous
Да?
Anonymous
Есть у кого верстка чатика? Ну в смысле Сайт - чат/месенеджер Я чета не могу найти ничего годного
Niko
не очень понял твой вопрос Ты верстальщика ищешь, чат с верстальщиками или тебе Фронтендщик/чат с фронтандщиками нужен, чтоб фрейм какой-то знал?
Anonymous
Авось кто-то пиздит готовые шаблоны с сайтов
Niko
так если там например ng - много не украдешь)
Anonymous
Дык есть фришные
Anonymous
templatemonster
Anonymous
Типа этого
Niko
так это отстой для CMS, нет?
Anonymous
Там ж вроде чистая есть
Anonymous
Не?
Anonymous
> HTML шаблоны
Niko
Там и воровать нечего. Открывай страницу и копируй html к себе
Niko
таких не знаю
Anonymous
😭
Yuriy
Наверно там используется Basic Auth, а не Bearer Хоть и рест, но ты же в браузере все делаешь. Why not?
как раз HttpBearerAuth https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/modules/v1/controllers/UserController.php#L42
Anonymous
Лана Если будет чета красивое - тоже сойдет
Anonymous
Подкинете если чо :)
Niko
как раз HttpBearerAuth https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/modules/v1/controllers/UserController.php#L42
class StaffController extends ActiveController { public $modelClass = 'app\models\User'; Я бы это не юзал Ты на php не смотри, смотри на взаимодействие ng с yii2 и пиши нормально, не как там https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/modules/v1/controllers/StaffController.php#L22
Yuriy
class StaffController extends ActiveController { public $modelClass = 'app\models\User'; Я бы это не юзал Ты на php не смотри, смотри на взаимодействие ng с yii2 и пиши нормально, не как там https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/modules/v1/controllers/StaffController.php#L22
я просто просматриваю написанное в данном репозитории, черпаю необходимое) а тут на тебе и jwt + authKey + enableAutoLogin. да еще и подтверждение email по authKey. что меня немного запутало)
Anonymous
Такс
Anonymous
Чо такое
Anonymous
Нада разрулить авторизацию с jwt?
Yuriy
@maximniko а чего не так в 22 строке? с ней все ок)
Yuriy
Нада разрулить авторизацию с jwt?
не совсем. чуть выше описал неясность
Anonymous
Ну лан
Niko
@maximniko а чего не так в 22 строке? с ней все ок)
Как он это использует в контроллере? Вот так? https://github.com/chrisleekr/yii2-ngx-boilerplate/blob/bedccd53b98f64081b28fea40388a70688652019/api/modules/v1/controllers/StaffController.php#L125
Niko
Ладно. Может где и использует, не хочу вникать
Yuriy
Нада разрулить авторизацию с jwt?
а вот теперь вопрос о jwt) если сделать его краткосрочным, его ведь придется постоянно обновлять.. где прочитать об этом?. чтобы кратко и ясно)
Anonymous
https://x-team.com/blog/my-experience-with-json-web-tokens/
Anonymous
> 1. Long-lived JWT + Validation on every request
Anonymous
Это?
Yuriy
@shindakioku на сколько помню, у клиента должен быть и рефреш токен, брагодаря которому можно запрашивать новый основной токен
Anonymous
> var token = jwt.sign({ appId: appId }, certificate, { algorithm: 'RS512', expiresIn: 300 }); А, вон все проще
Yuriy
Теперь вопрос касательно ролей RBAC. Накидал несколько новых контроллеров, действия к которым получает любой пользователь после аутентификации. Как мне лучше поступить? - создать новую роль с разрешениями к действиям этих контроллеров и добавить ее в defaultRoles? или воспользоваться ролью @?
Niko
Теперь вопрос касательно ролей RBAC. Накидал несколько новых контроллеров, действия к которым получает любой пользователь после аутентификации. Как мне лучше поступить? - создать новую роль с разрешениями к действиям этих контроллеров и добавить ее в defaultRoles? или воспользоваться ролью @?
Проверяй по пермишинам. Зачем роль? Тебе все равно нужно следить, чтоб юзер только свой пост или комент мог удалять А там смотри что за экшены, нужно ли будет индивидуализировать эти разрешения для каждой роли
Evgeny
РЕбят подскажите, есть код который выполняет отправку писем if ($user->save()) { return Yii::$app->mailer->compose(['text' => 'passwordResetToken-text'], ['user' => $user]) ->setFrom(['test@test.com' => 'test']) ->setTo($this->email) ->setSubject('Password reset for ' . Yii::$app->name) ->send(); } Этот код лежит в модуле - и соответственно использует шаблоны для рендеринга писем из этого же модуля (.../moduleName/mail/...) КАК МНЕ ЯВНО УКАЗАТЬ ЧТОБЫ ИСПОЛЬЗОВАЛИСЬ ШАБЛОНЫ ПРИЛОЖЕНИЯ (из папки @app/mail/...)???
Evgeny
в настройках модуля, очевидно
Разобрался оказалось все гораздо проще в "compose" можно явно указывать путь для шаблона в моем случае нужно было сделать так: return Yii::$app->mailer->compose(['text' => '@app/mail/passwordResetToken-text'], ['user' => $user])
R
Подскажите пожалуйста как разрешить неавторизованным пользователя доступ к index Вот такой код ниже возвращает 401 при запросе index $behaviors['access'] = [ 'class' => AccessControl::className(), 'except' => ['index'], 'rules' => [ [ 'allow' => true, 'roles' => ['@'], ], ], 'denyCallback' => function ($rule, $action) { throw new UnauthorizedHttpException('Unauthorized'); } ];
Максим
так не работает? [ 'actions' => ['index'], 'allow' => true, 'roles' => ['?'], ], [ 'allow' => true, 'roles' => ['@'], ],
R
@kohone вот в том то и дело что нет
R
Вот полный код Это rest controller. Условно говоря я хочу что бы CRUD был только для авторизованых, а вот index для любых. Но для того что бы работали тесты codeception мне пришлось добавить поддержку авторизаци через HttpBearerAuth public function behaviors() { $behaviors = parent::behaviors(); if (YII_ENV_TEST) { $behaviors['authenticator']['authMethods'][] = HttpBearerAuth::className(); } $behaviors['access'] = [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => ['@'], ], [ 'allow' => true, 'actions' => ['index'], 'roles' => ['?'], ], ], 'denyCallback' => function ($rule, $action) { throw new UnauthorizedHttpException('Unauthorized'); } ]; return $behaviors; }