Actualización de la aplicación de sincronización del módulo de seguridad

Actualización de la aplicación de sincronización del módulo de seguridad

Para mejorar la seguridad en nuestros proyectos, realizamos varios cambios en los archivos de la aplicación. Uno de estos cambios afectó un archivo crucial que indica a las aplicaciones cómo sincronizarse.

Para asegurarnos de que la sincronización siga funcionando correctamente, hicimos una modificación en el código del evento onValidate de la aplicación de sincronización. Todos los módulos futuros seguirán esta corrección en el código, lo cual proporcionará una mayor seguridad y eficiencia en nuestros proyectos.

Sin embargo, para los usuarios que estén utilizando una versión anterior del módulo de seguridad, será necesario realizar un pequeño ajuste en su aplicación para garantizar un funcionamiento correcto.

Aquí están los pasos a seguir:

1-Accede a la aplicación de sincronización:

En desarrollo, dentro de la carpeta de seguridad, abre la aplicación: "app_sync_apps".

Por defecto, la aplicación tiene el nombre "app_sync_apps", sin embargo, es posible cambiar el prefijo de la aplicación al crear el módulo de seguridad. Si no se encuentra la aplicación con el nombre predeterminado, utiliza solo el final del nombre de la aplicación: sync_apps.

2-Nuevo código para la aplicación "app_sync_apps":


La aplicación "app_sync_apps" se crea generando módulos de los tipos: Grupo, Aplicaciones y LDAP - Control Total. Asegúrate de conocer el tipo de módulo que se está utilizando antes de reemplazar los códigos.

Para los módulos de los tipos: Grupo:

Copia el siguiente código:

  1. $arr_apps  = array();
  2. $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
  3. foreach($_arr_apps as $k => $v)
  4. {
  5. if(substr($v, -12) != "_mob_ini.php")
  6. {
  7. $arr_apps[] = substr($v, 0, -8);
  8. }
  9. }

  10. if({check_deleted} == 'Y')
  11. {
  12.     foreach($arr_apps as $k => $app)
  13.     {
  14. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  15. $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
  16.     if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
  17.         {
  18.             unset($arr_apps[$k]);
  19.         }
  20.     }
  21. }

  22. sc_select(rs, "SELECT app_name FROM sec_apps");

  23. $arr_apps_db = array();
  24. while(!$rs->EOF)
  25. {
  26.     $arr_apps_db[] = $rs->fields[0];
  27.     $rs->MoveNext();
  28. }
  29. $rs->Close();
  30. $arr_apps = array_diff($arr_apps, $arr_apps_db);

  31. //========= Groups =========
  32. $arr_grp = array();
  33. sc_select(rs, "SELECT group_id FROM sec_groups");
  34. while(!$rs->EOF)
  35. {
  36.     $arr_grp[] = $rs->fields[0];
  37.     $rs->MoveNext();
  38. }
  39. $rs->Close();

  40. foreach($arr_apps as $k => $app)
  41. {
  42. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  43. $app_type = isset($arr_data['type'])?$arr_data['type']:'';
  44.     
  45. $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
  46. sc_lookup(rs, $sql);
  47. if({rs[0][0]} == 0)
  48. {
  49. $sql = "INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')";
  50. sc_exec_sql( $sql );
  51. foreach($arr_grp as $grp)
  52. {
  53. $sql = "INSERT INTO sec_groups_apps(app_name, group_id) VALUES ('". $app ."', '". $grp ."')";
  54. sc_exec_sql( $sql );
  55. }
  56. }
  57. }

Para los módulos de los tipos: Aplicaciones:

Copia el siguiente código:

  1. $arr_apps  = array();
  2. $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
  3. foreach($_arr_apps as $k => $v)
  4. {
  5. if(substr($v, -12) != "_mob_ini.php")
  6. {
  7. $arr_apps[] = substr($v, 0, -8);
  8. }
  9. }

  10. if({check_deleted} == 'Y')
  11. {
  12.     foreach($arr_apps as $k => $app)
  13.     {
  14. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  15. $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
  16.     if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
  17.         {
  18.             unset($arr_apps[$k]);
  19.         }
  20.     }
  21. }

  22. sc_select(rs, "SELECT app_name FROM sec_apps");

  23. $arr_apps_db = array();
  24. while(!$rs->EOF)
  25. {
  26.     $arr_apps_db[] = $rs->fields[0];
  27.     $rs->MoveNext();
  28. }
  29. $rs->Close();
  30. $arr_apps = array_diff($arr_apps, $arr_apps_db);

  31. //========= Users =====
  32. $arr_usr = array();
  33. sc_select(rs, "SELECT login FROM sec_users");
  34. while(!$rs->EOF)
  35. {
  36.     $arr_usr[] = $rs->fields[0];
  37.     $rs->MoveNext();
  38. }
  39. $rs->Close();

  40. foreach($arr_apps as $k => $app)
  41. {
  42. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  43. $app_type = isset($arr_data['type'])?$arr_data['type']:'';
  44. $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
  45. sc_lookup(rs, $sql);
  46. if({rs[0][0]} == 0)
  47. {   
  48. sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
  49. foreach($arr_usr as $usr)
  50. {
  51. sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");   
  52. }
  53. }
  54. }

