Bem-vindo à GAS
GAS Team Blog
 Todos os foruns
 GAS DOS
 Campo pede senha
 Versão para imprimir  
Autor Tópico anterior Tópicos Próximo tópico  
Valter Junior
Categoria: VIP


349 Postagem
Postado -  06/02/2013  :  20:00:41

Boa noite pessoal,

Tenho em uma tela de vendas o campo "desconto" e este ao entrar em foco teria que solicitar a senha de um usuario administrador, até ai tudo bem, coloquei em valor inicial a rotina abaixo, o problema e que ele aceita qualquer usuario, tipo, se o usuario logado colocar novamente o seu usuario e senha ele pode digitar o valor neste campo, e somente poderia ser digitado o valor neste campo se for colocada a senha de um administrador.

Como fazer isso ?

 

***** LIBERAR ROTINAS COM SENHA *********************************

#include "sgi.ch" // inicializa constantes manifestas

LOCAL ret_val:=.f., v1, REG_DBF:=POINTER_DBF()

#ifdef COM_REDE
IF !USEARQ(sistema[nss-1,O_ARQUI,O_NOME],.f.,20,1) // abre arquivo de senhas
RETU .f. // nao consegui cai fora...
ENDI
#else
USEARQ(sistema[nss-1,O_ARQUI,O_NOME]) // abre arq de acessos
#endi

#ifdef COM_REDE
IF !USEARQ(sistema[nss,O_ARQUI,O_NOME],.f.,20,1) // abre arq de usuarios
RETU .f. // se falhou cai fora...
ENDI
#else
USEARQ(sistema[nss,O_ARQUI,O_NOME]) // abre arq de usuarios
#endi
v1=SAVESCREEN(0,0,MAXROW(),79)
DBSETORDER(2) // vamos usar o indice 2
cod_sos=15 // codigo do help
COLORSELECT(COR_GET) // poe cor de get na frente
v1=SAVESCREEN(0,0,MAXROW(),79) // salva tela e coloca tela de senha
DBOX(PADR(" Nome.:",25)+"|"+PADR(" Senha:",25)+"| F4 para finalizar|ESC para recome‡ar",9,25,,NAO_APAGA,"SENHA DE ACESSO")
cp_=1
usuar=SPACE(15) // nome do usuario
DO WHIL .t.
@ 12,36 GET usuar PICT "@!" // receve o nome
READ

IF quer_sair // cancelou...
EXIT
ENDI
IF LASTKEY()=K_ESC // recome‡a
usuar=SPACE(15) // nome do usuario
LOOP
ENDI
SETCOLOR(drvcorget) // coloca fundo
@ 13,36 SAY SPAC(6) // da cor do get
senh=PADR(PWORD(13,36),6) // recebe a senha do usuario
SETCOLOR(drvcorbox) // volta para cor normal
IF quer_sair // cancelou...
RET_VAL=.F.
ENDI
IF EMPTY(senh) // senha em branco
@ 13,36 SAY SPAC(6)
LOOP // cai fora
ENDI
SEEK ENCRIPT(usuar)+senh // ve se esta' credenciado
IF FOUND() // OK!
msg_auto="Opera‡„o n„o autorizada, "+TRIM(DECRIPT(pw_nome)) // monta mensagem usuario
IF TRIM(DECRIPT(PW_NIVEL))='3'
RET_VAL=.T.
exit
ELSE
exit
RET_VAL=.F.
ENDI
ELSE
IF cp_<2 // epa! senha invalida
cp_++ // vamos dar outra chance
ALERTA() // estamos avisando!
DBOX("Senha invalida!",,,1)
@ 13,36 SAY SPAC(6)
RET_VAL=.F.
ELSE // errou duas vezes!
ALERTA() // pode ser um E.T.
DBOX("Usuario n„o autorizado!",,,2)
RET_VAL=.F.
ENDI
ENDI
ENDD
SETCOLOR(drvcorpad) // cor normal
POINTER_DBF(REG_DBF,.F.)
RESTSCREEN(0,0,MAXROW(),79,v1)
RETU ret_val




Paulo Muller
Categoria: Intermedirio


89 Postagem
Postado - 04/10/2013 :  09:54:25
Já resolveu o teu problema, senão, eu te oriento.Ir para o topo da página
Ir para:


Google
 
Set as your default homepage Add favorite Privacy MaxWebPortal   2009 SuperSys.com.br All Rights Reserved. MaxWebPortal.com Snitz Forums Go To Top Of Page

Carregado em 0.313s