SiZE
Я с временными зонами мало работал к сожалению. Не знаю как быть.
SiZE
http://www.yiiframework.ru/forum/viewtopic.php?f=19&t=42896
SiZE
но помоему очевидность я спросил Note that the default time zone for input data is assumed to be UTC by default if no time zone is included in the input date value. If you store your data in a different time zone in the database, you have to adjust $defaultTimeZone accordingly.
Dmytro
тут два варианта, либо на как вы уже сказали форматеру ставить UTC, а на сервере держать правильную tz либо наоборот, тогда в БД все даты будут в UTC
Borys
Ребят, подскажите, пожалуйста.
Borys
Как лучше реализовать следующее
Borys
Если пользователь не залогинен на сайте, то на любой url перенаправлять его на страницу входа
Dmytro
фильтр на beforeAction
Dmytro
у \yii\filters\AccessControl есть denyCallback
Dmytro
или вешайте сразу на Application обработчик на beforeAction
Borys
as beforeAction?
👀
в yii ведь есть AccessControl
Borys
Да. Я его и хочу глобально повесить на админку
👀
сейчас скину кусок кода
Borys
у меня вот так на одном проекте работает
Borys
'as beforeRequest' => [ 'class' => 'yii\filters\AccessControl', 'rules' => [ [ 'actions' => ['login', 'error'], 'allow' => true, ], [ 'allow' => true, 'roles' => ['@'], ], ], ],
👀
'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['login', 'error'], 'allow' => true, ], [ 'allow' => true, 'roles' => ['@'], ], ], ],
👀
это в behaviors() в контроллер
Borys
Как прописать в контроллер я знаю, у меня их в админке будет к примеру 200, мне в каждый это писать? Неудобно.
Borys
Вот я ищу как сделать это глобально. Еще на админке висит yii2-user модуль.
👀
ну, гугл говорит что ваш вариант очень даже ок :)
👀
http://stackoverflow.com/questions/25998122/yii2-global-filter-behavior-to-force-user-to-authenticate-first
Borys
Так я его оттуда и дернул :)
Borys
Но этот способ конфликтует с yii2-user модулем
Borys
а можно как-то добавить beforeAction для всех контроллеров?
Borys
В конфиге
👀
разве что подключить как компоненту, и вызывать это в bootstrap'е
👀
есть ещё вариант с beforeRequest
👀
'as beforeRequest' => [ 'class' => 'yii\filters\AccessControl', 'rules' => [ [ 'allow' => true, 'actions' => ['login'], ], [ 'allow' => true, 'roles' => ['@'], ], ], 'denyCallback' => function () { return Yii::$app->response->redirect(['site/login']); }, ],
Anonymous
может лучше это сделать по другому?
👀
здесь объявлен denyCallback, который отправляет пользователя куда надо
Anonymous
вынести в отдельный родительский контроллер и от него наследовать?
👀
вынести в отдельный родительский контроллер и от него наследовать?
если у человека 200 контроллеров, то он за(любит)ся их править)
Anonymous
ide на что?
Anonymous
find & replace)
Borys
@Dmytrovych ставлю код что посоветовал @SomeWho и получаю
Borys
User::identityClass must be set.
Dmytro
или вешайте сразу на Application обработчик на beforeAction
в коде обработчика проверяете Yii::$app->user->isGuest и делаете редирект
Dmytro
эта ошибка не из-за этого кода
Dmytro
у вас не установлена identityClass в компоненте user
Borys
А у меня и нет этого компонента, т.к. стоит модуль yii2-user
Dmytro
вы не поняли
Dmytro
user -- это компонент Application
Dmytro
а не модуля
Dmytro
Dmytro
Dmytro
если вы не меняете ничего в dektrium-увской модели -- пишите ее
Dmytro
user-компонент musthave для web/Application
Borys
В мануале для установки на advanced, написано удалить компонент 'user'
Borys
https://github.com/dektrium/yii2-user/blob/master/docs/usage-with-advanced-template.md
Borys
Remove predefined Yii2 user component from frontend @frontend/config/main.php and backend @backend/config/main.php configuration files. You may simply comment it out the way it is shown below:
Dmytro
у вас user-модуль в boostrap-е есть?
Dmytro
Borys
Нет
Dmytro
тогда без комментариев)
Dmytro
хотя подождите
Dmytro
dektrium\\user\\Bootstrap должен инжектится через composer
Anonymous
Что за бэкенд?
Dmytro
это sb-admin2 на yii2
Artur‌‌‌
Вопрос такой Засунул в бехавиоурс след. код : return array_merge(parent::behaviors(), [ 'corsFilter' => [ 'class' => \yii\filters\Cors::className(), 'cors' => [ 'Origin' => ['*'], 'Access-Control-Request-Method' => ['POST'], 'Access-Control-Allow-Credentials' => true, 'Access-Control-Max-Age' => 3600, ], ], ]); Но при запросе ajax'ом, нужные заголовки не отдает, и ругается на No 'Access-Control-Allow-Origin' header is present on the requested resource.
Artur‌‌‌
В чем может быть проблема?
Dmytro
а запрос post?
Artur‌‌‌
да
Artur‌‌‌
вот запрос $.ajax({ url: 'https://site_url', type: 'post', data: { "client_id": "testclient", "client_secret": "testpass", "username": "user@qwe.me", "password": "123123123", "grant_type": "password" }, headers: { "Content-Type": 'application/x-www-form-urlencoded', "Accept": 'application/json' }, dataType: 'json', success: function (data) { console.log(data); } });
Dmytro
может у вас сервер заголовки меняет?
Dmytro
гляньте в ответе какие заголовки возвращаются
Artur‌‌‌
Connection:keep-alive Content-Type:application/json; charset=UTF-8 Date:Tue, 21 Mar 2017 15:17:46 GMT Server:nginx/1.10.2 Strict-Transport-Security:max-age=63072000; includeSubdomains Transfer-Encoding:chunked X-Content-Type-Options:nosniff X-Frame-Options:DENY
Artur‌‌‌
это надо nginx ковырять?
Dmytro
у вас fpm или apache?
Artur‌‌‌
fpm
Artur‌‌‌
nginx
Dmytro
попробуйте просто убрать cors аттрибут из конфига
Artur‌‌‌
который в behaviors?
Dmytro
да
Dmytro
и еще вариант добавить access-control-allow-origin => '*'
Artur‌‌‌
все так же
Artur‌‌‌
заголовки не меняются