Latest Posts

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.

Read more

Шаблоны 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.

Read more

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"

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Создание 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');
}

Пример:

Read more

CSRF защита входных данных и ее отключение в Yii2

CSRF защита входных данных и ее отключение в Yii2

По умолчанию в Yii2 используется защита от межсайтовой подделки запроса. То есть вы не сможете отправить POST запрос без согласия самого Yii2 (т.е токена который создается при отправке формы).

Но бывают случаи когда POST запросы необходимо принимать (как пример входящие оповещения от платежных систем) и для таких операций требуется отключать проверку на CSRF.

Read more

.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

 

Read more

Портфолио. Tm-pay.com

Портфолио. Tm-pay.com

Задача:

Обновить сервис по приему и оплате платежей для пользователей туркменистана.
Сделать более понятный интерфейс оплаты и улучшить бек систему администрирования для владельца сервиса.

Решение:

Было обновлено ядро проекта, переписан внутренний код сервиса и обновлена схема базы данных. Теперь добавлять новые платежные системы стало намного проще. Также в случае любых проблем при проведении платежа от платежной системы имеется наглядный интерфейс вывода ошибок. Администратор сразу видит проблемные платежи и контролирует все операции с панели администратора

Read more

.htaccess http-&gt;https редирект

.htaccess http->https редирект

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Работа с ZIP в PHP. Распаковка.

Работа с ZIP в PHP. Распаковка.

Для работы с zip архивом необходимо поставить расширение PHP — ZIP.

Поставить его вы можете через PECL. Проверить что все ок можно посмотрев phpinfo(), около zip должно стоять enabled.

При помощи данного расширения можно как создавать архивы так и распаковывать их.

Для работы с zip создадим экземпляр класса ZipArchive:

Read more

Портфолио. Сервис Webtenge.kz

Портфолио. Сервис Webtenge.kz

Задача: обновить проекта обмена электронных валют в казахстане. Построить партнерскую программу, мигрировать все данные пользователей и десятки тысяч обменных операций на новый сервер.

Итог: был разработан проект обменного сервиса на базе системы Sassoft.Exchange, обновлен дизайн проекта. Полностью переделана система администрирования обменного сервиса и добавлена партнерская система для партнеров.

webtenge.kz

Read more