AuthPerm.php 2.9 KB
<?php
namespace domain\system;

use Yii;
use domain\system\models\AuthPerm  as AuthPermModel;
use domain\system\models\AuthPermsRoutes as AuthPermsRoutesModel;


class AuthPerm
{
    const LEVEL_MODULE      = 1; //
    const LEVEL_CONTROLLER  = 2; //
    const LEVEL_ACTION      = 3; //

    /**
     * @param $item
     * @return null|object
     * @throws \yii\base\InvalidConfigException
     */
    static function create($item)
    {
        if (empty($item)) {
            return null;
        }
        $arr = [
            'class'     => AuthPermModel::className(),
            'name'      => $item['name'],
            'parent_id' => $item['parent_id'],
            'level'     => $item['level'],
            'desc'      => $item['desc'],
        ];

        $model = Yii::createObject($arr);
        $model->save();

        return $model;
    }

    /**
     * @param $condition
     * @return bool|int
     */
    static function deleteAll($condition)
    {
        if (empty($condition)) {
            return false;
        }

        return AuthPermModel::deleteAll($condition);
    }

    /**
     * @param $item
     * @param $routers
     * @return array|null
     * @throws \yii\base\InvalidConfigException
     */
    static function createWithRouters($item, $routers)
    {
        if (empty($item) || empty($routers)) {
            return null;
        }
        $arr = [
            'class'     => AuthPermModel::className(),
            'name'      => $item['name'],
            'parent_id' => $item['parent_id'],
            'level'     => $item['level'],
            'desc'      => $item['desc'],
        ];

        $model = Yii::createObject($arr);
        $routerArr = [];
        if ($model->save()) {
            foreach ($routers as $k => $v) {
                $tmpArr = [
                    'class'     => AuthPermsRoutesModel::className(),
                    'perm_id'   => $model->perm_id,
                    'route'     => $v,
                ];
                $routerModel = Yii::createObject($tmpArr);
                $routerModel->save();
                $routerArr[] = $routerModel;
            }
            return [$model, $routerArr];
        }

        return null;
    }

    /**
     * @param $permId
     * @param $router
     * @return bool|object
     * @throws \yii\base\InvalidConfigException
     */
    static function createRouter($permId, $router)
    {
        if (empty($permId) || empty($router)) {
            return false;
        }
        $modelArr = [
            'class'     => AuthPermsRoutesModel::className(),
            'perm_id'   => $permId,
            'route'     => $router,
        ];
        $routerModel = Yii::createObject($modelArr);
        $routerModel->save();
        return $routerModel;
    }

    /**
     * @param $permId
     * @return int
     */
    static function deletePermRouters($permId)
    {
        return AuthPermsRoutesModel::deleteAll(['perm_id' => $permId]);
    }
}