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.