Application specific package (needs cleanup)

This commit is contained in:
Jan Kvetina 2022-01-05 18:17:31 +01:00
parent d354579f19
commit e91fcb2cf1
2 changed files with 203 additions and 0 deletions

View File

@ -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;
/

View File

@ -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}', '<span class="fa fa-coffee"></span>' -- app.get_logout_label
);
*/
END;
END;
/