Autor Tópico: Login com liberação de acesso às aplicações...  (Lida 6525 vezes)

waae

  • Avançado
  • ****
  • Mensagens: 292
    • Email
Login com liberação de acesso às aplicações...
« Online: Maio 04, 2010, 11:06:35 pm »
Para inaugurar esta parte do forum, vamos ao login... o início de qualquer sistema... eu costumo usar esse padrão... espero que possa ajudar alguém... pois é um dos assuntos que mais procurei no início e sempre tem alguém com dúvida!!

Crie uma aplicação tipo CONTROLE, nela crie doi campos (LOGIN E SENHA)!!

No evento "ONVALIDATE", coloque o seguinte código (para buscar na sua tabela de usuários se o login existe!!):

//INICIO LOGIN
sc_reset_apl_status();
sc_reset_apl_conf();

sc_lookup(dslogin,"Select usrcodigo, usrnome from tb_usuarios where usrlogin='{loglogin}' and usrsenha='{logsenha}'");

if(empty({dslogin})) {
sc_error_message("Login ou Senha inválido.");
}else{
sc_apl_status('mnu_principal','on');   //"destrava" o menu principal para o usuário logado
sc_apl_status('cns_usuarios_fil','on'); //"destrava" a consulta de usuários para o usuário logado
sc_apl_status('frm_usuarios','on');  //"destrava" o cadastro de usuários para o usuário logado
sc_apl_status('frm_parametros','on');  //"destrava" os parametros para o usuário logado
}
//FIM LOGIN


Esse "sc_apl_status('...','on'); " habilita as aplicações para que o usuário consiga acessá-los... pois, em cada APLICAÇÃO, APLICAÇÃO -> CONFIGURAÇÃO, você pode marcar a opção "usar segurança" assim ninguem consegue acessar a APLICAÇÃO diretamente (sem logar), pois é apenas no "ONVALIDATE" do login que essas aplicações serão "liberadas".
Se o usuário tentar usar direto a aplicação sem ter passado pela tela de Login... ele não permite o acesso!!
Também é possível habilitar a segurança nas aplicações pela ferramenta chamada "Edição Expressa" e habilitar a segurança para todas as aplicações (exceto o Login) de uma única vez.

Estudando o codigo do login acima, dá pra controlar também oq cada usuário pode acessar!

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #1 Online: Maio 05, 2010, 10:54:52 am »
Eu costumo fazer como voce, mas gosto de ter 1 tabela com os niveis de acesso e cadastro tambem as aplicacoes em outra tabela pra fazer relacionamento de n:m. Assim da pra fazer um sistema dinamico com as permissoes de cada grupo.
Tambem comparo a senha com md5, pois eu guardo criptografado no banco.

Exemplo do codigo abaixo:

sc_reset_apl_status();

sc_lookup(dataset, "SELECT login, passwd, systemUserId, accessLevelId from systemUser where login = '{login}'");

if(!isset({dataset[0][0]}))
{
    sc_error_message({lang_login_failed});
    sc_error_exit();
}else
{
  $senha_teste = md5({password});
  if ($senha_teste != {dataset[0][1]})
  {
    sc_error_message({lang_login_failed});
    sc_error_exit();
  }

  sc_lookup(rs, "SELECT applicationId FROM accessLevel_x_applications WHERE accessLevelId = '".{dataset[0][3]} . "'");

  if(isset({rs[0][0]}))
  {
    foreach({rs} as $apl)
    {
      sc_apl_status ($apl[0], 'on');
    }
  }

  $v_user = {dataset[0][2]};
  sc_set_global([v_user]);

  sc_redir('menu.php');
}

waae

  • Avançado
  • ****
  • Mensagens: 292
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #2 Online: Maio 05, 2010, 01:35:58 pm »
Também controlo o acesso por grupos.... mas ai vai da criatividade e necessidade de cada um.
Mas não usava a criptografia... mas vou passar a usar.

Foi ótimo ver como você faz...

T+

Cleyton Euler

  • Expert
  • *****
  • Mensagens: 1149
    • Associação de Usuários Scriptcase
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #3 Online: Maio 08, 2010, 07:17:58 pm »
Tanto o exemplo da Jaqueline quanto o do Diogo Funcionam bem.

