
R
20.05.2018
12:47:49
@kohone основной прикол в том что если убрать HttpBearerAuth то все работает как нужно, а вот добавление HttpBearerAuth по факту требует авторизацию на любой action

Максим
20.05.2018
12:48:22
для HttpBearerAuth и надо добавить exept

R
20.05.2018
12:48:43
@kohone да, у HttpBearerAuth есть except, но если я добавлю типа 'except' => ['index'] то он вообще не будет проводить авторизацию, т.е. любой юзер будет считаться неавторизованным
@kohone вот у чувака на форуме аналогичная проблема https://www.yiiframework.ru/forum/viewtopic.php?t=46680 , но он конечно решил её костылем

Google

Максим
20.05.2018
13:00:17


R
20.05.2018
13:02:01
@kohone в index отдается условно говоря список постов, но есть посты скрытые которые может видеть только авторизованный, а неавторизованный не должен, поэтому внутри index мне нужно занать типа isGuest === true
@kohone поэтому важно что бы авторизация работала, но если юзер не авторизовался то и фиг с ним, значит гость. Но так не работает если использовать HttpBearerAuth, а вот на стандартном cookies работает.
@kohone Покопался в исходниках AuthMethod и нашел решение - optional, в нем можно переслить actions у которых нужно запрашивать авторизацию но не выдввать ошибку если авторизация не прошла (там примерно так и написано в исходниках).
/**
* @var array list of action IDs that this filter will be applied to, but auth failure will not lead to error.
* It may be used for actions, that are allowed for public, but return some additional data for authenticated users.
* Defaults to empty, meaning authentication is not optional for any action.
* Since version 2.0.10 action IDs can be specified as wildcards, e.g. `site/*`.
* @see isOptional()
* @since 2.0.7
*/
public $optional = [];


Максим
20.05.2018
13:08:47

R
20.05.2018
13:10:34
@kohone в любом случае спасибо, навел на нужную мысль)

Сергей
20.05.2018
15:20:42
Добрый вечер!
Есть какой-то более умный способ определять в лэйауте какая сейчас страница открыта, кроме сравнения id модуля, контроллера и экшена?

Evgen
20.05.2018
15:25:05
Нету

Сергей
20.05.2018
15:25:30
Жаль)

Максим
20.05.2018
15:50:22

Сергей
20.05.2018
15:52:39

Максим
20.05.2018
15:55:55

Сергей
20.05.2018
15:56:13
Да, так и делаю. Надеялся, что есть что-то готовое)

Google

Максим
20.05.2018
15:56:38
в исходниках меню виджета можно подглядеть, че как делается для того, чтобы активные пункты меню подсвечивать

Сергей
20.05.2018
15:57:42
кстати, да. Не подумал. Спасбио)

Evgen
20.05.2018
16:24:47
там адрес парсят, разбивают и сравнивают

Matviy
20.05.2018
16:25:50
А разве можно лутше? Модуль, контролер и экшн же однозначно определяют роут

Evgen
20.05.2018
16:26:38
да с вложенностью не оч

Eugene
20.05.2018
16:41:36
Вот полный код
Это 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;
}
Вот сюда возможно нужно добавить (only):
$behaviors['access'] = [
'class' => AccessControl::className(),
'only' => ['index']
'rules' => [ ...

R
20.05.2018
16:43:27
@EugeneKfm это не сработает, но решение уже найдено

Eugene
20.05.2018
16:44:03

Artur
20.05.2018
18:00:08
Всем привет, такой вопрос:
http://i.prntscr.com/BZRzD2lxS6uPXdLEKmJ9fg.png
Кидает мне следующее при апдейте композера
При чем обновляет все пакеты
(Понимаю, что норм, но просто как сделать так, чтобы не каждый раз подтверждать это)

Максим
20.05.2018
18:03:42

Сергей
20.05.2018
18:05:55
Ещё вопросик по composer.
В composer.json:
"repositories": [
{
"type":"vcs",
"url": "https://github.com/vjik/yii2-stubs-generator"
},
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
Ранее всё нормально ставилось. а сейчас не даёт ничего ставить, выдаёт ошибку: http://joxi.ru/4vAWzvH11qOy2W
куда бежать?))

Максим
20.05.2018
18:07:22

Artur
20.05.2018
18:07:28
А если, допустим, про-апдейтить все, при этом каждый раз не "конфирмить" каждый пакет, в котором есть изменения? :)
composer update --no-interaction

Сергей
20.05.2018
18:07:34
Это да, но пока не нашлось

Максим
20.05.2018
18:08:05
По идее он дефолтные ответы проставляет за юзера

Artur
20.05.2018
18:08:54
При composer update —no-interaction он пишет следующее: http://i.prntscr.com/OW2W42H4S22XKNnRYLq91g.png

Максим
20.05.2018
18:09:38

Google

Artur
20.05.2018
18:10:01
Нет, вообще не лазил

Максим
20.05.2018
18:10:44
Попробуй эту папку удалить и запустить инсталл
А потом апдейт
Нет, вообще не лазил
А вообще где то читал, что массово лучше ничего не апдейтить, если живой проект. Максимум каждый пакет отдельно апдейтить и проверять работоспособность
А то обновишь 20 пакетов, сайт упадет и долго придется разбираться, что стало причиной

