PHP, Yii Framework

Using Yii2 RBAC PHP Auth Manager without having to use assign()

I had a problem recently where, after upgrading Yii2 to latest, I had to give auth assignments where previously I did not. I found this cumbersome, mainly since it would mean adding 100,000 entries to the rbac.php file when my auth system is as simple as a single role to a user in a field called role in a row in a user table.

So I looked around to bring back the old functionality, I didn’t get far so then I decided to recode PhpManager to do it for me:

<?php
namespace common\components;

use Yii;

class PhpManager extends \yii\rbac\PhpManager
{
	public function init()
	{
		parent::init();
	}
	
	public function getAssignments($userId)
	{
		if(!Yii::$app->user->isGuest){
			$assignment = new \yii\rbac\Assignment;
			$assignment->userId = $userId;
			$assignment->roleName = Yii::$app->user->identity->role;
			return [$assignment->roleName => $assignment];
		}
	}
}

Feel free to use and abuse.

Advertisements

4 thoughts on “Using Yii2 RBAC PHP Auth Manager without having to use assign()

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s