2022-07-04 05:03:16 +02:00

164 lines
4.0 KiB
SQL

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;
BEGIN
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;
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
-- clear items for messages
app.set_item('P0_MESSAGE', in_raise => FALSE);
app.set_item('P0_MESSAGE_SUCCESS', in_raise => FALSE);
app.set_item('P0_MESSAGE_ERROR', in_raise => FALSE);
app.set_item('P0_MESSAGE_ALERT', in_raise => FALSE);
app.set_item('P0_MESSAGE_CALLBACK', in_raise => FALSE);
--app.log_module();
--
IF app.get_page_id() IN (9999, 100) THEN -- only for login page and home page -- @TODO: remove hardcoded numbers
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;
END;
/