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:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Groups =========
- $arr_grp = array();
- sc_select(rs, "SELECT group_id FROM sec_groups");
- while(!$rs->EOF)
- {
- $arr_grp[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
-
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- $sql = "INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')";
- sc_exec_sql( $sql );
- foreach($arr_grp as $grp)
- {
- $sql = "INSERT INTO sec_groups_apps(app_name, group_id) VALUES ('". $app ."', '". $grp ."')";
- sc_exec_sql( $sql );
- }
- }
- }
Para módulos dos tipos: Aplicação
Copie o código abaixo:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Users =====
- $arr_usr = array();
- sc_select(rs, "SELECT login FROM sec_users");
- while(!$rs->EOF)
- {
- $arr_usr[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
- foreach($arr_usr as $usr)
- {
- sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");
- }
- }
- }
Para módulos dos tipos: LDAP - Controle Total.
Copie o código abaixo:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
-
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Users =========
- $arr_usr = array();
- sc_select(rs, "SELECT login FROM sec_users");
- while(!$rs->EOF)
- {
- $arr_usr[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
- foreach($arr_usr as $usr)
- {
- sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");
- }
- }
- }
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.