Skip to Main Content

Nicer APEX Login

Everybody thought of a nicer login in APEX web applications. Here is one example on how to make it a bit Nicer. This applies to EPG environment.

If you want to make it working under different environment, please refer to OHS instructions for configuring, or APEX Listener configuration.

You can create procedure like this to redirect to your application:

create or replace
PROCEDURE MYAPP
AS
BEGIN
f (p=>'100:101');
APEX_UTIL.SET_SESSION_STATE ('FSP_AFTER_LOGIN_URL');
END;

Change application id and page id accordingly in procedure.

Give grant to execute this procedure to public and create public synonym for it.

Modify APEX schema wwv_flow_epg_include_mod_local function so that you can execute that procedure in URL:

create or replace
function
wwv_flow_epg_include_mod_local(
procedure_name in varchar2)
return boolean
is
begin
--return false; -- remove this statement when you modify this function
--
-- Administrator note: the procedure_name input parameter may be in
the format:
--
-- procedure
-- schema.procedure
-- package.procedure
-- schema.package.procedure
--
-- If the expected input parameter is a procedure name only, the IN
list code shown below
-- can be modified to itemize the expected procedure names.
Otherwise you must parse the
-- procedure_name parameter and replace the simple code below with
code that will evaluate
-- all of the cases listed above.
--
if upper(procedure_name)
in (
'MYAPP'
) then
return TRUE;
else
return FALSE;
end if;
end wwv_flow_epg_include_mod_local;

Now you can call procedure in url, example: http://<host>:<port>/<dad>/myapp and it will redirect to your application.

You can also change Database Access Descriptor (DAD) default page be your procedure (default is apex what points to APEX builder login).

Run this for example under SYS (change accordingly to your DAD name):

BEGIN
dbms_epg.set_dad_attribute('APEX', 'default-page', 'myapp');
END;

Now when you point browser to http://<host>:<port>/<dad>/ it will redirect to your application instead of APEX builder login page.

To list DADs and their paths you can use the following code:

declare
dads dbms_epg.varchar2_table;
paths DBMS_EPG.VARCHAR2_TABLE;
begin
dbms_epg.get_dad_list (
    dads);
for i in 1..dads.count loop
   dbms_output.put_line('DAD: '||dads(i));

   dbms_epg.get_all_dad_mappings (
   dads(i),
   paths);
   for j in 1..paths.count loop
       dbms_output.put_line('path: '||paths(j));
   end loop;
end loop;
end;

Please check MacLochlainns Weblog post Oracle 11g XDB DADs as well.

Comments

No comments yet on this post