2016/03/17

3.PASSWORDを変更するFUNCTION :APEX ID/PASSWORD認証機能 - カスタム編 -

  • Goal
    パスワードを変更するFUNCTION
    パスワードの条件(8文字以上、英数字 etc)はAPEX上で実装するので、このファンクションではチェックしていない。パスワード変更画面で、パスワード変更ボタンを押したときに呼び出す。パスワードチェック時及び新パスワードのハッシュ化時は、1.PASSWORDをハッシュ化するFUNCTIONを呼び出す。
  • Source

    create or replace Function CHGPWD(p_user_id in NUMBER, -- USERMASTER の key
    p_username in VARCHAR2, -- USERNAME
    p_old_pwd in VARCHAR2, -- old password
    p_new_pwd in VARCHAR2, -- new password
    p_con_pwd in VARCHAR2) -- confirm new password
    return BOOLEAN
    IS
    l_flag NUMBER;
    BEGIN
    -- Check パスワードと確認パスワードの確認(不要かも)
    IF p_new_pwd != p_con_pwd THEN
    RETURN FALSE;
    END IF;
    -- 現状のパスワードの確認
    select 1 into l_flag from USERMASTER a
    where a.USER_ID = p_user_id
    and a.PWD = SHA1_HASH(p_username,p_old_pwd) ---MD5_HASH(p_username,p_old_pwd)
    and upper(a.USERNAME) = upper(p_username);
    -- 現状のパスワードが一致した時のみパスワードを更新する
    IF l_flag = 1 THEN
    UPDATE USERMASTER a SET a.PWD = SHA1_HASH(p_username,p_new_pwd) ---MD5_HASH(p_username,p_new_pwd)
    ,a.PWD_EXPIRE = 0 -- Expireをフラグ管理
    where a.USER_ID = p_user_id
    and a.PWD = SHA1_HASH(p_username,p_old_pwd) ------MD5_HASH(p_username,p_old_pwd)
    and upper(a.USERNAME) = upper(p_username);
    RETURN TRUE;
    ELSE
    RETURN FALSE;
    END IF;
    END;
    view raw CHGPWD.sql hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