Giter VIP home page Giter VIP logo

yii2-maintenance-mode's Introduction

Yii2 enable/disable application component

Установка

В консоли

composer require ale10257/yii2-maintenance-mode "@dev"

или добавить в секцию require файла composer.json

"ale10257/yii2-maintenance-mode": "@dev"

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

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

Например:

<?php
namespace app\components\statusApp;

use ale10257\yii2MaintenanceMode\AppStatusMode;
use Yii;

class StatusApp extends AppStatusMode
{
    /** @var string */
    public $commandPath = __DIR__;

    protected function checkRoot()
    {
        $app = Yii::$app;
        if (!$app->user->isGuest) {
            if ($app->user->identity->isRoot()) {
                $this->enabled = true;
            }
        }
    }

    protected function filtering()
    {
        $this->checkRoot();
        parent::filtering();
    }
}

Важно: публичная переменная public $commandPath = __DIR__; определяет директорию для записи файла о включении/выключении приложения. Данная директория должна быть доступна для записи.

Важно: все ваши методы для проверки должны быть вызваны в методе filtering. Например, в данном примере, если у пользователя есть роль Root, то для него приложение включено $this->enabled = true;

Options

'maintenanceMode' => [
    // Page title default
    'title' => 'Site temporarily unavailable',

    // Application status
    'enabled' => true,

    // Show message default
    'message' => 'Sorry, technical work in progress',

    // Allowed roles
    'roles' => [],

    // Allowed IP addresses example: '127.0.0.1'
    'ips' => [],

    // HTTP Status Code
    'statusCode' => 503,

    //Retry-After example: header 120 or Wed, 21 Oct 2015 07:28:00 GMT
    'retryAfter'
],

Если вы инициализируете 'roles' => [admin, role1, role2], то в вашем компоненте необходимо самостоятельно реализовать метод

protected function checkRoles()
{
    // your check
}

Для работы компонента необходимо добавить в конфигурационный файл web приложения:

'bootstrap' => [
...
     'ale10257\yii2MaintenanceMode\CheckStatus'
...
],
...
'components' => [
...
    'appStatusMode' => [
        'class' => 'app\components\statusApp\StatusApp', // ваш компонент
    ],
...
],

Включить/выключить приложение из консоли

Добавить в конфигурационный файл консольного приложения:

'bootstrap' => [
    'log',
    'appStatusMode'
],
...
'components' => [
...
    'appStatusMode' => [
        'class' => 'app\components\statusApp\StatusApp', // ваш компонент
    ],
...
],

После внесения изменений в конфигурационный файл можно включать/выключать приложение командами:

php yii  app-status/enable
php yii  app-status/disable 'Title page' 'Your message'

По умолчанию Title page = 'Site temporarily unavailable', Your message = 'Sorry, technical work in progress'

Поэтому команду для выключения приложения можно вызывать без параметров

php yii  app-status/disable

Включить/выключить приложение из панели управления приложением

В контроллере вызовите методы:

\Yii->$app->appStatusMode->enable();
\Yii->$app->appStatusMode->disable('Title page', 'Your message'); // можно вызывать без параметров

yii2-maintenance-mode's People

Contributors

ale10257 avatar brussens avatar filipe1309 avatar ibra1994 avatar marcuzzz avatar mike-kramer avatar pistej avatar sensetivity avatar stefandoorn avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.