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 src/views directory to your backend views location, then modify these templates to your needs. You do not need to copy the src/views/user directory if you want to use the default @andrewdanilov/adminpanel/views/user.

In backend main 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 main config. Then copy src/AccessChecker.php if you are replacing access checker and src/models/User.php if you are 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 main config:

$config = [
	// ...
	'controllerMap' => [
		'user' => [
			'class' => 'andrewdanilov\adminpanel\controllers\UserController',
			'viewPath' => '@backend/someotherlocation/views/user', // optional, custom UserController views location
			'loginFormClass' => 'backend\models\LoginForm', // optional, default is 'andrewdanilov\adminpanel\models\LoginForm'
		],
	],
];

If you use custom views location (and it is not default '@backend/views' or other location defined in backend main config) with default extension's UserController, you need to set viewPath property in controllerMap section. If viewPath is defined but does not exist, the default @andrewdanilov/adminpanel/views/user will be used.

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}',
		],
	],
]); ?>

Access

Default user/password to enter admin area is admin/admin. You can change them throught the users section of admin-panel main menu