Access Control Yii2 + анонимная функция
Access Control Yii2 + анонимная функция
В Yii2 появилась возможность повесить свою бизнес логику в виде анонимной функции для контроля доступа к странице.
Теперь вы можете делать какие-то действия и возвращать либо true либо false для доступа к странице.
Сделать это можно следующим образом:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions'=>['index','view','create','update','delete'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
return (Yii::$app->user->identity->login=="superuser");
}
],
],
],
];
}
В данном коде мы добавляем в список поведение AccessControl, прописываем actions и ставим анонимную функцию на matchCallback.
Шаблоны ActiveForm в Yii2
Шаблоны ActiveForm в Yii2
Шаблон формы ActiveForm в Yii2 с возможностью задания шаблона вывода полей, списков из базы данных, списков из готового массива значений.
<?php
$form = \yii\widgets\ActiveForm::begin([
'fieldConfig' => [
'template' => "<div> {label} </div> <div>{input} {error}</div>\n",
'labelOptions'=>['class' => 'control-label'],
],
]);
?>
<?= $form->field($model, 'name')->textInput(['class'=>'field class']) ?>
<?= $form->field($model, 'hiddenname')->hiddenInput(['value'=>'some value'])?>
<?= $form->field($model, 'user_id')->dropDownList(\yii\helpers\ArrayHelper::map(\app\models\User::find()->all(), 'id', 'login')) ?>
<?= $form->field($model, 'type')->dropDownList(['0'=>'Ноль','1'=>'Один']) ?>
<?= $form->field($model, 'agree')->checkbox(['class'=>'example','template'=>'<tr><td class="fr">{label} </td><td>{input} {error}</td>'])->label('Согласен с правилами сервиса') ?>
<?= Html::submitButton($model->isNewRecord ? 'Создать' : 'Обновить', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
Для каждого field можно определить свой template вывода как в примере с checkbox.
SSH ключи + DigitalOcean доступ
SSH ключи + DigitalOcean доступ
1. Создаем SSH ключ:
ssh-keygen -t rsa
2. Получаем SSH публичный ключ:
cat ~/.ssh/id_rsa.pub
3. Теперь для настройки аутентификации по SSH на вашем сервере делаем команду (не забываем написать IP адрес сервера):
cat ~/.ssh/id_rsa.pub | ssh root@[your.ip.address.here] "cat ~/.ssh/authorized_keys"
Создание ZIP архива с паролем в PHP
Создание ZIP архива с паролем в PHP
Следующая функция может запаковать в ZIP архив файл и установить пароль. Для создания ZIP архива используется встроенный архиватор ZIP Linux системы.
Также у PHP скрипта должно быть разрешение на работу функции shell_exec.
function createZip($fileName,$fileText,$zipFileName,$zipPassword)
{
$file = file_put_contents($fileName,$fileText);
shell_exec('zip -P '.$zipPassword.' '.$zipFileName.'.zip '.$fileName);
unlink(fileName);
return file_exists($zipFileName.'.zip');
}
Пример:
CSRF защита входных данных и ее отключение в Yii2
CSRF защита входных данных и ее отключение в Yii2
По умолчанию в Yii2 используется защита от межсайтовой подделки запроса. То есть вы не сможете отправить POST запрос без согласия самого Yii2 (т.е токена который создается при отправке формы).
Но бывают случаи когда POST запросы необходимо принимать (как пример входящие оповещения от платежных систем) и для таких операций требуется отключать проверку на CSRF.
.htaccess для скрытия web в Yii2
.htaccess для скрытия web в Yii2
Пример .htaccess для скрытия в роуте папки web при работе с Yii2:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]
RewriteRule (.*) /web/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
Портфолио. Tm-pay.com
Портфолио. Tm-pay.com
Задача:
Обновить сервис по приему и оплате платежей для пользователей туркменистана.
Сделать более понятный интерфейс оплаты и улучшить бек систему администрирования для владельца сервиса.
Решение:
Было обновлено ядро проекта, переписан внутренний код сервиса и обновлена схема базы данных. Теперь добавлять новые платежные системы стало намного проще. Также в случае любых проблем при проведении платежа от платежной системы имеется наглядный интерфейс вывода ошибок. Администратор сразу видит проблемные платежи и контролирует все операции с панели администратора
.htaccess http->https редирект
.htaccess http->https редирект
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Leave a Comment
Работа с ZIP в PHP. Распаковка.
Работа с ZIP в PHP. Распаковка.
Для работы с zip архивом необходимо поставить расширение PHP — ZIP.
Поставить его вы можете через PECL. Проверить что все ок можно посмотрев phpinfo(), около zip должно стоять enabled.
При помощи данного расширения можно как создавать архивы так и распаковывать их.
Для работы с zip создадим экземпляр класса ZipArchive:
Портфолио. Сервис Webtenge.kz
Портфолио. Сервис Webtenge.kz
Задача: обновить проекта обмена электронных валют в казахстане. Построить партнерскую программу, мигрировать все данные пользователей и десятки тысяч обменных операций на новый сервер.
Итог: был разработан проект обменного сервиса на базе системы Sassoft.Exchange, обновлен дизайн проекта. Полностью переделана система администрирования обменного сервиса и добавлена партнерская система для партнеров.
