Sunday, 23 March 2014

Custom Logon Authentication in Apex 4.2

Step 1.
CREATE TABLE  MY_USER
(
  USER_NAME  VARCHAR2(10 BYTE),
  USER_PWD   VARCHAR2(10 BYTE)
)
TABLESPACE INVENTORY
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
Step 2.
Insert into MY_USER
   (USER_NAME, USER_PWD)
 Values
   ('Tom', 'Secret');
COMMIT;

Step 3.

CREATE OR REPLACE FUNCTION validate_user_from_db (
   p_username   IN   VARCHAR2,
   p_password   IN   VARCHAR2
)
   RETURN BOOLEAN
AS
   v_pw_check   NUMBER (10);
BEGIN
   SELECT COUNT (1)
     INTO v_pw_check
     FROM my_user
    WHERE UPPER (user_name) = UPPER (p_username) AND user_pwd = p_password;

   IF v_pw_check >= 1
   THEN
      RETURN TRUE;
   ELSIF v_pw_check <= 0
   THEN
      RETURN FALSE;
   END IF;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      RETURN FALSE;
END validate_user_from_db;
Step 4.
 Edit logon page
=> share component => Authenticate Schemes => Create=> Next => Give a  Authentication name => press create authenticate scheme=> edit => name section select scheme Type="Custom"
=> setting section give Authentication function = "validate_user_from_db" => apply change

Nb: function parameter and login page userid password parameter must be same .

2 comments: