Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 5.37 KB

README-RU.md

File metadata and controls

166 lines (132 loc) · 5.37 KB

Administer - админ-модуль для Yii2.

Установка

Расширение устанавливается при помощи composer.

Запустите в консоле команду

php composer.phar require ylab/yii2-administer "*"

или добавьте

"ylab/yii2-administer": "*"

в require секцию файла composer.json.

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

'modules' => [
    ///
    'admin' => [
        'class' =>  \ylab\administer\Module::class,
        'urlPrefix' => 'admin',
    ],
]

и добавить модуль в bootstrap секцию конфигурации (необходимо для определения правил UrlManager)

'bootstrap' => ['admin'],

Использование

Для добавления и последующего использования модели в модуле необходимо проделать следующие шаги:

  1. Сконфигурировать список моделей модуля (см. Конфигурация моделей модуля)
  2. К каждой модели из конфигурации присоединить поведение CrudViewBehavior (см. Использование поведения CrudViewBehavior)
  3. Настроить фильтрацию в модели для поиска (можно двумя способами, см. Настройка фильтрации с помощью FilterQuery или Настройка продвинутой фильтрации)
  4. Настроить меню (см. Настройка меню)
  5. Открыть URL-адрес http://app_url/module_id
  6. Модуль готов к работе

Настройка доступа

Для настройки доступа необходимо определить свойство access в конфигурации модуля, которое должно иметь следующую структуру:

  • defaultRole: строка, роль используемая для настройки фильтра контроля доступа \yii\filters\AccessControl. Применяется для crud и api контроллеров.
  • rules: массив, каждый элемент массива должен содержать url модели в качестве ключа и массив ролей в качестве значения. Для проверки ролей будет использоваться вызов \yii\web\User::can().

Пример конфигурации:

'access' => [
    'defaultRole' => 'admin',
    'rules' => [
        'post' => ['contentManager'],
        'post-tags' => ['admin'],
    ],
],

Дополнительные возможности

Дополнительно предлагается подключить возможность авторизации и выхода пользователя.

Чтобы подключить вывод кнопки выхода из панели, нужно реализовать интерфейс UserDataInterface:

<?php

namespace common\components;

use common\models\LoginForm;
use Yii;
use ylab\administer\UserDataInterface;

class UserData implements UserDataInterface
{
    private $loginForm;
    
    public function getUserName()
    {
        return 'Ivan Petrov';
    }
    
    public function getAvatar()
    {
        return 'web/path/to/avatar';
    }
    
    public function getLoginForm()
    {
        if (is_null($this->loginForm)) {
            $this->loginForm = Yii::createObject(LoginForm::class);
        }

        return $this->loginForm;
    }
}

Чтобы подключить форму авторизации, метод getLoginForm() должен возвращать реализацию интерфейса LoginFormInterface. При этом он обязательно должен быть объектом yii\base\Model. Пример:

<?php
namespace common\models;

use Yii;
use yii\base\Model;
use ylab\administer\LoginFormInterface;

class LoginForm extends Model implements LoginFormInterface
{
    public $email;
    public $password;
    public $rememberMe = true;

    public function rules()
    {
        // return rules
    }
    
    public function login()
    {
        if ($this->validate()) {
            return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
        }
        
        return false;
    }
    
    protected function getUser()
    {
        if ($this->user === null) {
            $this->user = User::find()->byEmail($this->email)->one();
        }

        return $this->user;
    }
    
    public function getLoginAttribute()
    {
        return 'email';
    }
    
    public function getPasswordAttribute()
    {
        return 'password';
    }
    
    public function getRememberMeAttribute()
    {
        return 'rememberMe';
    }
}

Тестирование

Для запуска тестов выполните следующую команду:

php vendor/bin/phpunit