andrewdanilov/yii2-admin-panel

Simple Admin Panel


Keywords
admin, manager, extension, panel, Users, yii2
License
MIT

Documentation

Admin Panel

Simple Admin Panel template and user accounts manager

Installation

The preferred way to install this extension is through composer.

Either run

composer require andrewdanilov/yii2-admin-panel "~2.0.0"

or add

"andrewdanilov/yii2-admin-panel": "~2.0.0"

to the require section of your composer.json file.

Then run db migrations, to modify needed tables:

php yii migrate --migrationPath=@andrewdanilov/adminpanel/migrations

Do not forget to run migrations after extension updates too.

Usage

Copy directory src/views to your backend views location, then modify these templates to your needs.

In backend config place (or replace) user section inside components:

$config = [
	// ...
	'components' => [
		// ...
		'user' => [
			'class' => 'yii\web\User',
			'identityClass' => 'andrewdanilov\adminpanel\models\User',
			'accessChecker' => 'andrewdanilov\adminpanel\AccessChecker',
			'enableAutoLogin' => true,
			'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
			'loginUrl' => ['user/login'],
		],
	],
];

Instead of default you can use your own access checker or user identity class, therefore replace correspondent accessChecker or identityClass properties of user component within backend config. Then copy src/AccessChecker.php if you replacing access checker and src/models/User.php if you replacing identity class, and place them to your own location. Modify it, as you need. Do not forget to replace namespace definition of duplicated classes.

To use default extension's controllers add 'controllerMap' section to your backend config:

$config = [
	// ...
	'controllerMap' => [
		'user' => [
			'class' => 'andrewdanilov\adminpanel\controllers\UserController',
			'viewPath' => '@backend/views/user', // your UserController views location
		],
	],
];

If you use own views (see instruction of using own views location above) with default extension's UserController, you need to set viewPath property in controllerMap section.

Default UserController already have CRUD methods for managing user accounts. Use this link to get access to them:

use yii\helpers\Url;

$userManagerUrl = Url::to(['/user']);

To make access control on all your admin pages working properly, you need to extend all your backend controllers from andrewdanilov\adminpanel\controllers\BackendController

use andrewdanilov\adminpanel\controllers\BackendController;

class AnyController extends BackendController
{
	// ...
}

To make work it properly you must remove methods behaviors and actions from AnyController or extends that methods from parent class, just like so:

use andrewdanilov\adminpanel\controllers\BackendController;

class AnyController extends BackendController
{
	// ...
	public function actions()
	{
		$actions = parent::actions();
		$actions['error']['layout'] = 'error';
		return $actions;
	}
	// ...
}

Additionaly you can use FontawesomeActionColumn class in your GridViews instead of default ActionColumn, to replace default Bootstrap action icons with corresponding Fontawesome icons:

/* @var $dataProvider \yii\data\ActiveDataProvider */
/* @var $searchModel \yii\db\ActiveRecord */
use yii\grid\GridView;
?>
<?= GridView::widget([
	'dataProvider' => $dataProvider,
	'filterModel' => $searchModel,
	'columns' => [
		'id',
		'name',
		[
			'class' => 'andrewdanilov\gridtools\FontawesomeActionColumn',
			'template' => '{update}{delete}',
		],
	],
]); ?>