diff --git a/packages/a770.spec.sql b/packages/a770.spec.sql index 3d2454e..6bc5522 100644 --- a/packages/a770.spec.sql +++ b/packages/a770.spec.sql @@ -1,7 +1,42 @@ CREATE OR REPLACE PACKAGE a770 AS + FUNCTION is_mod_a_user + RETURN CHAR; + + + FUNCTION is_administrator RETURN CHAR; + + + PROCEDURE create_user ( + in_user_login users.user_login%TYPE, + in_user_id users.user_id%TYPE + ); + + + + PROCEDURE create_session ( + in_user_login users.user_login%TYPE, + in_user_id users.user_id%TYPE + ); + + + + PROCEDURE exit_session; + + + + FUNCTION get_page_name ( + in_page_name apex_application_pages.page_name%TYPE + ) + RETURN VARCHAR2; + + + + FUNCTION get_env_name + RETURN VARCHAR2; + END; / diff --git a/packages/a770.sql b/packages/a770.sql index 594851e..2d7ebbb 100644 --- a/packages/a770.sql +++ b/packages/a770.sql @@ -1,5 +1,33 @@ CREATE OR REPLACE PACKAGE BODY a770 AS + FUNCTION is_mod_a_user + RETURN CHAR AS + is_valid CHAR; + BEGIN + --is_valid := SUBSTR(sett.get_test_a(), 1, 1); + + IF app.is_developer() THEN + RETURN 'Y'; + END IF; + -- + SELECT 'Y' INTO is_valid + FROM user_roles u + JOIN roles r + ON r.app_id = u.app_id + AND r.role_id = u.role_id + WHERE u.app_id = app.get_app_id() + AND u.user_id = app.get_user_id() + AND u.role_id = app.get_caller_name() + AND r.is_active = 'Y'; + -- + RETURN is_valid; + EXCEPTION + WHEN NO_DATA_FOUND THEN + RETURN 'N'; + END; + + + FUNCTION is_administrator RETURN CHAR AS is_valid CHAR; @@ -24,5 +52,145 @@ CREATE OR REPLACE PACKAGE BODY a770 AS RETURN 'N'; END; + + + PROCEDURE create_user ( + in_user_login users.user_login%TYPE, + in_user_id users.user_id%TYPE + ) AS + PRAGMA AUTONOMOUS_TRANSACTION; + -- + rec users%ROWTYPE; + BEGIN + app.log_module_json ( + 'user_login', in_user_login, + 'user_id', in_user_id + ); + -- + -- @TODO: app.create_user(rec) + -- + rec.user_id := in_user_id; + rec.user_login := in_user_login; + rec.user_name := NULL; + rec.is_active := 'Y'; + rec.updated_by := app.get_user_id(); + rec.updated_at := SYSDATE; + -- + BEGIN + INSERT INTO users VALUES rec; + EXCEPTION + WHEN DUP_VAL_ON_INDEX THEN + NULL; + END; + -- + /* + BEGIN + INSERT INTO user_roles (user_id, role_id, is_active, updated_by, updated_at) + VALUES ( + in_user_id, + 'USER', + 'Y', + in_user_name, + SYSDATE + ); + EXCEPTION + WHEN DUP_VAL_ON_INDEX THEN + NULL; + END; + */ + -- + COMMIT; + -- + app.log_success(); + EXCEPTION + WHEN app.app_exception THEN + RAISE; + WHEN OTHERS THEN + app.raise_error(); + END; + + + + PROCEDURE create_session ( + in_user_login users.user_login%TYPE, + in_user_id users.user_id%TYPE + ) + AS + BEGIN + --app.log_module(); + -- + IF app.get_page_id() = 9999 THEN -- only for login page + a770.create_user ( + in_user_login => in_user_login, + in_user_id => in_user_id + ); + END IF; + -- + --app.log_success(); + EXCEPTION + WHEN app.app_exception THEN + RAISE; + WHEN OTHERS THEN + app.raise_error(); + END; + + + + PROCEDURE exit_session + AS + BEGIN + --app.log_module(); + -- + NULL; + -- + --app.log_success(); + EXCEPTION + WHEN app.app_exception THEN + RAISE; + WHEN OTHERS THEN + app.raise_error(); + END; + + + + FUNCTION get_env_name + RETURN VARCHAR2 AS + out_name VARCHAR2(4000); + BEGIN + out_name := 'Environment: ' || 'DEV'; -- retrieve value from settings + -- + IF app.is_developer() THEN + -- details for developers + SELECT + 'Oracle APEX: ' || a.version_no || CHR(10) || + 'Oracle Database: ' || p.version_full || CHR(10) || + out_name + INTO out_name + FROM apex_release a + CROSS JOIN product_component_version p; + END IF; + -- + RETURN app.get_icon('fa-window-bookmark', out_name); + END; + + + + FUNCTION get_page_name ( + in_page_name apex_application_pages.page_name%TYPE + ) + RETURN VARCHAR2 + AS + BEGIN + RETURN in_page_name; + /* + RETURN REPLACE(REPLACE(REPLACE(REPLACE(in_page_name, + '${DATE}', a100.get_date_str()), + '${USER_NAME}', app.get_user_id()), + '${ENV_NAME}', 'D'),--app.get_env_name()), + '${LOGOUT}', '' -- app.get_logout_label + ); + */ + END; + END; /