Commit d11ec8b2365928fc6c0e610511917f97085df21f
1 parent
36c9d17b
fixed permissions (rules) in controllers
Showing
9 changed files
with
88 additions
and
112 deletions
Show diff stats
backend/controllers/CartController.php
| ... | ... | @@ -8,7 +8,6 @@ use common\models\CartBillsSearch; |
| 8 | 8 | use backend\components\base\BaseController; |
| 9 | 9 | use yii\web\NotFoundHttpException; |
| 10 | 10 | use yii\filters\VerbFilter; |
| 11 | -use yii\filters\AccessControl; | |
| 12 | 11 | |
| 13 | 12 | /** |
| 14 | 13 | * CartController implements the CRUD actions for CartBills model. |
| ... | ... | @@ -16,34 +15,7 @@ use yii\filters\AccessControl; |
| 16 | 15 | class CartController extends BaseController |
| 17 | 16 | { |
| 18 | 17 | public $layout = "/column"; |
| 19 | - /** | |
| 20 | - * @inheritdoc | |
| 21 | - */ | |
| 22 | - public function behaviors() | |
| 23 | - { | |
| 24 | - return [ | |
| 25 | - 'access' => [ | |
| 26 | - 'class' => AccessControl::className(), | |
| 27 | - 'rules' => [ | |
| 28 | - [ | |
| 29 | - 'actions' => ['login', 'error', 'download-photo','delete-image' ], | |
| 30 | - 'allow' => true, | |
| 31 | - ], | |
| 32 | - [ | |
| 33 | - 'actions' => ['logout', 'index','create','update','view','delete',], | |
| 34 | - 'allow' => true, | |
| 35 | - 'roles' => ['@'], | |
| 36 | - ], | |
| 37 | - ], | |
| 38 | - ], | |
| 39 | - 'verbs' => [ | |
| 40 | - 'class' => VerbFilter::className(), | |
| 41 | - 'actions' => [ | |
| 42 | - 'logout' => ['post'], | |
| 43 | - ], | |
| 44 | - ], | |
| 45 | - ]; | |
| 46 | - } | |
| 18 | + | |
| 47 | 19 | /** |
| 48 | 20 | * Lists all CartBills models. |
| 49 | 21 | * @return mixed | ... | ... |
backend/controllers/CrossingUploadController.php
| ... | ... | @@ -8,10 +8,13 @@ |
| 8 | 8 | |
| 9 | 9 | namespace backend\controllers; |
| 10 | 10 | |
| 11 | +use backend\components\base\BaseActiveRecord; | |
| 11 | 12 | use backend\components\base\BaseController; |
| 12 | 13 | use common\components\CustomArrayHelper; |
| 13 | 14 | use common\components\CustomVarDamp; |
| 15 | +use yii\base\Model; | |
| 14 | 16 | use yii\data\ArrayDataProvider; |
| 17 | +use yii\db\ActiveRecord; | |
| 15 | 18 | use yii\filters\VerbFilter; |
| 16 | 19 | use yii\filters\AccessControl; |
| 17 | 20 | use backend\models\UploadFileCrossingForm; |
| ... | ... | @@ -82,7 +85,7 @@ class CrossingUploadController extends BaseController |
| 82 | 85 | //ะทะฐะฟััะบะฐะตะผ ะฟะฐััะธะฝะณ |
| 83 | 86 | $data = $model->readFile(); |
| 84 | 87 | // ัะพั ัะฐะฝัะตะผ ะฒ ะบะตั ะพัะฟะฐััะตะฝะฝัะต ะดะฐะฝัะต |
| 85 | - $this->cacheHandler( true, $data, $model ); | |
| 88 | + $this->cacheHandler( 1, $data, $model ); | |
| 86 | 89 | } else if (Yii::$app->getCache()->get('parser_data')) { |
| 87 | 90 | $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); |
| 88 | 91 | } |
| ... | ... | @@ -128,7 +131,7 @@ class CrossingUploadController extends BaseController |
| 128 | 131 | $arr = $model->toArray(); |
| 129 | 132 | |
| 130 | 133 | // ะฟะพะปััะธะผ ะดะฐะฝะฝัะต ะธะท ะบะตัะฐ |
| 131 | - $this->cacheHandler( false, $data, $configuration ); | |
| 134 | + $this->cacheHandler( 0, $data, $configuration ); | |
| 132 | 135 | |
| 133 | 136 | // ัะพะพัะฝะตัะตะผ ะพัะฟะฐััะตะฝะฝัะต ะดะฐะฝะฝัะต ั ัะพะพัะฒะตัััะฒะธะตะผ ะฟะพะปััะตะฝะฝัะผ ะพั ะฟะพะปัะทะพะฒะฐัะตะปั |
| 134 | 137 | // ะดะปั ััะพะณะพ ะฟัะตะพะฑัะฐะทัะตะผ ะผะฐััะธะฒ ะพัะฟะฐััะตะฝะฝัั ะดะฐะฝะฝัั - ะฝะฐะทะฝะฐัะธะผ ะบะปััะธ ัะพะณะปะฐัะฝะพ ัะพะพัะฒะตัััะฒะธั |
| ... | ... | @@ -138,16 +141,20 @@ class CrossingUploadController extends BaseController |
| 138 | 141 | $data = $this->convertDataByConfiguration( $data, $configuration ); |
| 139 | 142 | |
| 140 | 143 | $crosses_model = new DetailsCrosses(); |
| 141 | - $crosses_model->ManualInsertWithIgnore($data); | |
| 142 | 144 | |
| 143 | - Yii::$app->session->setFlash('success', 'ะคะฐะนะป ะบัะพััะพะฒ ััะฟะตัะฝะพ ะทะฐะณััะถะตะฝ'); | |
| 144 | - // ะฒัะต ะฟัะพัะปะพ ััะฟะตัะฝะพ - ะพัะธัะฐะตะผ ะบะตั | |
| 145 | - Yii::$app->getCache()->delete('parser_data'); | |
| 146 | - Yii::$app->getCache()->delete('parser_configuration'); | |
| 145 | + if ( $this->validateModel( $crosses_model , $data ) && $crosses_model->ManualInsertWithIgnore( $data ) ) { | |
| 146 | + | |
| 147 | + Yii::$app->session->setFlash('success', 'ะคะฐะนะป ะบัะพััะพะฒ ััะฟะตัะฝะพ ะทะฐะณััะถะตะฝ'); | |
| 148 | + | |
| 149 | + // ะพัะธััะธะผ ะบะตั | |
| 150 | + $this->cacheHandler( 2 ); | |
| 151 | + | |
| 152 | + if (file_exists($configuration['file_path'])) | |
| 153 | + unlink($configuration['file_path']); | |
| 154 | + return $this->render('index', ['model' => $configuration]); | |
| 155 | + | |
| 156 | + } | |
| 147 | 157 | |
| 148 | - if (file_exists($configuration['file_path'])) | |
| 149 | - unlink($configuration['file_path']); | |
| 150 | - return $this->render('index', ['model' => $configuration]); | |
| 151 | 158 | |
| 152 | 159 | } else { |
| 153 | 160 | // ะฝะต ะฟัะพัะปะฐ ะฒะฐะปะธะดะฐัะธั ัะพัะผะฐ ะทะฐะณััะทะบะธ ัะฐะนะปะพะฒ |
| ... | ... | @@ -188,8 +195,8 @@ class CrossingUploadController extends BaseController |
| 188 | 195 | $options ['configuration'] = ["string" => ['ARTICLE', 'CROSS_ARTICLE'],]; |
| 189 | 196 | } |
| 190 | 197 | |
| 191 | - foreach ($data as &$row) { | |
| 192 | - $row = Yii::$app->converter->convertByConfiguration($row, $options); | |
| 198 | + foreach ( $data as &$row ) { | |
| 199 | + $row = Yii::$app->converter->convertByConfiguration( $row, $options ); | |
| 193 | 200 | } |
| 194 | 201 | |
| 195 | 202 | return $data; |
| ... | ... | @@ -197,30 +204,47 @@ class CrossingUploadController extends BaseController |
| 197 | 204 | } |
| 198 | 205 | |
| 199 | 206 | /** |
| 200 | - * @param $mode - bool - true - put in cache, otherwise - fetch from cache | |
| 207 | + * @param $mode - int: 0 - fetch from cache, - 1 - put in cache, <2 - delete from cache | |
| 201 | 208 | * @param $data - array |
| 202 | 209 | * @param $configuration - array |
| 203 | 210 | * @throws \ErrorException |
| 204 | 211 | */ |
| 205 | - protected function cacheHandler( $mode, &$data, &$configuration ){ | |
| 206 | - | |
| 207 | - if ( $mode ) { | |
| 208 | - | |
| 209 | - Yii::$app->getCache()->set('parser_data', json_encode($data), 1800); | |
| 210 | - // ัะพั ัะฐะฝัะตะผ ะฒ ะบะตั ะผะพะดะตะปั - ะฒ ะฝะตะน ะฝะฐัััะพะนะบะธ ะดะปั ะดะฐะปัะฝะตะนัะตะน ะพะฑัะฐะฑะพัะบะธ ะดะฐะฝะฝัั | |
| 211 | - Yii::$app->getCache()->set('parser_configuration', serialize($configuration), 1800); | |
| 212 | + protected function cacheHandler( $mode, &$data = [], &$configuration = [] ){ | |
| 213 | + switch ( $mode ) { | |
| 214 | + case 0: | |
| 215 | + if (Yii::$app->getCache()->get('parser_data') && Yii::$app->getCache()->get('parser_configuration')) { | |
| 216 | + $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | |
| 217 | + $configuration = unserialize(Yii::$app->getCache()->get('parser_configuration')); | |
| 218 | + } else { | |
| 219 | + throw new \ErrorException('ะัะธะฑะบะฐ ะบะตัะฐ'); | |
| 220 | + } | |
| 221 | + break; | |
| 222 | + | |
| 223 | + case 1: | |
| 224 | + Yii::$app->getCache()->set('parser_data', json_encode($data), 1800); | |
| 225 | + // ัะพั ัะฐะฝัะตะผ ะฒ ะบะตั ะผะพะดะตะปั - ะฒ ะฝะตะน ะฝะฐัััะพะนะบะธ ะดะปั ะดะฐะปัะฝะตะนัะตะน ะพะฑัะฐะฑะพัะบะธ ะดะฐะฝะฝัั | |
| 226 | + Yii::$app->getCache()->set('parser_configuration', serialize($configuration), 1800); | |
| 227 | + break; | |
| 228 | + | |
| 229 | + default: | |
| 230 | + if( Yii::$app->getCache()->exists('parser_data') ) | |
| 231 | + Yii::$app->getCache()->delete('parser_data'); | |
| 232 | + | |
| 233 | + if( Yii::$app->getCache()->exists('parser_configuration') ) | |
| 234 | + Yii::$app->getCache()->delete('parser_configuration'); | |
| 235 | + } | |
| 212 | 236 | |
| 213 | - } else { | |
| 237 | + } | |
| 214 | 238 | |
| 215 | - if (Yii::$app->getCache()->get('parser_data') && Yii::$app->getCache()->get('parser_configuration')) { | |
| 216 | - $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | |
| 217 | - $configuration = unserialize(Yii::$app->getCache()->get('parser_configuration')); | |
| 218 | - } else { | |
| 219 | - throw new \ErrorException('ะัะธะฑะบะฐ ะบะตัะฐ'); | |
| 220 | - } | |
| 239 | + protected function validateModel( BaseActiveRecord $model, array $data ){ | |
| 221 | 240 | |
| 241 | + foreach ( $data as $row ) { | |
| 242 | + if ( !$model->validate( $row ) ) { | |
| 243 | + $model->throwStringErrorException( key( $data ) ); | |
| 244 | + }; | |
| 222 | 245 | } |
| 223 | 246 | |
| 247 | + return true; | |
| 224 | 248 | |
| 225 | 249 | } |
| 226 | 250 | } |
| 227 | 251 | \ No newline at end of file | ... | ... |
backend/controllers/DetailsDescriptionController.php
| ... | ... | @@ -11,7 +11,6 @@ use yii\data\ActiveDataProvider; |
| 11 | 11 | use yii\web\HttpException; |
| 12 | 12 | use yii\web\NotFoundHttpException; |
| 13 | 13 | use yii\filters\VerbFilter; |
| 14 | -use yii\filters\AccessControl; | |
| 15 | 14 | |
| 16 | 15 | /** |
| 17 | 16 | * DetailsDescriptionController implements the CRUD actions for DetailsDescription model. |
| ... | ... | @@ -20,30 +19,13 @@ class DetailsDescriptionController extends BaseController |
| 20 | 19 | { |
| 21 | 20 | public $layout = "/column"; |
| 22 | 21 | |
| 23 | - /** | |
| 24 | - * @inheritdoc | |
| 25 | - */ | |
| 26 | 22 | public function behaviors() |
| 27 | 23 | { |
| 28 | 24 | return [ |
| 29 | - 'access' => [ | |
| 30 | - 'class' => AccessControl::className(), | |
| 31 | - 'rules' => [ | |
| 32 | - [ | |
| 33 | - 'actions' => ['login', 'error', 'download-photo','delete-image' ], | |
| 34 | - 'allow' => true, | |
| 35 | - ], | |
| 36 | - [ | |
| 37 | - 'actions' => ['logout', 'index','create','update','view','delete',], | |
| 38 | - 'allow' => true, | |
| 39 | - 'roles' => ['@'], | |
| 40 | - ], | |
| 41 | - ], | |
| 42 | - ], | |
| 43 | 25 | 'verbs' => [ |
| 44 | 26 | 'class' => VerbFilter::className(), |
| 45 | 27 | 'actions' => [ |
| 46 | - 'logout' => ['post'], | |
| 28 | + 'delete' => ['post'], | |
| 47 | 29 | ], |
| 48 | 30 | ], |
| 49 | 31 | ]; | ... | ... |
backend/controllers/ParserController.php
| ... | ... | @@ -38,22 +38,17 @@ class ParserController extends BaseController |
| 38 | 38 | 'class' => AccessControl::className(), |
| 39 | 39 | 'rules' => [ |
| 40 | 40 | [ |
| 41 | - 'actions' => ['login', 'error', 'download-photo','delete-image' ], | |
| 42 | - 'allow' => true, | |
| 43 | - ], | |
| 44 | - [ | |
| 45 | - 'actions' => ['logout', 'index','create','update','view','delete',], | |
| 46 | 41 | 'allow' => true, |
| 47 | 42 | 'roles' => ['@'], |
| 48 | 43 | ], |
| 49 | 44 | ], |
| 50 | 45 | ], |
| 51 | - 'verbs' => [ | |
| 52 | - 'class' => VerbFilter::className(), | |
| 53 | - 'actions' => [ | |
| 54 | - 'logout' => ['post'], | |
| 55 | - ], | |
| 56 | - ], | |
| 46 | +// 'verbs' => [ | |
| 47 | +// 'class' => VerbFilter::className(), | |
| 48 | +// 'actions' => [ | |
| 49 | +// 'logout' => ['post'], | |
| 50 | +// ], | |
| 51 | +// ], | |
| 57 | 52 | ]; |
| 58 | 53 | } |
| 59 | 54 | ... | ... |
backend/controllers/RgGrupController.php
| ... | ... | @@ -14,7 +14,6 @@ use common\components\CustomVarDamp; |
| 14 | 14 | use common\components\parsers\MailAttachmentsSaver; |
| 15 | 15 | use common\models\Margins; |
| 16 | 16 | use common\models\MarginsGroups; |
| 17 | -use yii\filters\VerbFilter; | |
| 18 | 17 | use yii\filters\AccessControl; |
| 19 | 18 | use Yii; |
| 20 | 19 | use yii\web\UploadedFile; |
| ... | ... | @@ -36,22 +35,17 @@ class RgGrupController extends BaseController |
| 36 | 35 | 'class' => AccessControl::className(), |
| 37 | 36 | 'rules' => [ |
| 38 | 37 | [ |
| 39 | - 'actions' => ['login', 'error', 'download-photo','delete-image' ], | |
| 40 | - 'allow' => true, | |
| 41 | - ], | |
| 42 | - [ | |
| 43 | - 'actions' => ['logout', 'index','create','update','view','delete',], | |
| 44 | 38 | 'allow' => true, |
| 45 | 39 | 'roles' => ['@'], |
| 46 | 40 | ], |
| 47 | 41 | ], |
| 48 | 42 | ], |
| 49 | - 'verbs' => [ | |
| 50 | - 'class' => VerbFilter::className(), | |
| 51 | - 'actions' => [ | |
| 52 | - 'logout' => ['post'], | |
| 53 | - ], | |
| 54 | - ], | |
| 43 | +// 'verbs' => [ | |
| 44 | +// 'class' => VerbFilter::className(), | |
| 45 | +// 'actions' => [ | |
| 46 | +// 'logout' => ['post'], | |
| 47 | +// ], | |
| 48 | +// ], | |
| 55 | 49 | ]; |
| 56 | 50 | } |
| 57 | 51 | ... | ... |
backend/models/DetailsCrosses.php
| ... | ... | @@ -78,8 +78,16 @@ class DetailsCrosses extends \backend\components\base\BaseActiveRecord |
| 78 | 78 | $query = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; |
| 79 | 79 | // ะดะพะฑะฐะฒะธะผ ะบะปััะตะฒะพะต ัะปะพะฒะพ - ignore |
| 80 | 80 | $query = preg_replace('/INSERT/','INSERT IGNORE', $query); |
| 81 | - Yii::$app->db->createCommand($query)->execute(); | |
| 81 | + $rows = Yii::$app->db->createCommand($query)->execute(); | |
| 82 | + | |
| 83 | + // ะตัะปะธ ะฝะตั ัะตะทัะปััะฐัะฐ ะฒะตัะฝะตะผัั ั ะพัะธะฑะบะพะน | |
| 84 | + if ( $rows == 0 ) { | |
| 85 | + return false; | |
| 86 | + } | |
| 82 | 87 | |
| 83 | 88 | } |
| 89 | + | |
| 90 | + return true; | |
| 91 | + | |
| 84 | 92 | } |
| 85 | 93 | } | ... | ... |
tests/_support/_generated/UnitTesterActions.php
tests/unit/BaseConverterTest.php
| ... | ... | @@ -21,18 +21,19 @@ class BaseConverterTest extends \Codeception\TestCase\Test |
| 21 | 21 | { |
| 22 | 22 | $this->converter = new Converter(); |
| 23 | 23 | |
| 24 | - $this->configuration = ['configuration' => | |
| 25 | - ["encode" => 'encode', | |
| 26 | - "string" => ['string1', 'string2' ], | |
| 27 | - "float" => 'float', | |
| 28 | - "integer" => ['integer1', 'integer2' ], | |
| 24 | + $this->configuration = ['hasKey' => true, | |
| 25 | + 'configuration' => | |
| 26 | + ['encode' => 'encode', | |
| 27 | + 'string' => ['string1', 'string2' ], | |
| 28 | + 'float' => 'float', | |
| 29 | + 'integer' => ['integer1', 'integer2' ], | |
| 29 | 30 | ]]; |
| 30 | 31 | |
| 31 | 32 | $this->wrong_configuration = ['config' => |
| 32 | - ["encode" => 'encode', | |
| 33 | - "string" => 'string', | |
| 34 | - "float" => 'float', | |
| 35 | - "integer" => 'integer', | |
| 33 | + ['encode' => 'encode', | |
| 34 | + 'string' => 'string', | |
| 35 | + 'float' => 'float', | |
| 36 | + 'integer' => 'integer', | |
| 36 | 37 | ]]; |
| 37 | 38 | |
| 38 | 39 | $this->data_in = [ |
| ... | ... | @@ -49,7 +50,7 @@ class BaseConverterTest extends \Codeception\TestCase\Test |
| 49 | 50 | |
| 50 | 51 | public function testConvertByConfig(){ |
| 51 | 52 | |
| 52 | - $this->data_out = $this->converter->convertByConfiguration($this->data_in, $this->configuration ); | |
| 53 | + $this->data_out = $this->converter->convertByConfiguration( $this->data_in, $this->configuration ); | |
| 53 | 54 | $this->assertEquals( $this->data_out['encode'], iconv( 'windows-1251', 'UTF-8', 'test encode string' ), 'Encoding failed' ); |
| 54 | 55 | $this->assertInternalType( 'float', $this->data_out['float'], 'Convert to float is failed' ); |
| 55 | 56 | |
| ... | ... | @@ -58,7 +59,7 @@ class BaseConverterTest extends \Codeception\TestCase\Test |
| 58 | 59 | public function testConvertToException(){ |
| 59 | 60 | |
| 60 | 61 | $this->setExpectedException('\Exception'); |
| 61 | - $this->data_out = $this->converter->convertByConfiguration($this->data_in, $this->wrong_configuration ); | |
| 62 | + $this->data_out = $this->converter->convertByConfiguration( $this->data_in, $this->wrong_configuration ); | |
| 62 | 63 | |
| 63 | 64 | } |
| 64 | 65 | ... | ... |
tests/unit/CrossesParsingTest.php
| ... | ... | @@ -17,7 +17,7 @@ class CrossesParsingTest extends \Codeception\TestCase\Test |
| 17 | 17 | public function _before() |
| 18 | 18 | { |
| 19 | 19 | $this->options[ 'mode' ] = 'crosses'; |
| 20 | - $this->options[ 'converter_conf' ] = [ 'configuration' => [ "string" => ['ARTICLE', 'CROSS_ARTICLE'], ] ]; | |
| 20 | + $this->options[ 'converter_conf' ] = [ 'configuration' => [ "string" => ['ARTICLE', 'CROSS_ARTICLE'] ], 'hasKey' => 1 ]; | |
| 21 | 21 | $this->file_path = Yii::getAlias('@data_parser') . '\crosses\test1.csv'; |
| 22 | 22 | |
| 23 | 23 | } | ... | ... |