Artur
20.05.2018
18:17:34
А есть вероятность, что это какой-то вирус?
Глупый вопрос, но все-таки

Максим
20.05.2018
18:18:09

R
20.05.2018
19:13:09

Artur
20.05.2018
19:13:46
Гит статус показывает просто изменения в тех файлах, где я редачил, и все

R
20.05.2018
19:14:31
vendor чистый значит?
можно vendor снести и composer install

Artur
20.05.2018
19:19:12
Снести в плане - папку просто удалить?)))

R
20.05.2018
19:19:58
да, если в корне проекта есть composer.lock, то composer install должен установить те же версии пакетов
а если composer.lock нет, то поставит из composer.json актуальные версии
у тебя вендор не в git?

Artur
20.05.2018
19:22:09
А, хорошо, спасибо
P.S. composer.lock есть
В плане?
у тебя вендор не в git?

R
20.05.2018
19:22:40
ну просто вдруг он почему-то в репозитории

Google

Artur
20.05.2018
19:22:44
Ааа
Не, там папки вендора нет
Если ты за это

R
20.05.2018
19:23:38
тогда смело можно удалять вендор и с нуля все поставить

Artur
20.05.2018
19:35:39
Окей, еще раз спс за советы)

Aziz
20.05.2018
21:17:53
Ребята, дайте пожалуйста материал по синхронизации сайтов, на поддоменах на YII2
Чтобы было как yandex.ru, как лучше передавать итп
И как вообще передавать

Evgeny
20.05.2018
23:20:12
что значит синхронизация сайтов?
и что передавать, откуда и куда

Алексей
21.05.2018
06:35:48
Добрый день! Кто-нибудь юзал расширение yii2-admin?

Максим
21.05.2018
06:38:50

Алексей
21.05.2018
06:39:18
А как его соотнести с yii2-rest controller?
чет мозгов не хватает

Roman
21.05.2018
06:40:50

Like
21.05.2018
06:41:09

Алексей
21.05.2018
06:42:21

Roman
21.05.2018
06:42:23
Да вот эти вопросы типа "Синхронизация сайтов как у яндекса" чот поднадоели

Taras
21.05.2018
06:42:33
Добрый день, подскажите как лучше подключить компонент внутри компонента. Я заюзал в init через ServiceLocator, но может есть еще лучше решение ?

Like
21.05.2018
06:42:41

Google

Roman
21.05.2018
06:43:39

Like
21.05.2018
06:43:49
Тебе контейнер разруливает все
Значит все намана


Алексей
21.05.2018
06:44:33
Без кода мы всё равно не скажем, где ошибка. Непонятно почему приходится выпытывать эту информацию.
<?php
namespace app\modules\api\controllers;
use yii\rest\ActiveController;
use yii\filters\auth\HttpBearerAuth;
use Yii;
/**
* Default controller for the `admin` module
*/
class UserController extends ActiveController
{
public $modelClass = 'app\models\User';
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
];
$behaviors['contentNegotiator'] = [
'class' => \yii\filters\ContentNegotiator::className(),
'formats' => [
'application/json' => \yii\web\Response::FORMAT_JSON,
]
];
$behaviors['access'] = [
'class' => 'mdm\admin\components\AccessControl',
'only' => ['update', 'delete'],
];
return $behaviors;
}
protected function verbs()
{
return [
'index' => ['GET', 'HEAD'],
'signin' => ['GET', 'HEAD'],
'create' => ['POST'],
'update' => ['GET', 'PUT', 'PATCH'],
'delete' => ['DELETE'],
];
}
public function checkAccess($action, $model = null, $params = [])
{
throw new \yii\web\ForbiddenHttpException(sprintf('You can only %s lease that you\'ve created.', $action));
}
public function actionSignin()
{
return ['sdsd' => 'sdsd'];
// Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
// return User::findIdentity(Yii::$app->user->identity->id);
}
}


Like
21.05.2018
06:44:47
@ZhukovRA и кто тебя за язык тянул

Максим
21.05.2018
06:44:58
Людишки никогда не научатся нормально задавать вопросы
отвечать на такие вопросы надо в стиле "Задача организации, в особенности же рамки и место обучения кадров позволяет выполнять важные задания по разработке систем массового участия. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности позволяет оценить значение систем массового участия. Таким образом рамки и место обучения кадров требуют от нас анализа систем массового участия." взято с сайта генератора рыбы для сайтов)

Алексей
21.05.2018
06:45:19
я пришел за решением проблемы

Like
21.05.2018
06:45:29

Алексей
21.05.2018
06:45:29
а не на праздник остроумия

Like
21.05.2018
06:45:49

Максим
21.05.2018
06:45:52

Алексей
21.05.2018
06:45:57

Максим
21.05.2018
06:46:05
читать же неудобно
а вот это ты зря

Like
21.05.2018
06:46:23

Алексей
21.05.2018
06:46:32
читать же неудобно
тренер на боксе научил, что ни один удар не должен остаться без ответа, кроме солнечного

Like
21.05.2018
06:47:22