芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/xmintal-back/components/EventBootstrap.php
request->url,'gii/')!==false){ //return; } /****Validado que no se pueda listar elementos de un catálogo que no corresponde a la misma sucursal * que el usuario que está mandando la petición */ Event::on(ActiveQuery::class, ActiveQuery::EVENT_INIT, function ($event) { $model = $event->sender; $aux=new $model->modelClass; $tableName = $aux->tableName(); if($model->primaryModel){ $aux=new $model->primaryModel; $tableName=$aux->tableName(); } $branch_id=isset(Yii::$app->params['branch_id'])?Yii::$app->params['branch_id']:false; if ($aux->hasAttribute('branch_id') && $model->modelClass!='app\models\User' && $branch_id) { $model->where[]=['WHERE '.$tableName.'.branch_id'=>$branch_id]; //$model->withQuery('branch_id='.Yii::$app->params['branch_id']); } }); /****Validado que no se pueda eliminar,crear o editar elementos de un catálogo que no corresponde a la misma empresa * que el usuario que está mandando la petición */ Event::on(BaseActiveRecord::class, BaseActiveRecord::EVENT_INIT, function ($event) { $model = $event->sender; if ($model->hasAttribute('branch_id') && get_class($model)!='app\models\User'){ //$model->branch_id=Yii::$app->params['branch_id']; // $message='Hay un error con el sistema, esta acción no se puede realizar'; // if(defined('YII_ENV')){ // $message='Esta clase debe extender a BaseModel si contiene el campo branch_id'; // } // throw new Exception($message); } }); Event::on(AppConnection::class, AppConnection::EVENT_BEFORE_QUERY, function ($event) { $thesql=$event->sender::$thesql; $params=$event->sender::$theparams; if(strpos($thesql,Yii::$app->db->tablePrefix)===false){ if(strpos($thesql,'{{%')!==false && strpos($thesql,'{{%user}}')===false && strpos($thesql,'{{%branch}}')===false){ if(strpos($thesql,'DELETE')!==false || strpos($thesql,'UPDATE')!==false || strpos($thesql,'INSERT')!==false){ $pattern = '/\{\{%([a-zA-Z0-9_]+)\}\}/'; $isRelational=true; if (preg_match_all($pattern, $thesql, $matches)) { $tableNames = $matches[1]; foreach($tableNames as $name){ if(strpos($name,'_')===false){ $isRelational=false; break; } } } if(strpos($thesql,'branch_id')===false && !$isRelational){ $message='Ocurrió un problema de privacidad, el contenido que estás intentando acceder es privado'; if(defined('YII_ENV')){ $message=' La consulta no contiene el filtro de la sucursal (branch_id=Yii::app()->params["branch_id"])'.PHP_EOL.$thesql; } throw new Exception($message); } } } } }); } }