Uso algo parecido com o exemplo do Diogo. A vantagem está no fato de você não precisar editar o código de validação sempre que criar uma nova aplicação no projeto. Cadastra a aplicação na tabela e configura as permissões.

Associação de Usuários Scriptcase
http://www.auscriptcase.com.br

Consultoria Scriptcase Versão 5
http://www.infinitusweb.com.br

lorrane

  • Novato
  • *
  • Mensagens: 5
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #4 Online: Maio 17, 2010, 04:15:05 pm »
Olá... agora que estou começando a entender a parte de Login...

Poderia me explicar este if?


if(isset({rs[0][0]}))
  {
    foreach({rs} as $apl)
    {
      sc_apl_status ($apl[0], 'on');
    }
  }


obrigada!

rayfcrols

  • Intermediário
  • ***
  • Mensagens: 193
Re: Login com liberação de acesso às aplicações...
« Responder #5 Online: Maio 17, 2010, 05:16:39 pm »
if(isset({rs[0][0]})) // Verifica se o lookup retornou conteúdo "valido"
  {
    foreach({rs} as $apl) // neste momento ele ler todas as aplicações retornadas pelo lookup e aplica as permissoes
    {
      sc_apl_status ($apl[0], 'on');
/* neste caso simplismente ativa a aplicação para uso poderia tmb  aplicar níveis de acesso "CIDAT" EX:
sc_apl_conf ($apl[0],"insert", "off");  // Desativa função insert
sc_apl_conf ($apl[0],"update", "off"); // Desativa função update
sc_apl_conf ($apl[0],"delete", "off"); // Desativa função delete
*/
    }
  }

« Última modificação: Maio 17, 2010, 05:18:26 pm por rayfcrols »

lorrane

  • Novato
  • *
  • Mensagens: 5
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #6 Online: Maio 19, 2010, 10:20:05 am »
Compreendi!

Obrigada! :]

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #7 Online: Maio 25, 2010, 03:44:06 pm »
Se o select nao trouxer nada ou o banco tiver vazio ou qualquer outro erro, ele nao vai entrar no if pois a posição do array nao estara setada.

Previne dar erros de undefined offset na tentativa de acessar uma posição inexistente do array.

Eduardo Alves

  • Avançado
  • ****
  • Mensagens: 262
    • SLords Informatica
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #8 Online: Setembro 13, 2010, 08:33:55 am »
Continuando, aplicado a segurança nos formularios / consultas, se o usuario ficar um tempo sem usar o sistema (não sei bem quantos minutos), ao tentar acessar esse aplicativo (que encontra-se aberto), dá uma mensagem de "usuario não autorizado". Gostaria de aumentar esse tempo. Não sei se é no PHP ou no SC... alguem sabe ???
Eduardo Alves
Gestor de TI e Segurança de Dados
Tel: (11) 8400-0224 (TIM) – Nextel: Id: 5 * 4522
email: analista@slords.com.br skype: analista.slords
www.slords.com.br

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Login com liberação de acesso às aplicações...
« Responder #9 Online: Setembro 13, 2010, 10:02:15 am »
PHP.INI


Eduardo Alves

  • Avançado
  • ****
  • Mensagens: 262
    • SLords Informatica
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #10 Online: Setembro 13, 2010, 10:27:10 am »
Eu alterei a linha max_input_time para = 300

Estou testando, dando certo, eu posto aqui blz.. um abraço mestre

PHP.INI


Eduardo Alves
Gestor de TI e Segurança de Dados
Tel: (11) 8400-0224 (TIM) – Nextel: Id: 5 * 4522
email: analista@slords.com.br skype: analista.slords
www.slords.com.br

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase

Eduardo Alves

  • Avançado
  • ****
  • Mensagens: 262
    • SLords Informatica
    • Email
Re: Login com liberação de acesso às aplicações...
« Responder #12 Online: Setembro 23, 2010, 11:21:45 am »
Para documentar, após a mudança para max_input_time para = 300 e o "pessoal" pelo menos parou de reclamar.

http://uk3.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

Eduardo Alves
Gestor de TI e Segurança de Dados
Tel: (11) 8400-0224 (TIM) – Nextel: Id: 5 * 4522
email: analista@slords.com.br skype: analista.slords
www.slords.com.br