Пример #1
0
 function create($aData)
 {
     try {
         $sCode = $aData['PER_CODE'];
         $oCriteria = new Criteria('rbac');
         $oCriteria->add(PermissionsPeer::PER_CODE, $sCode);
         $oDataset = PermissionsPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         $aRow = $oDataset->getRow();
         if (is_array($aRow)) {
             return 1;
         }
         $aData['PER_UID'] = G::generateUniqueID();
         $aData['PER_CODE'] = $aData['PER_CODE'];
         $aData['PER_CREATE_DATE'] = date('Y-m-d H:i:s');
         $aData['PER_UPDATE_DATE'] = $aData['PER_CREATE_DATE'];
         $aData['PER_STATUS'] = 1;
         $oPermission = new Permissions();
         $oPermission->fromArray($aData, BasePeer::TYPE_FIELDNAME);
         $iResult = $oPermission->save();
         return $aData['PER_UID'];
     } catch (Exception $oError) {
         throw $oError;
     }
 }
 function store()
 {
     if (Input::has("key") && Input::has("text")) {
         $permission = new Permissions();
         $permission->key = Input::get("key");
         $permission->text = Input::get("text");
         $permission->save();
         Session::flash("success_msg", trans('msgs.permission_created_success'));
         return Redirect::to("/permissions/create")->withInput();
     } else {
         Session::flash("error_msg", trans('msgs.all_fields_required'));
         return Redirect::to("/permissions/all");
     }
 }
Пример #3
0
 /**
  * this function permissions
  *
  *
  * @access public
  *
  */
 public function verifyPermissions()
 {
     $message = array();
     $listPermissions = $this->loadPermissionAdmin();
     $criteria = new Criteria('rbac');
     $dataset = PermissionsPeer::doSelectRS($criteria);
     $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $dataset->next();
     $aRow = $dataset->getRow();
     while (is_array($aRow)) {
         foreach ($listPermissions as $key => $item) {
             if ($aRow['PER_UID'] == $item['PER_UID']) {
                 unset($listPermissions[$key]);
                 break;
             }
         }
         $dataset->next();
         $aRow = $dataset->getRow();
     }
     foreach ($listPermissions as $key => $item) {
         $data['PER_UID'] = $item['PER_UID'];
         $data['PER_CODE'] = $item['PER_CODE'];
         $data['PER_CREATE_DATE'] = date('Y-m-d H:i:s');
         $data['PER_UPDATE_DATE'] = $data['PER_CREATE_DATE'];
         $data['PER_STATUS'] = 1;
         $permission = new Permissions();
         $permission->fromArray($data, BasePeer::TYPE_FIELDNAME);
         $permission->save();
         $message[] = 'Add permission missing ' . $item['PER_CODE'];
     }
     return $message;
 }
Пример #4
0
 public function Acl_db_gen_permissions($app)
 {
     $handlers = $app->getHandlers();
     $new_permission_log = array();
     $permission_log = array();
     $current_aro = "";
     $id_aro = 0;
     foreach ($handlers as $handler) {
         $aro = str_replace("Controller", "", get_class($handler[0]));
         if ($current_aro != $aro) {
             $current_aro = $aro;
             $sc = "name ='" . $current_aro . "'";
             //si existe el aro
             if (Aros::count($sc)) {
                 $found_aro = Aros::findFirst($sc);
                 $id_aro = $found_aro->getId();
             } else {
                 $new_aro = new Aros();
                 $new_aro->setName($current_aro);
                 $new_aro->save();
                 $new_aro = Aros::findFirst(array("order" => "id", "limit" => "1"));
                 $id_aro = $new_aro->getId();
             }
         }
         $aco = $handler[1];
         $id_aco = 0;
         $sc_acos = array("id_aro='" . $id_aro . "' and name = '" . $aco . "'");
         if (!Acos::count($sc_acos)) {
             $new_aco = new Acos();
             $new_aco->setName($aco);
             $new_aco->setIdAro($id_aro);
             $new_aco->save();
         }
         $found_aco = Acos::findFirst($sc_acos);
         $id_aco = $found_aco->getId();
         $sc_permission = "id_aco ='" . $id_aco . "'";
         //si no existe el permiso
         if (!Permissions::count($sc_permission)) {
             $new_permission = new Permissions();
             $new_permission->setPermissionName($aro . " - " . $aco);
             $new_permission->setIdAco($id_aco);
             $new_permission->save();
             $new_permission_log[] = $aro . " - " . $aco;
         } else {
             $found_permission = Permissions::findFirst($sc_permission);
             $permission_log[] = $found_permission->getPermissionName();
         }
     }
     $log = array();
     $log["created_permissions"] = $new_permission_log;
     $log["already_exist_permissions"] = $permission_log;
     return $log;
 }
Пример #5
0
 /** #############################################################################
  * 更新数据库中的Permissions
  * @param dir $ctrlDir
  * @return bool
  */
 function updatePermissions($updateCtrlDir = '')
 {
     if (is_dir($updateCtrlDir) && stripos($updateCtrlDir, '/app/controller/')) {
         $newDbActions = $newPermissions = $delPermissions = array();
         $this->controller_dir = $updateCtrlDir;
         // 得到指定目录中的全部Actions
         $allActionsarr = $this->find_Permissions();
         $allActionsarr = $this->makeAllActionsEasy($allActionsarr);
         foreach ($allActionsarr as $key => $value) {
             $allActions[] = $value['nca'];
         }
         //return $allPermissions;
         // 得到数据库中的全部Actions
         $dbActions = Permissions::find()->all()->asArray()->query();
         // 整理成简单数组的格式
         foreach ($dbActions as $oneActions) {
             $newDbActions[$oneActions['id']] = $oneActions['namespace'] . "_" . $oneActions['controller'] . "_" . $oneActions['action'];
         }
         // 不在数据库中的Actions将输入数据库,先用array_diff取得差值,键名保持不变。
         $newPermissions = array_diff($allActions, $newDbActions);
         if (count($newPermissions)) {
             // 构造$newPermissions的键名数组,用来构成输入数据库的数组
             $creatStr = array();
             foreach ($newPermissions as $key => $newPermission) {
                 //$permissionName = explode('_', $newPermission);
                 $insert_data = new Permissions(array("namespace" => $allActionsarr[$key]['namespace'], "controller" => $allActionsarr[$key]['controller'], "action" => $allActionsarr[$key]['action'], "aliasname" => $allActionsarr[$key]['aliasname']));
                 $insert_data->save();
             }
         }
         // 在数据库中却在文件中没有的Actions将从数据库删除
         $delPermissions = array_diff($newDbActions, $allActions);
         if (count($delPermissions)) {
             // 构造要删除的Actions的id列表
             $delConditions = array();
             foreach ($delPermissions as $key => $delPermission) {
                 Permissions::meta()->destroyWhere('id = ?', $key);
             }
         }
         return true;
     } else {
         return false;
     }
 }
Пример #6
0
 public function insertPermissionsGroup($array)
 {
     $modelPrac = new Pracivnuku();
     $modelPerm = new Permissions();
     $groupModel = new Group();
     foreach ($array as $k => $v) {
         $modelPerm->{$k} = $v;
     }
     $modelPerm->save();
     return Yii::app()->db->getLastInsertID();
 }