aplicacao utilizando modulo de seguranca

(lowczy) #1

Bom dia, mais uma vez pedindo Help

é o seguinte , tenho um projeto onde utilizo duas conexoes, a primeira aponta para um banco de dados que gerencia empresas (sistema multi-empresas) que possam acessar o sistema e a segunda aponta para o sistema em si onde se solicita outro login (multi-usuarios dentro da empresa individualmente).

Apliquei o modulo de segurança no modulo que gerencia o menu da aplicacao, deixei todas as aplicacoes com seguranca habitada menos o formulario master .

Criei um form de controle (formulario master) onde acessando a primeira base permite e redireciona pra o control_login (formulario criado pelo modulo de segurança)

os detalhes da seguranca na aplicacao principal antes do control_login esta off apos a geracao pelo scriptcase, mudando pra on via scriptcase

o problema é o seguinte
a aplicacao control_login deveria comecar com a seguranca ativada pois so pode ser acessada se passar no login do formulario master , assim na 1 aplicacao uso, seto manualmente on via sc e depois na aplicacao master uso no evento onvalidate do formulario master

sc_apl_status('control_login_1', 'off');		 
    sc_redir('control_login_1');	

nesse ponto ele abre a 2 aplicacao ( o que deveria realmente acontecer ) o modulo docontrol_login e pede a senha do usuario

porem ai que surge o erro

no evento onvalidade do control_login na linha onde esta
sc_redir(‘Menu’);

da a mensagem USUARIO NAO AUTORIZADO quando o control_login esta com seguranca ativada

e
se desabilitar a seguranca via scriptcase executa normal indo para o menu do sistema (menu.php)

nao estou entendendo porque se coloco
em off no control_login o sistema funciona
mas se colocar
sc_apl_status(‘menu’, ‘off’);
sc_redir(‘menu’);

da USUARIO NAO AUTORIZADO

se alguem souber onde esta o meu erro pela inexperiencia agradeço a orientação

(Cleyton Euler) #2

Eu simplificaria isso fazendo tudo no control_login.

Mas se vc está setando o menu para off, acho que vai dá mesmo usuário não autorizado.

(lowczy) #3

nao sei se da pra ser diferente pois sao duas bases de dados

uma para empresas autorizadas

outra para usuarios das empresas

e depois ainda serao banco de dados diferentes para cada empresa

agora estou apanhando primeiro nos logins

e se eu seto o menu pra off nao seria para desabilitar a seguranca do menu apos ter passado
pelo login

ou estou fazendo confusao no conceito de on e off da seguranca

(Cleyton Euler) #4

Tentou inverter?

(lowczy) #5

Sim, ja tentei com on e com off

simplesmente so funciona quando tiro a seguranca

(Cleyton Euler) #6

Olha no SC vc pode ter mais de uma conexão na mesma aplicação sem problemas. Até nos lookups vc tem como configurar qual a conexão será utilizada.

Sobre o seu problema, posta os códigos para galera analisar e ver o que pode estar errado.

(lowczy) #7

valeu cleyton vou ver a sua dica e os codigos sao simples

seguranca nao ativada
on validate do formulario master

sc_reset_apl_conf();

$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection({password});
//sc_sql_injection(md5({password}));

sc_lookup(ds_user, "select * from usuarios where login_usuario = $var_login and password_usuario = $var_password ");

if ({ds_user} != false)
{
$USUARIO_GLOBAL = {ds_user[0][2]};
$USUARIO_INDIVIDUAL_GLOBAL = {ds_user[0][0]};

sc_set_global($USUARIO_GLOBAL);
sc_set_global($USUARIO_INDIVIDUAL_GLOBAL);

}
else
{
sc_error_message(“Acesso negado !”);
}

sc_apl_status('control_login', 'off');  // formulario de seguranca do sc gerado
    sc_redir('control_login', "", "_self");

essa parte esta ok funciona

no formulario gerado pelo sc no modulo de seguranca

seguranca ativada
on validate do formulario control_login
$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection({password});

$sm_global_login = $var_login;
$sm_global_password = $var_password;
$login_user = $sm_global_login;	
	
sc_set_global($sm_global_login);
    sc_set_global($login_user);
sc_set_global($sm_global_password);

sc_lookup(ds_user, "select login, senha from tbl_usuarios where login = $var_login and senha = $var_password ");

if ({ds_user} != false)
{
sc_lookup(ds_user_app, "select tbl_grupos_x_apps.cod_aplicacao from tbl_grupos_x_apps inner join tbl_usuarios_x_grupos on tbl_grupos_x_apps.cod_grupo = tbl_usuarios_x_grupos.cod_grupo where tbl_usuarios_x_grupos.login = ‘{login}’ ");

if ({ds_user_app} != false)
{
	for($i = 0; $i < count({ds_user_app}); $i++)
	{		    
		sc_apl_status({ds_user_app[$i][0]}, 'on');
	}
}

//sc_apl_status('menu','off') ou com sc_apl_status('menu','on');
sc_redir('Menu');  		

}
else
{
sc_error_message(“Acesso negado !”);
}

aqui da acesso negado e esse é o meu problema

grato

(Cleyton Euler) #8

Se está caindo no else, o problema pode estar no if:

else
{
sc_error_message(“Acesso negado !”);
}

Já conferiu se o recordset está retornando dados?

(lowczy) #9

talvez eu nao tenha sido claro

ele faz tudo certo
passa pelos ifs acha os usuarios tudo blz
porem ao executar

sc_redir(‘Menu’);

da mensagem
usuario nao autorizado

independente de eu colocar
sc_apl_status(‘menu’,‘off’) ou com sc_apl_status(‘menu’,‘on’);

(Cleyton Euler) #10

Na sua tabela de aplicações a aplicação menu está cadastrada. Foi dada permissão para o usuário?

(lowczy) #11

vou verificar mas a principio estao todas pois foi gerado pelo sc na implementacao do security