Para los módulos del tipo: LDAP - Control Total:

Copia el siguiente código:

  1. $arr_apps  = array();
  2. $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
  3. foreach($_arr_apps as $k => $v)
  4. {
  5. if(substr($v, -12) != "_mob_ini.php")
  6. {
  7. $arr_apps[] = substr($v, 0, -8);
  8. }
  9. }

  10. if({check_deleted} == 'Y')
  11. {
  12.     foreach($arr_apps as $k => $app)
  13.     {
  14. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  15. $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
  16.      if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
  17.         {
  18.             unset($arr_apps[$k]);
  19.         }
  20.     }
  21. }
  22.    
  23. sc_select(rs, "SELECT app_name FROM sec_apps");

  24. $arr_apps_db = array();
  25. while(!$rs->EOF)
  26. {
  27.     $arr_apps_db[] = $rs->fields[0];
  28.     $rs->MoveNext();
  29. }
  30. $rs->Close();
  31. $arr_apps = array_diff($arr_apps, $arr_apps_db);

  32. //========= Users =========
  33. $arr_usr = array();
  34. sc_select(rs, "SELECT login FROM sec_users");
  35. while(!$rs->EOF)
  36. {
  37.     $arr_usr[] = $rs->fields[0];
  38.     $rs->MoveNext();
  39. }
  40. $rs->Close();

  41. foreach($arr_apps as $k => $app)
  42. {
  43. require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
  44. $app_type = isset($arr_data['type'])?$arr_data['type']:'';

  45. $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
  46. sc_lookup(rs, $sql);
  47. if({rs[0][0]} == 0)
  48. {
  49. sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
  50. foreach($arr_usr as $usr)
  51. {
  52. sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");   
  53. }
  54. }
  55. }

3-Reemplaza el evento "onValidate":


En la carpeta de eventos, selecciona el evento "onValidate". Reemplaza el código existente con el que copiaste en el paso 2.


En el código proporcionado, las tablas están precedidas por el patrón "sec_" que es generado por el módulo de seguridad. En caso de que hayas cambiado el prefijo durante la generación de tu módulo, es necesario ajustar el código, reemplazando "sec_" por el prefijo utilizado.

4- generar el código fuente


Después de completar estos pasos y generar el código fuente, estarás listo para sincronizar las aplicaciones.


Si tienes alguna pregunta, por favor, contacta con nuestro soporte.


    • Related Articles

    • Error de recuperación de contraseña del módulo de seguridad

      Para corregir el error durante el proceso de recuperación de contraseña del módulo de seguridad, debe seguir los pasos a continuación: Solo está disponible cuando se utiliza la opción de enviar por correo electrónico el enlace para cambiar la nueva ...
    • Actualizando el Módulo de Seguridad: cómo migrar del antiguo al nuevo

      Los ataques a las aplicaciones web están en constante evolución. Con los datos siendo un recurso tan valioso, es crucial mantener la seguridad del sistema actualizada para evitar pérdidas. El nuevo módulo de seguridad, además de ser extremadamente ...
    • Scriptcase 9.8 - Fatal error: Array and string offset en Módulo de Seguridad

      Puede encontrar este error al ejecutar una aplicación de inicio de sesión creada por un módulo de seguridad generado antes de Scriptcase 9.8. Este error ocurre solo en un entorno con PHP 8 o superior debido a un cambio en el acceso a los elementos ...
    • Copia de seguridad

      Al actualizar manualmente Scriptcase, o realizar cualquier cambio que afecte a Scriptcase, el usuario debe guardar ciertos archivos a través de una Copia de seguridad. Se requiere una copia de seguridad para evitar perder Proyectos y Configuraciones. ...
    • Crear menú de aplicación

      En este tutorial le mostraremos cómo crear una aplicación de menú. Después de crear el proyecto, se mostrará una pantalla con todas las aplicaciones disponibles para su creación. Seleccione el menú de la aplicación, ingrese el nombre y el idioma a ...