Files
yii2-usuario/lib/User/Factory/AuthItemFactory.php
2016-12-20 14:00:41 +06:00

62 lines
1.2 KiB
PHP

<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Factory;
use Yii;
use yii\rbac\Item;
use Exception;
class AuthItemFactory
{
protected static $map = [
Item::TYPE_ROLE => 'makeRole',
Item::TYPE_PERMISSION => 'makePermission',
];
/**
* @param $name
*
* @return \yii\rbac\Permission
*/
public static function makePermission($name)
{
return Yii::$app->getAuthManager()->createPermission($name);
}
/**
* @param $name
*
* @return \yii\rbac\Role
*/
public static function makeRole($name)
{
return Yii::$app->getAuthManager()->createRole($name);
}
/**
* @param $type
* @param $name
*
* @return \yii\rbac\Role|\yii\rbac\Permission
*
* @throws Exception
*/
public static function makeByType($type, $name)
{
if (array_key_exists($type, self::$map)) {
return call_user_func([self::class, self::$map[$type]], $name);
}
throw new Exception('Unknown strategy type');
}
}