Welcome, all of you !
Here I am giving the steps for an easy installation of yii2-advanced template with an RBAC(Role Based Access Control) system.
Installtion : Yii2 - advanced template
Here we are going to install yii2-advanced template using composer. So if you don't have composer in your machine, please download and install the latest version of it. After installing composer please check whether it is accessible from the CMD by running the command
If the above command gives a +ve response, then it's okay. Now we can start.
Open a new CMD window and locate to your server root directory. I am using
wamp server so myself would be like:
C:\>cd wamp\www C:\wamp\www>
Then run the command
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app for creating a new application named as
C:\wamp\www>composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app
The template will be downloaded from git repository. After the template is installed, locate to the newly created application directory
C:\wamp\www\yii2-app in CMD like:
C:\wamp\www>cd yii2-app C:\wamp\www\yii2-app>
Then you should initialize the application by running
php init in CMD. The initialization will generate the entry scripts and config files for your application. Run the command like:
You can select the environment type from the given options:
Which environment do you want the application to be initialized in?  Development  Production Your choice [0-1, or "q" to quit]
Now the installation of yii2-advanced template is completed, but still there is no database. So we want to create and use a database too. First of all we should install an RBAC module. Here I am using
yii2-admin for RBAC. Take a look at the following steps:
Installation: RBAC system into your application
From the CMD window run the command
composer require mdmsoft/yii2-admin "~2.0" for installing
yii2-admin into your newly created application like:
C:\wamp\www\yii2-app>composer require mdmsoft/yii2-admin "~2.0"
It will be downloaded from git. After installation, the package (yii2-admin) will be located in the
Then you should add some parameters to the configuration file
yii2-app/common/config/main.php to access the
'modules' => [ 'admin' => [ 'class' => 'mdm\admin\Module', ... ] ... ], ... 'components' => [ ... 'authManager' => [ 'class' => 'yii\rbac\PhpManager', // or use 'yii\rbac\DbManager' ] ],
Create a database in MySql and configure your
yii2-app/common/config/main-local.php file by adding the database credentials. Currently, there is no user table in your database. So you need to create user table for user management. For this yii2 provides an option for database migration. Run the command
yii migrate --migrationPath=@mdm/admin/migrations in CMD for creating a proper user table for the user management. In CMD,
C:\wamp\www\yii2-app>yii migrate --migrationPath=@mdm/admin/migrations
The above command will create
menu tables for your application.
Then change the user component properties in config file
'components' => [ ... 'user' => [ 'identityClass' => 'mdm\admin\models\User', 'loginUrl' => ['admin/user/login'], ] ]
user table by adding users. Use this link to register users to your application:
You can use authManager class
'yii\rbac\DbManager' to authorize users using database. For that you should execute a database migration using the command
yii migrate --migrationPath=@yii/rbac/migrations. Before that add
'class' => 'mdm\admin\models\User' and change the
authManager class in the config file
yii2-app/common/config/main.php like :
'components' => [ ... 'authManager' => [ 'class' => 'yii\rbac\DbManager', // or use 'yii\rbac\PhpManager' ], 'user' => [ 'class' => 'mdm\admin\models\User', 'identityClass' => 'mdm\admin\models\User', 'loginUrl' => ['admin/user/login'], ] ]
'class' => 'mdm\admin\models\User' from the config file after migration. Execute the migration as:
C:\wamp\www\yii2-app>yii migrate --migrationPath=@yii/rbac/migrations
Don't forget to remove
'class' => 'mdm\admin\models\User' from the config file
You can use the following RBAC URLs to create and manage permissions/roles to the users:
Then you can create and manage
routes/permissions/roles and assign them to the existing users using this interface. After setting the
routes/permissions/roles, for checking whether a user has access to a particular action in a controller you need to add
access control configuration parameters to the
return [ 'modules' => [ .... ], .... 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ 'site/*', 'admin/*', ] ] ]
You can add the public actions in
allowActions array. The other actions will be checked by the
AccessControl class for authorization.
Use the following github links for more instructions about
Hope this article will help you to install
RBAC easily. Thanks for reading.
Happy coding :)
Short and Simple
Nice wiki for RBAC. Tried a long process earlier adn this looks tempting.. will test it soon and update you on the progress..
Thanks again ..
Create rule class name?
But, how should I to create new rules?
There is no rule class name and trying to create I receive such error, then, where is or where/how I create these classes?
You have just saved me a whole lot of effort! Thank you!
PhpManager ou DbManager
MANY THANX !
You have to choose between DbManger ou PhpManager before migration and signup. You have to pay attention to this :
You can use authManager class 'yii\rbac\DbManager' to authorize users using database. For that you should execute a database migration using the command yii migrate --migrationPath=@yii/rbac/migrations. Before that add 'class' => 'mdm\admin\models\User' and change the authManager class in the config file yii2-app/common/config/main.php like :
its helpfull thanks
Thanks so much your tutorial very excellent
once again thanks
version 2 work fine but 3 it better but have errors with dependence
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.