Feat(SQL, UI): 1. Updated User Calc Stored Procedure with Search functionality from previous commit on Command and Dog tables. \n 2. Corrected functionality of active field trash and add icons instead of button with replaceable text. \n 3. Improved styling on Dog Command Link page.

This commit is contained in:
2025-07-06 20:50:35 +01:00
parent 8cb8508dcd
commit 660b15cb8f
28 changed files with 1279 additions and 562 deletions

View File

@@ -8,12 +8,13 @@ DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DELIMITER //
CREATE PROCEDURE p_dog_get_many_user (
IN a_id_user INT
, IN a_id_user_auth0 VARCHAR(200)
, IN a_auth0_id_user VARCHAR(200)
, IN a_get_all_user BIT
, IN a_get_inactive_user BIT
, IN a_ids_user TEXT
, IN a_ids_user_auth0 TEXT
, IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
@@ -34,6 +35,7 @@ BEGIN
DECLARE v_id_permission_user_admin INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_permission_required VARCHAR(4000);
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT;
DECLARE v_rank_max INT;
DECLARE v_time_start TIMESTAMP(6);
@@ -100,8 +102,9 @@ BEGIN
SET a_get_all_user := IFNULL(a_get_all_user, 1);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_user_auth0 := TRIM(IFNULL(a_ids_user_auth0, ''));
SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
@@ -111,12 +114,13 @@ BEGIN
IF a_debug = 1 THEN
SELECT
a_id_user
, a_id_user_auth0
, a_auth0_id_user
, a_get_all_user
, a_get_inactive_user
, a_ids_user
, a_ids_user_auth0
, a_auth0_ids_user
, a_names_user
, a_emails_user
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -125,18 +129,36 @@ BEGIN
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
CREATE TEMPORARY TABLE tmp_User (
id_user INT NULL
, can_admin_dog BIT NULL
, can_admin_user BIT NULL
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
, can_admin_dog BIT
, can_admin_user BIT
);
CREATE TEMPORARY TABLE tmp_User_Access (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
);
CREATE TEMPORARY TABLE tmp_Msg_Error (
@@ -145,7 +167,7 @@ BEGIN
, code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL
);
/*
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
@@ -163,14 +185,13 @@ BEGIN
, as_int INT NULL
);
DELETE FROM tmp_Split_Name;
IF ISNULL(a_id_user) AND NOT ISNULL(a_id_user_auth0) THEN
SET a_id_user := (SELECT U.id_user FROM demo.DOG_User U WHERE U.id_user_auth0 = a_id_user_auth0 LIMIT 1);
IF ISNULL(a_id_user) AND NOT ISNULL(a_auth0_id_user) THEN
SET a_id_user := (SELECT U.id_user FROM demo.DOG_User U WHERE U.id_user_auth0 = a_auth0_id_user LIMIT 1);
END IF;
IF
ISNULL(a_id_user)
AND ISNULL(a_id_user_auth0)
AND ISNULL(a_auth0_id_user)
THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -186,7 +207,7 @@ BEGIN
END IF;
SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_ids_user_auth0 = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN
@@ -248,7 +269,7 @@ BEGIN
-- Auth0 User IDs
IF v_has_filter_user_auth0_id = 1 THEN
CALL demo.p_core_split(v_guid, a_ids_user_auth0, ',', FALSE);
CALL demo.p_core_split(v_guid, a_auth0_ids_user, ',', FALSE);
INSERT INTO tmp_Split_Auth0_Id (
substring
@@ -446,14 +467,25 @@ BEGIN
SELECT * FROM tmp_User;
END IF;
*/
-- Calculated fields
-- Can admin dog
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
@@ -463,26 +495,54 @@ BEGIN
END IF;
CALL demo.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN demo.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_dog = CUT.can_admin
INSERT INTO tmp_User (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
, can_admin_dog
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
, CALC_USER_T.can_admin AS can_admin_dog
FROM demo.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -490,11 +550,19 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
@@ -502,26 +570,34 @@ BEGIN
END IF;
CALL demo.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN demo.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_user = CUT.can_admin
UPDATE tmp_User t_USER
INNER JOIN demo.DOG_Calc_User_Temp CALC_USER_T
ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
SET t_USER.can_admin_user = CALC_USER_T.can_admin
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -529,10 +605,18 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -541,26 +625,53 @@ BEGIN
END IF;
CALL demo.p_dog_calc_user(
v_guid -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_User_Access (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
FROM demo.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM demo.DOG_Calc_User_Temp WHERE GUID = v_guid;
SELECT * FROM tmp_User_Access;
END IF;
IF NOT EXISTS (
SELECT can_view
FROM demo.DOG_Calc_User_Temp CUT
WHERE
CUT.GUID = v_guid
AND can_view = 1
) THEN
IF NOT EXISTS (SELECT * FROM tmp_User t_USER WHERE t_USER.can_view = 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -569,11 +680,12 @@ BEGIN
VALUES (
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('You do not have view permissions for ', (SELECT name FROM demo.DOG_Permission P INNER JOIN demo.DOG_Calc_User_Temp CUT ON P.id_permission = CUT.id_permission_required WHERE GUID = v_guid AND IFNULL(can_view, 0) = 0 LIMIT 1))
, CONCAT(
'You do not have view permissions for '
, (SELECT PERMISSION.name FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.id_permission = v_id_permission_user LIMIT 1)
)
)
;
ELSE
SET a_debug := a_debug;
END IF;
CALL demo.p_dog_clear_calc_user( v_guid, FALSE );
@@ -582,34 +694,25 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Dog_Calc_Dog;
SELECT * FROM tmp_User;
END IF;
DELETE FROM tmp_Dog_Calc_Dog;
DELETE FROM tmp_User;
END IF;
-- Returns
/* NULL record required for flask sql_alchemy to detect result set */
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
DELETE FROM tmp_User;
INSERT INTO tmp_User ( id_user )
VALUES ( NULL );
END IF;
SELECT
U.id_user
, U.id_user_auth0
, U.firstname
, U.surname
, U.email
, U.is_email_verified
, U.is_super_user
, t_U.can_admin_dog
, t_U.can_admin_user
, v_is_new AS is_new
FROM tmp_User t_U
INNER JOIN demo.DOG_User U ON t_U.id_user = U.id_user
USER.id_user
, USER.id_user_auth0
, USER.firstname
, USER.surname
, USER.email
, USER.is_email_verified
, USER.is_super_user
, t_USER.can_admin_dog
, t_USER.can_admin_user
FROM tmp_User t_USER
INNER JOIN demo.DOG_User USER ON t_USER.id_user = USER.id_user
;
# Errors
@@ -628,14 +731,14 @@ BEGIN
;
IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_User;
SELECT * FROM tmp_User_Access;
END IF;
-- Clean up
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
IF a_debug = 1 THEN
@@ -645,43 +748,24 @@ END //
DELIMITER ;
/*
CALL p_dog_get_many_user (
NULL
, 'google-oauth2|109567376920138999933'
, False
, False
-- , False
, NULL
, 'google-oauth2|109567376920138999933'
, 0
);
NULL # a_id_user
, 'auth0|6582b95c895d09a70ba10fef' # a_id_user_auth0
, 0 # a_get_all_user
, 0 # a_get_inactive_user
-- , 0 # a_get_first_user_only
, NULL # a_ids_user
, 'auth0|6582b95c895d09a70ba10fef' # a_ids_user_auth0
, 0 -- a_debug
);*/
/*
select * FROM demo.DOG_Calc_User_Temp;
delete FROM demo.DOG_Calc_User_Temp;
SELECT *
FROM demo.DOG_USER;
*/
CALL p_dog_get_many_user(
NULL -- :a_id_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_id_user_auth0,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_id_user,
, 1 -- :a_get_all_user,
, 0 -- :a_get_inactive_user,
-- , 0 -- :a_get_first_user_only,
, NULL -- :a_ids_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_ids_user_auth0
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- :a_require_all_id_search_filters_met,
, 1 -- :a_require_any_id_search_filters_met,
, 0 -- :a_require_all_non_id_search_filters_met,
@@ -689,4 +773,3 @@ CALL p_dog_get_many_user(
, 0 -- a_debug
);
*/

View File

@@ -8,12 +8,13 @@ DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DELIMITER //
CREATE PROCEDURE p_dog_get_many_user (
IN a_id_user INT
, IN a_id_user_auth0 VARCHAR(200)
, IN a_auth0_id_user VARCHAR(200)
, IN a_get_all_user BIT
, IN a_get_inactive_user BIT
, IN a_ids_user TEXT
, IN a_ids_user_auth0 TEXT
, IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
@@ -34,6 +35,7 @@ BEGIN
DECLARE v_id_permission_user_admin INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_permission_required VARCHAR(4000);
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT;
DECLARE v_rank_max INT;
DECLARE v_time_start TIMESTAMP(6);
@@ -100,8 +102,9 @@ BEGIN
SET a_get_all_user := IFNULL(a_get_all_user, 1);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_user_auth0 := TRIM(IFNULL(a_ids_user_auth0, ''));
SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
@@ -111,12 +114,13 @@ BEGIN
IF a_debug = 1 THEN
SELECT
a_id_user
, a_id_user_auth0
, a_auth0_id_user
, a_get_all_user
, a_get_inactive_user
, a_ids_user
, a_ids_user_auth0
, a_auth0_ids_user
, a_names_user
, a_emails_user
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -125,18 +129,36 @@ BEGIN
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
CREATE TEMPORARY TABLE tmp_User (
id_user INT NULL
, can_admin_dog BIT NULL
, can_admin_user BIT NULL
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
, can_admin_dog BIT
, can_admin_user BIT
);
CREATE TEMPORARY TABLE tmp_User_Access (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
);
CREATE TEMPORARY TABLE tmp_Msg_Error (
@@ -145,7 +167,7 @@ BEGIN
, code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL
);
/*
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
@@ -163,14 +185,13 @@ BEGIN
, as_int INT NULL
);
DELETE FROM tmp_Split_Name;
IF ISNULL(a_id_user) AND NOT ISNULL(a_id_user_auth0) THEN
SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_id_user_auth0 LIMIT 1);
IF ISNULL(a_id_user) AND NOT ISNULL(a_auth0_id_user) THEN
SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_auth0_id_user LIMIT 1);
END IF;
IF
ISNULL(a_id_user)
AND ISNULL(a_id_user_auth0)
AND ISNULL(a_auth0_id_user)
THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -186,7 +207,7 @@ BEGIN
END IF;
SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_ids_user_auth0 = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN
@@ -248,7 +269,7 @@ BEGIN
-- Auth0 User IDs
IF v_has_filter_user_auth0_id = 1 THEN
CALL parts.p_core_split(v_guid, a_ids_user_auth0, ',', FALSE);
CALL parts.p_core_split(v_guid, a_auth0_ids_user, ',', FALSE);
INSERT INTO tmp_Split_Auth0_Id (
substring
@@ -446,14 +467,25 @@ BEGIN
SELECT * FROM tmp_User;
END IF;
*/
-- Calculated fields
-- Can admin dog
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
@@ -463,26 +495,54 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN parts.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_dog = CUT.can_admin
INSERT INTO tmp_User (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
, can_admin_dog
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
, CALC_USER_T.can_admin AS can_admin_dog
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -490,11 +550,19 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
@@ -502,26 +570,34 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN parts.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_user = CUT.can_admin
UPDATE tmp_User t_USER
INNER JOIN parts.DOG_Calc_User_Temp CALC_USER_T
ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
SET t_USER.can_admin_user = CALC_USER_T.can_admin
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -529,10 +605,18 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -541,26 +625,53 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_User_Access (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
SELECT * FROM tmp_User_Access;
END IF;
IF NOT EXISTS (
SELECT can_view
FROM parts.DOG_Calc_User_Temp CUT
WHERE
CUT.GUID = v_guid
AND can_view = 1
) THEN
IF NOT EXISTS (SELECT * FROM tmp_User t_USER WHERE t_USER.can_view = 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -569,11 +680,12 @@ BEGIN
VALUES (
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('You do not have view permissions for ', (SELECT name FROM parts.DOG_Permission P INNER JOIN parts.DOG_Calc_User_Temp CUT ON P.id_permission = CUT.id_permission_required WHERE GUID = v_guid AND IFNULL(can_view, 0) = 0 LIMIT 1))
, CONCAT(
'You do not have view permissions for '
, (SELECT PERMISSION.name FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.id_permission = v_id_permission_user LIMIT 1)
)
)
;
ELSE
SET a_debug := a_debug;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
@@ -582,34 +694,25 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Dog_Calc_Dog;
SELECT * FROM tmp_User;
END IF;
DELETE FROM tmp_Dog_Calc_Dog;
DELETE FROM tmp_User;
END IF;
-- Returns
/* NULL record required for flask sql_alchemy to detect result set */
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
DELETE FROM tmp_User;
INSERT INTO tmp_User ( id_user )
VALUES ( NULL );
END IF;
SELECT
U.id_user
, U.id_user_auth0
, U.firstname
, U.surname
, U.email
, U.is_email_verified
, U.is_super_user
, t_U.can_admin_dog
, t_U.can_admin_user
, v_is_new AS is_new
FROM tmp_User t_U
INNER JOIN parts.DOG_User U ON t_U.id_user = U.id_user
USER.id_user
, USER.id_user_auth0
, USER.firstname
, USER.surname
, USER.email
, USER.is_email_verified
, USER.is_super_user
, t_USER.can_admin_dog
, t_USER.can_admin_user
FROM tmp_User t_USER
INNER JOIN parts.DOG_User USER ON t_USER.id_user = USER.id_user
;
# Errors
@@ -628,14 +731,14 @@ BEGIN
;
IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_User;
SELECT * FROM tmp_User_Access;
END IF;
-- Clean up
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
IF a_debug = 1 THEN
@@ -645,43 +748,24 @@ END //
DELIMITER ;
/*
CALL p_dog_get_many_user (
NULL
, 'google-oauth2|109567376920138999933'
, False
, False
-- , False
, NULL
, 'google-oauth2|109567376920138999933'
, 0
);
NULL # a_id_user
, 'auth0|6582b95c895d09a70ba10fef' # a_id_user_auth0
, 0 # a_get_all_user
, 0 # a_get_inactive_user
-- , 0 # a_get_first_user_only
, NULL # a_ids_user
, 'auth0|6582b95c895d09a70ba10fef' # a_ids_user_auth0
, 0 -- a_debug
);*/
/*
select * FROM parts.DOG_Calc_User_Temp;
delete FROM parts.DOG_Calc_User_Temp;
SELECT *
FROM parts.DOG_USER;
*/
CALL p_dog_get_many_user(
NULL -- :a_id_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_id_user_auth0,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_id_user,
, 1 -- :a_get_all_user,
, 0 -- :a_get_inactive_user,
-- , 0 -- :a_get_first_user_only,
, NULL -- :a_ids_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_ids_user_auth0
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- :a_require_all_id_search_filters_met,
, 1 -- :a_require_any_id_search_filters_met,
, 0 -- :a_require_all_non_id_search_filters_met,
@@ -689,4 +773,3 @@ CALL p_dog_get_many_user(
, 0 -- a_debug
);
*/

View File

@@ -6,29 +6,39 @@ DROP PROCEDURE IF EXISTS p_dog_calc_user;
DELIMITER //
CREATE PROCEDURE p_dog_calc_user (
IN a_guid BINARY(36)
, IN a_ids_user TEXT
, IN a_get_all_user BIT
, IN a_get_inactive_user BIT
, IN a_ids_permission TEXT
, IN a_ids_access_level TEXT
, IN a_ids_user TEXT
, IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_ids_permission_required TEXT
, IN a_ids_access_level_required TEXT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(200);
DECLARE v_code_type_error_no_permission VARCHAR(200);
DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user BIT;
DECLARE v_has_filter_access_level BIT;
DECLARE v_id_access_level INT;
DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user_auth0_id BIT;
DECLARE v_has_filter_user_email BIT;
DECLARE v_has_filter_user_id BIT;
DECLARE v_has_filter_user_name BIT;
DECLARE v_id_access_level_required INT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_permission INT;
DECLARE v_id_permission_required INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_row_delete VARCHAR(500);
DECLARE v_priority_access_level_view INT;
DECLARE v_priority_access_level_edit INT;
DECLARE v_priority_access_level_admin INT;
DECLARE v_priority_access_level INT;
DECLARE v_priority_access_level_edit INT;
DECLARE v_priority_access_level_none INT;
DECLARE v_priority_access_level_required INT;
DECLARE v_priority_access_level_view INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
@@ -81,33 +91,63 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
SET v_code_type_error_no_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE id_type = 2);
SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
SET v_priority_access_level_view = (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level_view);
SET v_priority_access_level_edit = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_priority_access_level_admin = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
SET v_priority_access_level_none = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'NONE' LIMIT 1);
CALL parts.p_validate_guid ( a_guid );
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_get_all_user := IFNULL(a_get_all_user, 0);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_permission := TRIM(IFNULL(a_ids_permission, ''));
SET a_ids_access_level := TRIM(IFNULL(a_ids_access_level, ''));
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
SET a_ids_permission_required := TRIM(IFNULL(a_ids_permission_required, ''));
SET a_ids_access_level_required := TRIM(IFNULL(a_ids_access_level_required, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 0);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 0);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 0);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_ids_user
, a_get_all_user
, a_get_inactive_user
, a_ids_permission
, a_ids_access_level
, a_ids_user
, a_auth0_ids_user
, a_names_user
, a_emails_user
, a_ids_permission_required
, a_ids_access_level_required
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_priority_access_level_view
, v_priority_access_level_edit
, v_priority_access_level_admin
, v_id_access_level_view
, v_id_type_error_bad_data
, v_code_type_error_bad_data
;
END IF;
-- Clear previous proc results
DROP TABLE IF EXISTS tmp_Split_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Email_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Name_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Auth0_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User;
-- Permanent Table
@@ -118,15 +158,13 @@ BEGIN
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
);
CREATE TEMPORARY TABLE tmp_User_Calc_User (
id_user INT NOT NULL
, is_super_user BIT NOT NULL
, priority_access_level INT NOT NULL
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User (
@@ -136,25 +174,45 @@ BEGIN
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Calc_User (
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Calc_User;
DELETE FROM tmp_Split_Id_Calc_User;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Auth0_Id_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Auth0_Id_Calc_User;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Name_Calc_User;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Email_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Email_Calc_User;
SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END;
SET v_has_filter_access_level = CASE WHEN a_ids_access_level = '' THEN 0 ELSE 1 END;
SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
SET v_priority_access_level_view = (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level_view);
SET v_priority_access_level_edit = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_priority_access_level_admin = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
SET v_has_filter_user_id = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id = CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name = CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_email = CASE WHEN a_emails_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_permission = CASE WHEN a_ids_permission_required = '' THEN 0 ELSE 1 END;
SET v_has_filter_access_level = CASE WHEN a_ids_access_level_required = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN
SELECT
v_priority_access_level_view
, v_priority_access_level_edit
, v_priority_access_level_admin
v_has_filter_user_id
, v_has_filter_user_auth0_id
, v_has_filter_user_name
, v_has_filter_user_email
, v_has_filter_permission
, v_has_filter_access_level
;
END IF;
@@ -164,17 +222,15 @@ BEGIN
SELECT
'p_core_split'
, a_guid
, a_ids_access_level
, a_ids_access_level_required
, ','
, a_debug
;
END IF;
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_access_level, ',', a_debug);
CALL parts.p_core_split(a_guid, a_ids_access_level_required, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
INSERT INTO tmp_Split_Id_Calc_User (
substring
, as_int
)
@@ -188,9 +244,9 @@ BEGIN
;
IF a_debug = 1 THEN
SELECT 'Access Levels split', a_ids_access_level;
SELECT 'Access Levels split', a_ids_access_level_required;
SELECT *
FROM tmp_Split_Calc_User;
FROM tmp_Split_Id_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
@@ -198,7 +254,7 @@ BEGIN
# Invalid IDs
IF EXISTS (
SELECT t_SPLIT.substring
FROM tmp_Split_Calc_User t_SPLIT
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE
ISNULL(t_SPLIT.as_int)
@@ -214,7 +270,7 @@ BEGIN
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive access level IDs: ', GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','))
FROM tmp_Split_Calc_User t_SPLIT
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE
ISNULL(t_SPLIT.as_int)
@@ -224,9 +280,9 @@ BEGIN
SET v_has_filter_access_level = 0;
ELSE
SET v_id_access_level := (
SET v_id_access_level_required := (
SELECT ACCESS_LEVEL.id_access_level
FROM tmp_Split_Calc_User t_SPLIT
FROM tmp_Split_Id_Calc_User t_SPLIT
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
@@ -235,21 +291,17 @@ BEGIN
);
END IF;
END IF;
DELETE FROM tmp_Split_Calc_User;
DELETE FROM tmp_Split_Id_Calc_User;
IF ISNULL(v_id_access_level) THEN
SET v_id_access_level = v_id_access_level_view;
IF ISNULL(v_id_access_level_required) THEN
SET v_id_access_level_required = v_id_access_level_view;
END IF;
SET v_priority_access_level := (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level LIMIT 1);
-- Permission IDs
IF v_has_filter_permission = 1 THEN
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug);
CALL parts.p_core_split(a_guid, a_ids_permission_required, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
INSERT INTO tmp_Split_Id_Calc_User (
substring
, as_int
)
@@ -263,15 +315,15 @@ BEGIN
;
IF a_debug = 1 THEN
SELECT 'Permissions split', a_ids_permission;
SELECT 'Permissions split', a_ids_permission_required;
SELECT *
FROM tmp_Split_Calc_User;
FROM tmp_Split_Id_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (SELECT PERMISSION.id_permission FROM tmp_Split_Calc_User t_SPLIT LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(PERMISSION.id_permission) OR PERMISSION.active = 0) THEN
IF EXISTS (SELECT PERMISSION.id_permission FROM tmp_Split_Id_Calc_User t_SPLIT LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(PERMISSION.id_permission) OR PERMISSION.active = 0) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
@@ -281,7 +333,7 @@ BEGIN
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
WHERE
ISNULL(t_SPLIT.as_int)
@@ -291,7 +343,7 @@ BEGIN
ELSE
SET v_id_permission_required := (
SELECT PERMISSION.id_permission
FROM tmp_Split_Calc_User t_SPLIT
FROM tmp_Split_Id_Calc_User t_SPLIT
INNER JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL ON PERMISSION.id_access_level_required = ACCESS_LEVEL.id_access_level
ORDER BY ACCESS_LEVEL.priority ASC
@@ -299,129 +351,398 @@ BEGIN
);
END IF;
END IF;
DELETE FROM tmp_Split_Calc_User;
DELETE FROM tmp_Split_Id_Calc_User;
SET v_priority_access_level_required := (
SELECT ACCESS_LEVEL.priority
FROM parts.DOG_Access_Level ACCESS_LEVEL
LEFT JOIN parts.DOG_Permission PERMISSION ON ACCESS_LEVEL.id_access_level = PERMISSION.id_access_level_required
WHERE
ACCESS_LEVEL.id_access_level = v_id_access_level_required
OR PERMISSION.id_permission = v_id_permission_required
ORDER BY ACCESS_LEVEL.priority
LIMIT 1
);
# Users
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
;
# Ids
IF v_has_filter_user_id = 1 THEN
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug);
INSERT INTO tmp_Split_Id_Calc_User (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Id split', a_ids_user;
SELECT *
FROM tmp_Split_Id_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
END IF;
END IF;
# Auth0 Ids
IF v_has_filter_user_auth0_id = 1 THEN
CALL parts.p_core_split(a_guid, a_auth0_ids_user, ',', a_debug);
INSERT INTO tmp_Split_Auth0_Id_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Auth0 Id split', a_auth0_ids_user;
SELECT *
FROM tmp_Split_Auth0_Id_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.substring = USER.id_user_auth0
WHERE
ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user Auth0 IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.substring = USER.id_user_auth0
WHERE
ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
END IF;
END IF;
# Names
IF v_has_filter_user_name = 1 THEN
CALL parts.p_core_split(a_guid, a_names_user, ',', a_debug);
INSERT INTO tmp_Split_Name_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Name split', a_names_user;
SELECT *
FROM tmp_Split_Name_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
END IF;
# Emails
IF v_has_filter_user_email = 1 THEN
CALL parts.p_core_split(a_guid, a_emails_user, ',', a_debug);
INSERT INTO tmp_Split_Email_Calc_User ( substring )
SELECT SPLIT_T.substring
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'User Email split', a_emails_user;
SELECT *
FROM tmp_Split_Email_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
END IF;
-- Get all users
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
INSERT INTO tmp_Calc_User (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
/*
, priority_access_level_user
, can_view
, can_edit
, can_admin
*/
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
User_Id_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Id_Calc_User t_SPLIT_ID
INNER JOIN parts.DOG_User USER ON t_SPLIT_ID.as_int = USER.id_user
)
, User_Auth0_Id_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Auth0_Id_Calc_User t_SPLIT_AUTH0_ID
INNER JOIN parts.DOG_User USER ON t_SPLIT_AUTH0_ID.substring = USER.id_user_auth0
)
, User_Name_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Name_Calc_User t_SPLIT_NAME
INNER JOIN parts.DOG_User USER ON CONCAT(USER.firstname, ' ', USER.surname) LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE IFNULL(t_SPLIT_NAME.substring, '') <> ''
)
, User_Email_Filter AS (
SELECT USER.id_user
FROM tmp_Split_Email_Calc_User t_SPLIT_EMAIL
INNER JOIN demo.DOG_User USER ON USER.email LIKE CONCAT('%', t_SPLIT_EMAIL.substring, '%')
WHERE IFNULL(t_SPLIT_EMAIL.substring, '') <> ''
)
, User_Filters AS (
SELECT
USER_COMBINED.id_user
, MAX(USER_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(USER_COMBINED.does_meet_auth0_id_filter) AS does_meet_auth0_id_filter
, MAX(USER_COMBINED.does_meet_name_filter) AS does_meet_name_filter
, MAX(USER_COMBINED.does_meet_email_filter) AS does_meet_email_filter
FROM (
SELECT
USER_ID_FILTER.id_user
, 1 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Id_Filter USER_ID_FILTER
UNION
SELECT
USER_AUTH0_ID_FILTER.id_user
, 0 AS does_meet_id_filter
, 1 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Auth0_Id_Filter USER_AUTH0_ID_FILTER
UNION
SELECT
USER_NAME_FILTER.id_user
, 0 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 1 AS does_meet_name_filter
, 0 AS does_meet_email_filter
FROM User_Name_Filter USER_NAME_FILTER
UNION
SELECT
USER_EMAIL_FILTER.id_user
, 0 AS does_meet_id_filter
, 0 AS does_meet_auth0_id_filter
, 0 AS does_meet_name_filter
, 1 AS does_meet_email_filter
FROM User_Email_Filter USER_EMAIL_FILTER
) USER_COMBINED
GROUP BY USER_COMBINED.id_user
)
SELECT
USER.id_user -- id_user
, v_id_permission_required -- id_permission_required
, v_priority_access_level_required -- priority_access_level_required
, IFNULL(USER.is_super_user, 0) AS is_super_user
, CASE WHEN
(
v_has_filter_user_id = 0
AND v_has_filter_user_auth0_id = 0
)
OR IFNULL(USER_FILTERS.does_meet_id_filter, 0) = 1
OR IFNULL(USER_FILTERS.does_meet_auth0_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_user_name = 0
AND v_has_filter_user_email = 0
)
OR IFNULL(USER_FILTERS.does_meet_name_filter, 0) = 1
OR IFNULL(USER_FILTERS.does_meet_email_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM parts.DOG_User USER
LEFT JOIN User_Filters USER_FILTERS ON USER.id_user = USER_FILTERS.id_user
WHERE
(
a_get_all_user = 1
OR (
v_has_filter_user_id = 1
AND USER_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_user_auth0_id = 1
AND USER_FILTERS.does_meet_auth0_id_filter = 1
)
OR (
v_has_filter_user_name = 1
AND USER_FILTERS.does_meet_name_filter = 1
)
OR (
v_has_filter_user_email = 1
AND USER_FILTERS.does_meet_email_filter = 1
)
)
AND (
a_get_inactive_user = 1
OR USER.active = 1
)
;
END IF;
DELETE FROM tmp_Split_Id_Calc_User;
DELETE FROM tmp_Split_Auth0_Id_Calc_User;
DELETE FROM tmp_Split_Name_Calc_User;
DELETE FROM tmp_Split_Email_Calc_User;
IF a_debug = 1 THEN
SELECT 'Users split', a_ids_user;
SELECT *
FROM tmp_Split_Calc_User;
SELECT 'After get Users';
SELECT * FROM tmp_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
IF a_debug = 1 THEN
SELECT v_id_permission_required, v_id_access_level, v_priority_access_level;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM tmp_Msg_Error_Calc_User;
END IF;
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_USER
FROM tmp_Calc_User t_USER
WHERE
(
a_require_all_id_search_filters_met = 1
AND t_USER.does_meet_id_filters = 0
)
OR (
a_require_all_non_id_search_filters_met = 1
AND t_USER.does_meet_non_id_filters = 0
)
OR (
a_require_any_id_search_filters_met = 1
AND t_USER.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_USER.does_meet_non_id_filters = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
;
ELSE
IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN
INSERT INTO tmp_Split_Calc_User ( substring, as_int )
VALUES ( '', NULL );
END IF;
INSERT INTO tmp_User_Calc_User (
id_user
, is_super_user
, priority_access_level
)
SELECT
USER.id_user
, IFNULL(USER.is_super_user, 0) AS is_super_user
, IFNULL(MIN(ACCESS_LEVEL.priority), v_priority_access_level_view) AS priority_access_level
FROM tmp_Split_Calc_User t_SPLIT
INNER JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
LEFT JOIN parts.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active
LEFT JOIN parts.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active
GROUP BY USER.id_user
;
INSERT INTO tmp_Calc_User (
id_user
, id_permission_required
, priority_access_level_required
, priority_access_level_user
, is_super_user
)
SELECT
t_USER.id_user
, v_id_permission_required
, v_priority_access_level AS priority_access_level_required
, t_USER.is_super_user AS is_super_user
, t_USER.priority_access_level AS priority_access_level_user
FROM tmp_User_Calc_User t_USER
;
# SET v_has_filter_user = EXISTS ( SELECT * FROM tmp_User_Calc_User LIMIT 1 );
END IF;
DELETE FROM tmp_Split_Calc_User;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Users';
SELECT * FROM tmp_Calc_User;
END IF;
-- Calculated fields
-- Priority Access Level User
WITH User_Access_Level AS (
SELECT
USER.id_user
, MIN(IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none)) AS priority_access_level
FROM parts.DOG_User USER -- tmp_Calc_User t_CALC_USER
LEFT JOIN parts.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
LEFT JOIN parts.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active = 1
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
GROUP BY USER.id_user
)
UPDATE tmp_Calc_User t_CALC_USER
INNER JOIN User_Access_Level USER_ACCESS_LEVEL ON t_CALC_USER.id_user = USER_ACCESS_LEVEL.id_user
SET
t_CALC_USER.priority_access_level_user = USER_ACCESS_LEVEL.priority_access_level
, t_CALC_USER.has_access = CASE WHEN USER_ACCESS_LEVEL.priority_access_level <= v_priority_access_level_required THEN 1 ELSE 0 END
;
-- Has access
UPDATE tmp_Calc_User t_CALC_USER
SET
t_CALC_USER.can_view = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_view AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
, t_CALC_USER.can_edit = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_edit AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
, t_CALC_USER.can_admin = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_admin AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
t_CALC_USER.can_view = CASE WHEN
t_CALC_USER.is_super_user = 1
OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_view
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
, t_CALC_USER.can_edit = CASE WHEN
t_CALC_USER.is_super_user = 1
OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_edit
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
, t_CALC_USER.can_admin = CASE WHEN
t_CALC_USER.is_super_user = 1
OR (
t_CALC_USER.priority_access_level_user <= v_priority_access_level_admin
AND t_CALC_USER.has_access = 1
)
THEN 1 ELSE 0 END
;
-- Export data to staging table
@@ -446,7 +767,7 @@ BEGIN
, t_CALC_USER.priority_access_level_required
, t_CALC_USER.is_super_user
, t_CALC_USER.priority_access_level_user
, CASE WHEN t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required THEN 1 ELSE 0 END AS has_access
, t_CALC_USER.has_access
, t_CALC_USER.can_view
, t_CALC_USER.can_edit
, t_CALC_USER.can_admin
@@ -473,17 +794,19 @@ BEGIN
END IF;
IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_Msg_Error_Calc_User;
SELECT * FROM tmp_Calc_User;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = a_guid;
CALL parts.p_dog_clear_calc_user ( a_guid, a_debug );
END IF;
-- Clean up
DROP TABLE IF EXISTS tmp_Split_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Email_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Name_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Auth0_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Id_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User;
IF a_debug = 1 THEN
@@ -492,30 +815,23 @@ BEGIN
END //
DELIMITER ;
/*
CALL parts.p_dog_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
CALL parts.p_dog_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
DELETE FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
*/
IN a_guid BINARY(36)
, IN a_get_all_user BIT
, IN a_get_inactive_user BIT
, IN a_ids_user TEXT
, IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_ids_permission_required TEXT
, IN a_ids_access_level_required TEXT
, IN a_show_errors BIT
, IN a_debug BIT
-- SELECT * FROM parts.DOG_Calc_User_Temp;
@@ -526,10 +842,18 @@ DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
CALL parts.p_dog_calc_user(
'chips '-- a_guid
, '1' -- a_ids_user
, 0 -- a_get_all_user
, 0 -- a_get_inactive_user
, '8' -- a_ids_permission
, '1' -- a_ids_access_level
, '1' -- a_ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, '8' -- a_ids_permission_required
, '1' -- a_ids_access_level_required
, 1 -- a_show_errors
, 0 -- a_debug
);
@@ -538,3 +862,4 @@ CALL parts.p_dog_clear_calc_user ( 'chips ', 0 );
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
*/

View File

@@ -348,6 +348,11 @@ BEGIN
DELETE FROM tmp_Split_Id_Calc_Dog;
DELETE FROM tmp_Split_Name_Calc_Dog;
IF a_debug = 1 THEN
SELECT 'After get all dogs';
SELECT * FROM tmp_Dog_Calc_Dog;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Dog t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
@@ -373,13 +378,26 @@ BEGIN
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter dogs';
SELECT * FROM tmp_Dog_Calc_Dog;
END IF;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -388,8 +406,16 @@ BEGIN
CALL parts.p_dog_calc_user(
a_guid -- a_guid
, a_id_user -- a_id_user
, FALSE -- a_get_inactive_user
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
@@ -401,7 +427,7 @@ BEGIN
INTO
v_can_view
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
WHERE CALC_USER_T.guid = a_guid
LIMIT 1
;

View File

@@ -146,9 +146,17 @@ BEGIN
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, a_debug -- a_debug
@@ -157,8 +165,16 @@ BEGIN
CALL parts.p_dog_calc_user(
v_guid-- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- a_get_inactive_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors

View File

@@ -214,10 +214,18 @@ BEGIN
IF a_debug = 1 THEN
SELECT
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_admin
, v_id_permission_dog_new
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_debug
;
END IF;
@@ -225,9 +233,17 @@ BEGIN
-- Can Admin
CALL parts.p_dog_calc_user(
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_admin-- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -250,9 +266,17 @@ BEGIN
-- Can Create
CALL parts.p_dog_calc_user(
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_new-- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_create -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug

View File

@@ -891,9 +891,17 @@ BEGIN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -902,8 +910,16 @@ BEGIN
CALL parts.p_dog_calc_user(
a_guid -- a_guid
, a_id_user -- a_id_user
, FALSE -- a_get_inactive_user
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors

View File

@@ -182,9 +182,17 @@ BEGIN
IF a_debug = 1 THEN
SELECT
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -193,8 +201,16 @@ BEGIN
CALL parts.p_dog_calc_user(
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors

View File

@@ -285,9 +285,17 @@ BEGIN
IF a_debug = 1 THEN
SELECT
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- A_ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -296,9 +304,17 @@ BEGIN
CALL parts.p_dog_calc_user(
v_guid -- a_guid
, a_id_user -- a_ids_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view -- a_ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug

View File

@@ -76,6 +76,12 @@ VALUES
, 'Admin'
, 1
)
, (
4
, 'NONE'
, 'None'
, 999
)
;
-- Permission Groups

View File

@@ -252,8 +252,16 @@ BEGIN
IF a_debug = 1 THEN
SELECT
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
@@ -263,8 +271,16 @@ BEGIN
CALL parts.p_dog_calc_user(
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors

View File

@@ -289,9 +289,17 @@ BEGIN
IF a_debug = 1 THEN
SELECT
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_understanding_level_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -300,9 +308,17 @@ BEGIN
CALL parts.p_dog_calc_user(
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_understanding_level_view -- ids_permission
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug