Apache2: виртуальные домены для локальной разработки
Для локальной разработки мы обычно используем веб-сервер apache, который по-умолчанию настроен на директорию /var/www/ в которой можно создавать проекты, но в большинстве случаев это неудобно и хотелось бы использовать папки профиля пользователя для работы с проектами, как раз об этом и о виртуальных доменах и пойдет речь в данной небольшой заметке.
Получить все роли пользователей в Yii2
При изучении RBAC Yii2 у многих возникает вопрос, а как же получить все роли пользователей? Ответ довольно простой, скорее всего поэтому он быстро не гуглится. В итоге если у вас сам RBAC настроен верно, то список ролей можно получить так:
Yii::$app->getAuthManager()->getRoles()
или то же самое с помощью «магии»
Yii::$app->authManager->roles
Думаю еще одной интересной строчкой будет преобразование полученного массива в массив название роли -> описание, а сделать это можно так:
ArrayHelper::map(Yii::$app->authManager->roles,'name','description')
Выполнить OrderBy перед GroupBy при использовании MySQL, и Yii2
Небольшая заметка, которая может ответить не только на проблему, обозначенную в заголовке, но и продемонстрировать 3 способа построения запроса и получения результатов запросов. К сожалению, стандартно подставив команду OrderBy перед GroupBy в MySQL вы получите совсем не то что ожидаете, а происходит это потому, что выполняется сначала группировка данных, а уже затем они сортируются, но уже в результирующем наборе нет нужных нам данных, решается эта проблема в «подсовывании» новой таблицы уже с правильной для нас сортировкой, запросом это выглядит примерно так:
Boilerplate: Angular.js + JADE + Gulp
Изначально я долго и усердно настраивал browserify+angular.js, и был близок к победе, но что-то пошло не так (а именно inject кастомных директив) и я решил немного повременить. Поэтому связка будет немного иной и в консоли придется выполнить на одну команду больше. Так или иначе, этот пост в первую очередь для моего друга-бэкэндера и здесь будет сделан упор на автосборку проекта с помощью таск-менеджера Gulp.
Lexa-007, You’re welcome 😉
читать далее
Кастомизируем angular-strap datepicker
Это не пост, скорее заметка, чтобы не забыть.
Речь идет про http://mgcrea.github.io/angular-strap/##datepickers
читать далее
Ограничения по типам запросов в Yii 2, компонент VerbFilter
В Yii2 встроен удобный фильтр ограничения доступа к экшену по типам запросов к нему, компонент называется VerbFilter, а используется он как ключ verbs в поведении (behaviors) контроллера. Под катом подробнее.
Занимательный Spaceless виджет в Yii2 или вырезаем все пробелы
Довольно интересный виджет из коробки имеется в yii2, название ему Spaceless, а занимается он вырезанием пробелов, дабы полностью исключить возможные баги браузеров с переносом строки. Работает все это довольно просто:
Вариант использования метода afterFind в модели
Многие хранят дату/время в базе данных в формате timestamp, а точнее хранят ее в колонке с типом integer, посему при выводе возникает необходимость преобразования числа секунд в дату/время, делают это обычно примерно так:
echo date('Y-m-d H:i:s',$model->date);
Хранение паролей в Yii2
Здравствуйте! Сегодня хотелось бы поговорить о методах, позволяющих повысить безопасность, в приложениях на Yii2.
Поскольку алгоритмы шифрования паролей алгоритмами md5 or sha1 уже не внушают сильного доверия. В Yii2 был реализован метод реализующий хеширование bcrypt.
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123');
в результате выполнения данного метода переменная $hash_pass будет содержать приблизительно следующее значение из 64 символов
$2y$13$imm.m0q9qN/IrWF4AtmH4ejHyS3d.ElmkayY3vQ69DTApgEY4ne36
Также у generatePasswordHash можно указать вторым параметром сложность шифрования
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123',10);
по умолчанию этот параметр имеет значение 13. В официальной документации рекомендуют выставлять этот параметр повыше, но не стоит увлекаться.
Это довольно ресурсоемкий процесс. Если представить, что ваш компьютер сосчитает хеш со сложностью 14 за 1 секунду, то формула по нахождению времени расчета хеша будет выглядеть так 2^(сложность — 14) секунд.
В отличии от md5, при повторном вызове данного метода, будет сгенерирован абсолютно другой набор символов! Для этого для валидации пароля используется следующий код.
Yii::$app->getSecurity()->validatePassword($pass, $hash_pass);
Метод вернет true в случае успешной проверки и false в случае несоответствия данных.
Валидация переменной с помощью стандартных валидаторов
Иногда нужно проверить переменную на соответствие определенным параметрам, для этой задачи вместо средств, который предоставляет нам php можно воспользоваться стандартным функционалом Yii. Скажем чтобы проверить правильность email’а достаточно использовать ниже следующий код (данный пример присутствует в официальной документации):