Creating Custom Login Screen In Oracle Forms 10g
Below is the example plsql unit to validate login credentials and after successful validation open a new form by passing some parameters to it, in Oracle forms 10g.
Create a form for custom login. Create text items for username and password etc. and a login button. When user click on that login button call this plsql routine.
declare
vPassword fox_user.password%type; -- get a password field type from your user master table
plid paramlist;
begin
-- check if username is null
if :appstart.usn is null then
error_message('User name must be entered.');
go_item('appstart.usn');
raise Form_Trigger_Failure;
end if;
-- check if password is null
if :appstart.psw is null then
error_message('Password must be entered.');
go_item('appstart.psw');
raise Form_Trigger_Failure;
end if;
select password into vpassword
from fox_user
where rtrim(userid) = rtrim(:appstart.usn);
-- decrypt password using your own encrypt / decrypt method.
-- below mentioned decrypt is a program unit i used
if :appstart.psw != decrypt(vpassword) then
error_message('Invalid Password for the user. Logon Denied!');
go_item('appstart.psw');
raise form_trigger_Failure;
end if;
-- if valid username and password then create parameter list to pass the calling form
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);
exception
when no_data_found then
error_message('Invalid Userid. Please enter valid userid and password. Logon Denied!');
go_item('appstart.usn');
when too_many_rows then
error_message('Internal error...');
when others then
null;
end;
Create a form for custom login. Create text items for username and password etc. and a login button. When user click on that login button call this plsql routine.
declare
vPassword fox_user.password%type; -- get a password field type from your user master table
plid paramlist;
begin
-- check if username is null
if :appstart.usn is null then
error_message('User name must be entered.');
go_item('appstart.usn');
raise Form_Trigger_Failure;
end if;
-- check if password is null
if :appstart.psw is null then
error_message('Password must be entered.');
go_item('appstart.psw');
raise Form_Trigger_Failure;
end if;
select password into vpassword
from fox_user
where rtrim(userid) = rtrim(:appstart.usn);
-- decrypt password using your own encrypt / decrypt method.
-- below mentioned decrypt is a program unit i used
if :appstart.psw != decrypt(vpassword) then
error_message('Invalid Password for the user. Logon Denied!');
go_item('appstart.psw');
raise form_trigger_Failure;
end if;
-- if valid username and password then create parameter list to pass the calling form
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);
exception
when no_data_found then
error_message('Invalid Userid. Please enter valid userid and password. Logon Denied!');
go_item('appstart.usn');
when too_many_rows then
error_message('Internal error...');
when others then
null;
end;