Atualização da aplicação de sincronizar do módulo de segurança

Atualização da aplicação de sincronizar do módulo de segurança

Visando aprimorar a segurança em nossos projetos, realizamos várias mudanças nos arquivos das aplicações.
Uma dessas alterações afetou um arquivo crucial, que informa o tipo das aplicações ao realizar a sincronização no módulo de segurança.

Para garantir que a sincronização continue funcionando corretamente, efetuamos uma modificação no código do evento onValidate da aplicação de sincronização.

Todos os módulos futuros seguirão essa correção no código, porém, para os usuários que estão utilizando uma versão anterior do módulo de segurança, será necessário realizar um pequeno ajuste em sua aplicação para garantir o correto funcionamento. Sigas os passos abaixo:

1. Acesse a aplicação de sincronização

No ambiente de desenvolvimento, no Scriptcase, acesse seu projeto e localiza a aplicação app_sync_apps
Por padrão, o nome da aplicação é app_sync_apps, porém é possível alterar o prefixo da aplicação no momento da criação do módulo de segurança. Caso não seja localizado a aplicação com o nome padrão, realize apenas pelo final do nome da aplicação: sync_apps

2. Novo código para a aplicação app_sync_apps

A aplicação app_sync_apps é criada ao gerar os módulos dos tipos: Grupo, Aplicações e LDAP - Controle Total.
Certifique-se o tipo de módulo que está sendo utilizado antes de realizar a substituição dos códigos.

Para módulos dos tipos: Grupo

Copie o código abaixo:
  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 módulos dos tipos: Aplicação 

Copie o código abaixo:

  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 módulos dos tipos: LDAP - Controle Total.

Copie o código abaixo:
  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. Sobrescreva o código no evento "onValidate"


Após copiar o código, de acordo com o módulo de segurança do seu projeto, acesse o evento onValidade e substitua o código existente no evento pelo código informado no passo 2 do tutorial.
No código fornecido, as tabelas estão com o padrão de prefixo "sec_" que é gerado pelo módulo de segurança. Caso você tenha alterado o prefixo durante a geração do seu módulo, é necessário ajustar o código, substituindo "sec_" pelo prefixo utilizado.

4. Gerar a aplicação

Após a substituição do código, você deve gerar o fonte da aplicação, para que possa ser utilizada normalmente da forma correta.
Caso tenha alguma dúvida, por favor, entre em contato com nosso suporte

    • Related Articles

    • Autenticação de dois Fatores do Módulo de Segurança - Google Authenticator

      O Google Authenticator gera códigos da verificação em duas etapas no seu smartphone . A verificação em duas etapas oferece maior segurança para sua conta pois dessa forma exige uma segunda etapa de verificação no login além da senha. Configuração da ...
    • Erro na recuperação de senha do módulo de segurança

      Para corrigir o erro durante o processo de recuperação de senha do módulo de segurança, é necessário seguir os passos a seguir: Disponível apenas ao utilizar a opção de enviar por e-mail o link de alterar nova senha. 1- Acessar aplicação a ...
    • Criando a chave de Api do Google Maps

      Neste artigo veja como habilitar e obter a chave para utilização do Google Maps nas aplicações do Scriptcase. Acessando a Plataforma do google Maps 1. Acesse o link https://mapsplatform.google.com/ para criar sua chave. Será necessário realizar login ...
    • Como criar ligação de aplicação

      Ligação de Aplicação: É utilizada para ligar a aplicação com qualquer outro tipo de aplicação do projeto. Esse tipo de ligação está associado aos eventos de inclusão e alteração. Como fazer uma ligação entre aplicações: Abra sua aplicação e acesse, ...
    • Habilitando a Autenticação de Dois Fatores (2FA) na Segurança do nosso projeto

      A autenticação de dois fatores (2FA) permite trazer mais um nível de segurança para os projetos desenvolvidos no ScriptCase, e para os usuários desses projetos. Neste artigo, veremos como habilitar o uso da autenticação de dois fatores (2FA) no ...