ale10257/yii2-maintenance-mode

为 Yii 框架 2.x.x 版本提供维护模式组件。

安装: 28

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 31

类型:yii2-extension

dev-master 2019-02-03 04:37 UTC

This package is not auto-updated.

Last update: 2024-09-23 17:52:40 UTC


README

该组件基于由 Brusenskiy Dmitry 编写的 Maintenance mode 组件。

安装

在控制台中

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

或者将以下内容添加到 composer.json 文件的 require 部分

"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;

选项

'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'

默认 标题页面 = '网站暂时不可用', 您的消息 = '抱歉,正在进行技术工作'

因此,可以不带参数调用应用程序禁用命令

php yii  app-status/disable

从应用程序管理面板启用/禁用应用程序

在控制器中调用以下方法

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