Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 /**
  * Finds the Modulo model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Modulo the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Modulo::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }