Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criando uma tela de login personalizada no Oracle Forms 10g

Abaixo segue o exemplo da unidade plsql para validar credenciais de login e após validação bem sucedida abra um novo formulário passando alguns parâmetros para ele, no Oracle forms 10g.
Crie um formulário para login customizado. Crie itens de texto para nome de usuário e senha etc. e um botão de login. Quando o usuário clicar nesse botão de login, chame esta rotina plsql.

declare
vPassword fox_user.password%type; -- obtém um tipo de campo de senha da sua tabela mestra de usuário
plid paramlist;
begin
-- verifica se o nome de usuário é nulo
se :appstart.usn é nulo, então
error_message('Nome de usuário deve ser digitado.');
go_item('appstart.usn');
raise Form_Trigger_Failure;
end if;
-- verifique se a senha é null
se :appstart.psw for null then
error_message('Senha deve ser digitada.');
go_item('appstart.psw');
raise Form_Trigger_Failure;
end if;
selecione a senha em vpassword
de fox_user
onde rtrim(userid) =rtrim(:appstart.usn);
-- descriptografe a senha usando seu próprio encrypt / decrypt.
-- abaixo mencionado decrypt é uma unidade de programa que usei
if :appstart.psw !=decrypt(vpassword) then
error_message('Senha inválida para o usuário. Logon negado! ');
go_item('appstart.psw');
raise form_trigger_Failure;
end if;
-- se usuário e senha válidos então crie uma lista de parâmetros para passar o formulário de chamada
plid :=get_parameter_list('formdata');
if Not id_null(plid) then
Destroy_parameter_list(plid);
end if;
plid :=Create_Parameter_list('formdata');
Add_parameter(plid, 'userid', text_parameter, :appstart.usn);
new_form('main', full_rollback, no_query_only, plid);
exceção
quando no_data_found then
error_message('ID de usuário inválido. Por favor, digite um ID de usuário e senha válidos. Logon negado!');
go_item('appstart.usn');
quando too_many_rows então
error_message('Erro interno...');
quando outros então
null;
end;