/**
  * Finds the Acciones model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id_accion
  * @param integer $id_controlador
  * @return Acciones the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id_accion, $id_controlador)
 {
     if (($model = Acciones::findOne(['id_accion' => $id_accion, 'id_controlador' => $id_controlador])) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
 /**
  * Creates a new Modulo model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $models = [];
     $searchModel = new ModuloSearch();
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
     $modules = Yii::$app->metadata->getModules();
     foreach ($modules as $module) {
         $modulo = Modulo::findOne(['descripcion' => $module]);
         if ($modulo == null) {
             $modulo = new Modulo();
             $modulo->descripcion = strtoupper($module);
             try {
                 $modulo->save();
             } catch (\Exception $ex) {
                 $models[] = $modulo;
                 $modulo = null;
             }
         }
         if ($modulo) {
             //echo "Modulo: $module<br />";
             $controllers = Yii::$app->metadata->getControllers($module);
             foreach ($controllers as $controller) {
                 $controlador = \app\modules\admin\models\Controlador::findOne(['descripcion' => $controller, 'id_modulo' => $modulo->id_modulo]);
                 if ($controlador == null) {
                     $controlador = new \app\modules\admin\models\Controlador();
                     $controlador->id_modulo = $modulo->id_modulo;
                     $controlador->descripcion = strtoupper(str_ireplace("controller", "", $controller));
                     try {
                         $controlador->save();
                     } catch (\Exception $ex) {
                         $models[] = $controlador;
                         $controlador = null;
                     }
                 }
                 if ($controlador) {
                     $actions = Yii::$app->metadata->getActions($controller, $module);
                     foreach ($actions as $action) {
                         $accion = \app\modules\admin\models\Acciones::findOne(['id_controlador' => $controlador->id_controlador, 'descripcion' => $action]);
                         if ($accion == null) {
                             $accion = new \app\modules\admin\models\Acciones();
                             $accion->id_controlador = $controlador->id_controlador;
                             $accion->descripcion = strtoupper($action);
                             try {
                                 $accion->save();
                             } catch (\Exception $ex) {
                                 $models[] = $accion;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $this->actionIndex();
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Acciones::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id_accion' => $this->id_accion, 'id_controlador' => $this->id_controlador]);
     $query->andFilterWhere(['like', 'descripcion', $this->descripcion]);
     return $dataProvider;
 }
Example #4
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getSeguridadAcciones()
 {
     return $this->hasMany(Acciones::className(), ['id_controlador' => 'id_controlador']);
 }
 public static function hasAccess($module, $controller = null, $action = null)
 {
     try {
         if (strcmp(strtoupper($module), "SIAP") == 0 && strcmp(strtoupper($controller), "DEFAULT") == 0 && strcmp(strtoupper($action), "INDEX") == 0) {
             return true;
         }
         if (\Yii::$app->user->isGuest) {
             return false;
         }
         $usuario = SeguridadUsuarios::findOne(\Yii::$app->user->identity->id);
         if ($usuario == null) {
             return false;
         }
         if ($usuario->isAdmin()) {
             return true;
         }
         if ($module == null) {
             return false;
         }
         $modulo = Modulo::findOne(['descripcion' => strtoupper($module)]);
         if ($controller == null) {
             if ($modulo) {
                 foreach ($usuario->idGrupos as $grupo) {
                     $grupo instanceof Grupo;
                     foreach ($grupo->idControladores as $controlador) {
                         $controlador instanceof Controlador;
                         if ($controlador->id_modulo == $modulo->id_modulo) {
                             return true;
                         }
                     }
                 }
             }
         } else {
             if ($action == null) {
                 $controlador = Controlador::findOne(['id_modulo' => $modulo->id_modulo, 'descripcion' => strtoupper($controller)]);
                 if ($modulo && $controlador) {
                     $controlador instanceof Controlador;
                     foreach ($usuario->idGrupos as $grupo) {
                         $grupo instanceof Grupo;
                         foreach ($grupo->idControladores as $controladorPermiso) {
                             if ($controlador->id_controlador == $controladorPermiso->id_controlador && $controlador->id_modulo == $modulo->id_modulo) {
                                 return true;
                             }
                         }
                     }
                 }
             } else {
                 $controlador = Controlador::findOne(['id_modulo' => $modulo->id_modulo, 'descripcion' => strtoupper($controller)]);
                 $accion = Acciones::findOne(['id_controlador' => $controlador->id_controlador, 'descripcion' => strtoupper($action)]);
                 if ($modulo && $controlador && $accion) {
                     $accion instanceof Acciones;
                     $controlador instanceof Controlador;
                     foreach ($usuario->idGrupos as $grupo) {
                         $grupo instanceof Grupo;
                         $permiso = AccionGrupo::findOne(['id_accion' => $accion->id_accion, 'id_controlador' => $controlador->id_controlador, 'id_grupo' => $grupo->id_grupo]);
                         if ($permiso) {
                             return true;
                         }
                     }
                 }
             }
         }
     } catch (Exception $ex) {
     }
     return false;
 }
Example #6
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getIdAccion()
 {
     return $this->hasOne(Acciones::className(), ['id_accion' => 'id_accion', 'id_controlador' => 'id_controlador']);
 }
Example #7
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getIdAcciones()
 {
     return $this->hasMany(Acciones::className(), ['id_accion' => 'id_accion'])->viaTable(AccionGrupo::tableName(), ['id_grupo' => 'id_grupo']);
 }
 /**
  * Assign or revoke assignment to user
  * @param  integer $id
  * @param  string  $action
  * @return mixed
  */
 public function actionAsignarPermisos()
 {
     try {
         Yii::$app->response->format = 'json';
         if (Yii::$app->request->isAjax) {
             $grupo = Grupo::findOne(Yii::$app->request->post('id'));
             if ($grupo) {
                 $action = Acciones::findOne(Yii::$app->request->post('accion'));
                 if ($action) {
                     $tipo = intval(Yii::$app->request->post('tipo'));
                     if ($tipo == 1) {
                         $model = new AccionGrupo();
                         $model->id_grupo = $grupo->id_grupo;
                         $model->id_accion = $action->id_accion;
                         $model->id_controlador = $action->id_controlador;
                         $model->save();
                     } else {
                         if ($tipo == -1) {
                             $model = AccionGrupo::findOne(['id_accion' => $action->id_accion, 'id_grupo' => $grupo->id_grupo]);
                             if ($model) {
                                 $model->delete();
                             }
                         }
                     }
                     return ['success' => true];
                 }
             }
         }
     } catch (Exception $ex) {
     }
     return ['success' => false];
 }