Fix: Hamburger menu styles.

This commit is contained in:
2025-08-07 10:39:04 +01:00
parent 3d2b753b79
commit e87490c3de
62 changed files with 3113 additions and 941 deletions

View File

@@ -1,45 +1,26 @@
USE demo;
-- Clear previous proc
DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DROP PROCEDURE IF EXISTS p_dog_save_user;
DELIMITER //
CREATE PROCEDURE demo.p_dog_get_many_user (
IN a_id_user INT
, 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_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user TEXT
, IN a_get_all_company BIT
, IN a_get_inactive_company BIT
, IN a_ids_company 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_debug BIT
CREATE PROCEDURE p_dog_save_user (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(50);
DECLARE v_guid BINARY(36);
DECLARE v_has_filter_user_auth0_id BIT;
DECLARE v_has_filter_user_id BIT;
DECLARE v_has_filter_user_name BIT;
DECLARE v_id_access_level_admin INT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_permission_dog_admin INT;
DECLARE v_id_permission_user INT;
DECLARE v_id_permission_user_admin INT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT;
DECLARE v_id_permission_product INT;
DECLARE v_id_permission_user_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_access_level_edit INT;
DECLARE v_is_super_user BIT;
DECLARE v_rank_max INT;
DECLARE v_can_edit_user BIT;
DECLARE v_priority_access_level_none INT;
DECLARE v_priority_access_level_user INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
@@ -53,532 +34,465 @@ BEGIN
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
id_type
, code
, msg
)
SELECT
MET.id_type
MET.id_type
, @errno
, @text
FROM demo.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
SELECT *
FROM tmp_Msg_Error;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_id_access_level_admin := (SELECT id_access_level FROM demo.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
SET v_id_access_level_view := (SELECT id_access_level FROM demo.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
SET v_id_permission_dog_admin := (SELECT id_permission FROM demo.DOG_Permission WHERE code = 'DOG_ADMIN' LIMIT 1);
SET v_id_permission_user := (SELECT id_permission FROM demo.DOG_Permission WHERE code = 'USER_VIEW' LIMIT 1);
SET v_id_permission_user_admin := (SELECT id_permission FROM demo.DOG_Permission WHERE code = 'USER_ADMIN' LIMIT 1);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT id_type FROM demo.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
SET v_is_new := FALSE;
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM demo.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
SET v_id_permission_user_edit := (SELECT GROUP_CONCAT(PERMISSION.id_permission SEPARATOR ',') FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_CREATE' LIMIT 1);
SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.priority FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'NONE' LIMIT 1);
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_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);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_debug := IFNULL(a_debug, 0);
CALL demo.p_core_validate_guid ( a_guid );
IF a_debug = 1 THEN
DROP TABLE IF EXISTS tmp_Msg_Error;
DROP TABLE IF EXISTS tmp_User_Save_User;
CREATE TABLE tmp_User_Save_User (
id_user INT NOT NULL
, id_role INT
, id_role_previous INT
, id_user_auth0 VARCHAR(250)
, firstname VARCHAR(250)
, surname VARCHAR(250)
, email VARCHAR(254)
, is_email_verified BIT
, is_super_user BIT
, active BIT
, name_error VARCHAR(1000)
);
CREATE TABLE tmp_Msg_Error (
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
id_type INT NOT NULL,
code VARCHAR(250) NOT NULL,
msg TEXT NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_User_Save_User (
id_user
, id_user_auth0
, id_role
, firstname
, surname
, email
, is_email_verified
, is_super_user
, active
)
SELECT
USER_T.id_user
, USER_T.id_user_auth0
, USER_T.id_role
, IFNULL(USER_T.firstname, USER.firstname) AS firstname
, IFNULL(USER_T.surname, USER.surname) AS surname
, IFNULL(USER_T.email, USER.email) AS email
, IFNULL(USER_T.is_email_verified, USER.is_email_verified) AS is_email_verified
, IFNULL(USER_T.is_super_user, USER.is_super_user) AS is_super_user
, COALESCE(USER_T.active, USER.active, 1) AS active
FROM demo.DOG_User_Temp USER_T
LEFT JOIN demo.DOG_User USER ON USER_T.id_user = USER.id_user
WHERE USER_T.guid = a_guid
;
UPDATE tmp_User_Save_User t_USER
SET
t_USER.name_error = IFNULL(t_USER.email, t_USER.id_user_auth0)
;
-- Validation
-- Missing mandatory fields
-- role
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
LEFT JOIN demo.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
WHERE
ISNULL(t_USER.id_role)
OR ISNULL(ROLES.id_role)
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
a_id_user
, a_auth0_id_user
, a_get_all_user
, a_get_inactive_user
, a_ids_user
, 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
, a_require_any_non_id_search_filters_met
, a_debug
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have a role: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
LEFT JOIN demo.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
WHERE
ISNULL(t_USER.id_role)
OR ISNULL(ROLES.id_role)
;
END IF;
-- email
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.email) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an email: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.email)
;
END IF;
-- is_super_user
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.is_super_user) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an is super user field: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.is_super_user)
;
END IF;
-- is_email_verified
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.is_email_verified) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an is email verified: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.is_email_verified)
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
DROP TEMPORARY TABLE IF EXISTS tmp_Company;
CREATE TEMPORARY TABLE tmp_Company (
id_company INT NOT NULL
, name VARCHAR(250) NOT NULL
, website VARCHAR(1000)
, active BIT NOT NULL
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_User (
id_temp INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_company 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
);
-- Get old role
UPDATE tmp_User_Save_User t_USER
INNER JOIN demo.DOG_User_Role_Link USER_ROLE_LINK
ON t_USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
INNER JOIN demo.DOG_Role ROLES
ON USER_ROLE_LINK.id_role = ROLES.id_role
AND ROLES.active = 1
SET t_USER.id_role_previous = USER_ROLE_LINK.id_role
WHERE t_USER.id_user > 0
;
CREATE TEMPORARY TABLE tmp_User_Access (
id_temp 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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NOT NULL
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
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
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, 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
;
SELECT * FROM demo.DOG_Calc_User_Access_Temp;
END IF;
CALL demo.p_dog_calc_user_access(
v_guid -- guid
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, a_auth0_id_user -- a_auth0_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_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, v_id_permission_user_edit -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 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_Access_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
, 0 -- a_debug
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User_Access;
END IF;
IF NOT EXISTS (SELECT * FROM tmp_User_Access t_USER_ACCESS WHERE t_USER_ACCESS.has_access = 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_bad_data
, v_code_type_error_bad_data
, 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)
)
)
;
END IF;
CALL demo.p_dog_clear_calc_user_access( v_guid, FALSE );
END IF;
SET v_is_super_user := (SELECT IFNULL(t_USER_ACCESS.is_super_user, 0) FROM tmp_User_Access t_USER_ACCESS LIMIT 1);
-- Companies
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 -- v_guid
, a_id_user -- a_id_user
, a_get_all_company -- a_get_all_company
, a_get_inactive_company -- a_get_inactive_company
, a_ids_company -- a_ids_company
, a_names_company -- a_names_company
, a_websites_company -- a_websites_company
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL demo.p_dog_calc_company (
v_guid -- v_guid
, a_id_user -- a_id_user
, a_get_all_company -- a_get_all_company
, a_get_inactive_company -- a_get_inactive_company
, a_ids_company -- a_ids_company
, NULL -- a_names_company
, NULL -- a_websites_company
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met -- 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 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_Company (
id_company
, name
, website
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
COMPANY_T.id_company
, COMPANY_T.name
, COMPANY_T.website
, COMPANY_T.active
, COMPANY_T.does_meet_id_filters
, COMPANY_T.does_meet_non_id_filters
FROM demo.DOG_Company_Temp COMPANY_T
WHERE COMPANY_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Company;
END IF;
END IF;
CALL demo.p_dog_calc_user_access(
a_guid -- a_guid
, 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_user_edit -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
CASE WHEN IFNULL(CALC_USER_T.can_edit, 0) = 1 THEN 1 ELSE 0 END AS can_edit
, IFNULL(CALC_USER_T.is_super_user, 0) AS is_super_user
, IFNULL(CALC_USER_T.priority_access_level_user, v_priority_access_level_none) AS priority_access_level
INTO
v_can_edit_user
, v_is_super_user
, v_priority_access_level_user
FROM demo.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE
CALC_USER_T.GUID = a_guid
AND CALC_USER_T.id_user = a_id_user
AND CALC_USER_T.id_permission_required = v_id_permission_user_edit
;
-- 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_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
;
SELECT * FROM demo.DOG_Calc_User_Access_Temp;
END IF;
CALL demo.p_dog_calc_user_access(
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
);
INSERT INTO tmp_User (
id_user
, id_company
, 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
)
WITH Can_Access_User AS (
SELECT
USER.id_user
, t_COMPANY.id_company
, ROW_NUMBER() OVER (PARTITION BY USER.id_user ORDER BY CASE WHEN t_COMPANY.id_company IS NOT NULL THEN 1 ELSE 0 END DESC) AS index_user_company_link_in_user
FROM demo.DOG_User USER
LEFT JOIN demo.DOG_User_Company_Link USER_COMPANY_LINK ON USER.id_user = USER_COMPANY_LINK.id_user
LEFT JOIN tmp_Company t_COMPANY ON USER_COMPANY_LINK.id_company = t_COMPANY.id_company
)
SELECT
CALC_USER_T.id_user
, CAN_ACCESS_USER.id_company
, 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_Access_Temp CALC_USER_T
/*
LEFT JOIN demo.DOG_User_Company_Link USER_COMPANY_LINK ON CALC_USER_T.id_user = USER_COMPANY_LINK.id_user
LEFT JOIN tmp_Company t_COMPANY ON USER_COMPANY_LINK.id_company = t_COMPANY.id_company
*/
INNER JOIN Can_Access_User CAN_ACCESS_USER ON CALC_USER_T.id_user = CAN_ACCESS_USER.id_user
WHERE
CALC_USER_T.guid = v_guid
AND (
v_is_super_user = 1
OR CAN_ACCESS_USER.id_company IS NOT NULL
IF (
v_is_super_user = 0
AND EXISTS (
WITH User_Company AS (
SELECT USER_COMPANY_LINK.id_company
FROM demo.DOG_User_Company_Link USER_COMPANY_LINK
WHERE USER_COMPANY_LINK.id_user = a_id_user
)
SELECT *
FROM tmp_User_Save_User t_USER
LEFT JOIN User_Company USER_COMPANY ON t_USER.id_company = USER_COMPANY.id_company
WHERE USER_COMPANY.id_company IS NULL
)
) THEN
DELETE FROM tmp_Msg_Error;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to edit User(s) in other Company(s).'
)
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user_access( v_guid, FALSE );
END IF;
-- Can admin user
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_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
;
SELECT * FROM demo.DOG_Calc_User_Access_Temp;
END IF;
CALL demo.p_dog_calc_user_access(
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
);
UPDATE tmp_User t_USER
INNER JOIN demo.DOG_Calc_User_Access_Temp CALC_USER_T
ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
LEFT JOIN tmp_Company t_COMPANY ON t_USER.id_company = t_COMPANY.id_company
SET t_USER.can_admin_user = CALC_USER_T.can_admin
WHERE
v_is_super_user = 1
OR t_COMPANY.id_company IS NOT NULL
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL demo.p_dog_clear_calc_user_access( v_guid, FALSE );
END IF;
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_User;
END IF;
END IF;
DELETE FROM tmp_User;
IF (
v_is_super_user = 0
AND v_priority_access_level_user > v_priority_access_level_admin
AND EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
WHERE t_USER.id_user <> a_id_user
)
) THEN
DELETE FROM tmp_Msg_Error;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to edit other Users.'
)
;
END IF;
-- Returns
SELECT
USER.id_user
, USER.id_user_auth0
, USER.firstname
, USER.surname
, USER.email
, USER.is_email_verified
, t_USER.id_company
, t_COMPANY.name AS name_company
, t_COMPANY.website AS website_company
, t_USER.is_super_user
, t_USER.priority_access_level_user AS priority_access_level
, t_USER.can_admin_dog
, t_USER.can_admin_user
FROM tmp_User t_USER
-- INNER JOIN tmp_User_Access t_USER_ACCESS
INNER JOIN demo.DOG_User USER ON t_USER.id_user = USER.id_user
LEFT JOIN tmp_Company t_COMPANY ON t_USER.id_company = t_COMPANY.id_company
-- Attempt to change role they can't access
-- role from
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
INNER JOIN demo.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN demo.DOG_User_Role_Link USER_ROLE_LINK ON t_USER.id_user = USER_ROLE_LINK.id_user
INNER JOIN demo.DOG_Role ROLES ON USER_ROLE_LINK.id_role = ROLES.id_role
INNER JOIN demo.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) have role(s) you cannot access: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
INNER JOIN demo.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN demo.DOG_User_Role_Link USER_ROLE_LINK ON t_USER.id_user = USER_ROLE_LINK.id_user
INNER JOIN demo.DOG_Role ROLES ON USER_ROLE_LINK.id_role = ROLES.id_role
INNER JOIN demo.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
;
END IF;
-- role to
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
INNER JOIN demo.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
INNER JOIN demo.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) have role(s) you cannot access: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
INNER JOIN demo.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
INNER JOIN demo.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
;
END IF;
CALL demo.p_dog_clear_calc_user_access( a_guid, 0 );
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN
START TRANSACTION;
INSERT INTO demo.DOG_User_Change_Set ( comment )
VALUES ( a_comment )
;
SET v_id_change_set := LAST_INSERT_ID();
UPDATE demo.DOG_User USER
INNER JOIN tmp_User_Save_User t_USER ON USER.id_user = t_USER.id_user
SET
USER.id_user_auth0 = t_USER.id_user_auth0
, USER.firstname = t_USER.firstname
, USER.surname = t_USER.surname
, USER.email = t_USER.email
, USER.is_email_verified = t_USER.is_email_verified
, USER.is_super_user = t_USER.is_super_user
, USER.active = t_USER.active
, USER.id_change_set = v_id_change_set
;
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
WHERE
t_USER.id_role IS NOT NULL
AND t_USER.id_role_previous IS NULL
LIMIT 1
) THEN
INSERT INTO demo.DOG_User_Role_Link (
id_user
, id_role
, active
, id_user_created_by
)
SELECT
t_USER.id_user
, t_USER.id_role
, t_USER.active
, a_id_user AS id_user_created_by
FROM tmp_User_Save_User t_USER
WHERE
t_USER.id_role IS NOT NULL
AND t_USER.id_role_previous IS NULL
;
END IF;
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE t_USER.id_role <> t_USER.id_role_previous LIMIT 1) THEN
UPDATE demo.DOG_User_Role_Link USER_ROLE_LINK
INNER JOIN tmp_User_Save_User t_USER ON USER_ROLE_LINK.id_user = t_USER.id_user
SET
USER_ROLE_LINK.id_role = t_USER.id_role
, USER_ROLE_LINK.id_change_set = v_id_change_set
;
END IF;
COMMIT;
END IF;
START TRANSACTION;
DELETE FROM demo.DOG_User_Temp
WHERE GUID = a_guid;
COMMIT;
# Errors
SELECT *
FROM tmp_Msg_Error t_ME
INNER JOIN demo.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type
;
# Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * from tmp_User_Save_User;
END IF;
DROP TABLE IF EXISTS tmp_Msg_Error;
DROP TABLE IF EXISTS tmp_User_Save_User;
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_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
DROP TEMPORARY TABLE IF EXISTS tmp_Company;
IF a_debug = 1 THEN
IF a_debug = 1 THEN
CALL demo.p_debug_timing_reporting ( v_time_start );
END IF;
END IF;
END //
DELIMITER ;
/*
select * FROM demo.DOG_Calc_User_Access_Temp;
delete FROM demo.DOG_Calc_User_Access_Temp;
SELECT *
FROM demo.DOG_USER;
CALL demo.p_dog_get_many_user(
NULL -- :a_id_user,
, '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_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, '' -- a_ids_company
, 0 -- a_get_all_company
, 0 -- a_get_inactive_company
, 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,
, 0 -- a_debug
CALL demo.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
CALL demo.p_dog_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, 1 -- 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
, 15 -- ids_permission
, 2 -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM demo.DOG_Calc_User_Access_Temp;
CALL demo.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
SELECT * FROM demo.DOG_Calc_User_Access_Temp;
CALL demo.p_dog_save_user (
'Test' -- comment
, 'greensgreensgreensgreensgreensgreens' -- guid
, 1 -- id_user
, 1 -- debug
);
CALL demo.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
*/

View File

@@ -1,6 +1,8 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_User_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
@@ -11,6 +13,7 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_User_Temp (
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_user INT
, id_role INT
, id_user_auth0 VARCHAR(200)
, firstname VARCHAR(250)
, surname VARCHAR(250)

View File

@@ -10,6 +10,10 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Role (
id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_access_level_required INT NOT NULL
, CONSTRAINT FK_DOG_Role_id_access_level_required
FOREIGN KEY (id_access_level_required)
REFERENCES fetchmetrics.DOG_Access_Level(id_access_level)
, code VARCHAR(250)
, name VARCHAR(250)
, display_order INT NOT NULL

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Role_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Role'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Role_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_access_level_required INT
, id_role INT
, code VARCHAR(250)
, name VARCHAR(250)
, display_order INT
, active BIT
, guid BINARY(36)
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);

View File

@@ -1,7 +1,7 @@
USE fetchmetrics;
DROP TABLE IF EXISTS demo.DOG_Calc_User_Access_Temp;
DROP TABLE IF EXISTS demo.DOG_Calc_User_Temp;
-- DROP TABLE IF EXISTS demo.DOG_Calc_User_Access_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
@@ -13,6 +13,7 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Calc_User_Access_Temp (
id_user INT
, id_role INT
, id_permission_required INT
, priority_access_level_required INT
, is_super_user BIT

View File

@@ -581,14 +581,6 @@ CALL fetchmetrics.p_dog_calc_company (
SELECT *
FROM fetchmetrics.DOG_Company_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Company_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_company (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -2,7 +2,7 @@
USE fetchmetrics;
-- Clear previous proc
DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_user;
DELIMITER //
@@ -148,6 +148,7 @@ BEGIN
id_temp INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_company INT
, id_role INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
@@ -379,6 +380,7 @@ BEGIN
INSERT INTO tmp_User (
id_user
, id_role
, id_company
, id_permission_required
, priority_access_level_required
@@ -401,6 +403,7 @@ BEGIN
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_role
, CAN_ACCESS_USER.id_company
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
@@ -511,6 +514,8 @@ BEGIN
, USER.surname
, USER.email
, USER.is_email_verified
, t_USER.id_role
, ROLES.name AS name_role
, t_USER.id_company
, t_COMPANY.name AS name_company
, t_COMPANY.website AS website_company
@@ -521,6 +526,7 @@ BEGIN
FROM tmp_User t_USER
-- INNER JOIN tmp_User_Access t_USER_ACCESS
INNER JOIN fetchmetrics.DOG_User USER ON t_USER.id_user = USER.id_user
LEFT JOIN fetchmetrics.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
LEFT JOIN tmp_Company t_COMPANY ON t_USER.id_company = t_COMPANY.id_company
;

View File

@@ -14,10 +14,13 @@ BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_permission_product INT;
DECLARE v_id_permission_user_admin LONGTEXT;
DECLARE v_id_permission_user_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_access_level_edit INT;
DECLARE v_can_admin_user BIT;
DECLARE v_is_super_user BIT;
DECLARE v_can_edit_user BIT;
DECLARE v_priority_access_level_none INT;
DECLARE v_priority_access_level_user INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
@@ -45,7 +48,7 @@ BEGIN
MET.id_type
, @errno
, @text
FROM fetchmetrics.Shop_Msg_Error_Type MET
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT *
@@ -55,26 +58,27 @@ 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 Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
SET v_id_access_level_edit := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_id_permission_user_admin := (SELECT GROUP_CONCAT(id_permission SEPARATOR ',') FROM Shop_Permission WHERE code = 'STORE_USER_ADMIN' LIMIT 1);
CALL p_validate_guid ( a_guid );
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
SET v_id_permission_user_edit := (SELECT GROUP_CONCAT(PERMISSION.id_permission SEPARATOR ',') FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_CREATE' LIMIT 1);
SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.priority FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'NONE' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Msg_Error;
DROP TABLE IF EXISTS tmp_User;
DROP TABLE IF EXISTS tmp_User_Save_User;
CREATE TABLE tmp_User (
CREATE TABLE tmp_User_Save_User (
id_user INT NOT NULL
, id_user_auth0 VARCHAR(200) NOT NULL
, firstname VARCHAR(255)
, surname VARCHAR(255)
, id_role INT
, id_role_previous INT
, id_user_auth0 VARCHAR(250)
, firstname VARCHAR(250)
, surname VARCHAR(250)
, email VARCHAR(254)
, is_email_verified BIT NOT NULL
, is_super_user BIT NOT NULL
, id_currency_default INT
, id_region_default INT
, is_included_VAT_default BIT
, active BIT NOT NULL
, is_email_verified BIT
, is_super_user BIT
, active BIT
, name_error VARCHAR(1000)
);
@@ -86,46 +90,49 @@ BEGIN
);
-- Get data from Temp table
INSERT INTO tmp_User (
INSERT INTO tmp_User_Save_User (
id_user
, id_user_auth0
, id_role
, firstname
, surname
, email
, is_email_verified
, is_super_user
, id_currency_default
, id_region_default
, is_included_VAT_default
, active
)
SELECT
U_T.id_user
, U_T.id_user_auth0
, IFNULL(U_T.firstname, U.firstname) AS firstname
, IFNULL(U_T.surname, U.surname) AS surname
, IFNULL(U_T.email, U.email) AS email
, IFNULL(U_T.is_email_verified, U.is_email_verified) AS is_email_verified
, IFNULL(U_T.is_super_user, U.is_super_user) AS is_super_user
, IFNULL(U_T.id_currency_default, U.id_currency_default) AS id_currency_default
, IFNULL(U_T.id_region_default, U.id_region_default) AS id_region_default
, IFNULL(U_T.is_included_VAT_default, U.is_included_VAT_default) AS is_included_VAT_default
, IFNULL(IFNULL(U_T.active, U.active), 1) AS active
, IFNULL(U_T.display_order, PC.display_order) AS display_order
FROM fetchmetrics.Shop_User_Temp U_T
LEFT JOIN Shop_User U ON U_T.id_user = U.id_user
WHERE U_T.guid = a_guid
USER_T.id_user
, USER_T.id_user_auth0
, USER_T.id_role
, IFNULL(USER_T.firstname, USER.firstname) AS firstname
, IFNULL(USER_T.surname, USER.surname) AS surname
, IFNULL(USER_T.email, USER.email) AS email
, IFNULL(USER_T.is_email_verified, USER.is_email_verified) AS is_email_verified
, IFNULL(USER_T.is_super_user, USER.is_super_user) AS is_super_user
, COALESCE(USER_T.active, USER.active, 1) AS active
FROM fetchmetrics.DOG_User_Temp USER_T
LEFT JOIN fetchmetrics.DOG_User USER ON USER_T.id_user = USER.id_user
WHERE USER_T.guid = a_guid
;
UPDATE tmp_User t_U
UPDATE tmp_User_Save_User t_USER
SET
t_U.name_error = IFNULL(t_U.email, t_U.id_user_auth0)
t_USER.name_error = IFNULL(t_USER.email, t_USER.id_user_auth0)
;
-- Validation
-- Missing mandatory fields
-- email
IF EXISTS (SELECT * FROM tmp_User t_U WHERE ISNULL(t_U.email) LIMIT 1) THEN
-- role
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
LEFT JOIN fetchmetrics.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
WHERE
ISNULL(t_USER.id_role)
OR ISNULL(ROLES.id_role)
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -134,13 +141,31 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an email: ', GROUP_CONCAT(t_U.name_error SEPARATOR ', ')) AS msg
FROM tmp_User t_U
WHERE ISNULL(t_U.email)
, CONCAT('The following User(s) do not have a role: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
LEFT JOIN fetchmetrics.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
WHERE
ISNULL(t_USER.id_role)
OR ISNULL(ROLES.id_role)
;
END IF;
-- email
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.email) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an email: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.email)
;
END IF;
-- is_super_user
IF EXISTS (SELECT * FROM tmp_User t_U WHERE ISNULL(t_U.is_super_user) LIMIT 1) THEN
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.is_super_user) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -149,13 +174,13 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an is super user field: ', GROUP_CONCAT(t_U.name_error SEPARATOR ', ')) AS msg
FROM tmp_User t_U
WHERE ISNULL(t_U.is_super_user)
, CONCAT('The following User(s) do not have an is super user field: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.is_super_user)
;
END IF;
-- is_email_verified
IF EXISTS (SELECT * FROM tmp_User t_U WHERE ISNULL(t_U.is_email_verified) LIMIT 1) THEN
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE ISNULL(t_USER.is_email_verified) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -164,72 +189,135 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) do not have an is email verified: ', GROUP_CONCAT(t_U.name_error SEPARATOR ', ')) AS msg
FROM tmp_User t_U
WHERE ISNULL(t_U.is_email_verified)
, CONCAT('The following User(s) do not have an is email verified: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
WHERE ISNULL(t_USER.is_email_verified)
;
END IF;
-- Get old role
UPDATE tmp_User_Save_User t_USER
INNER JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
ON t_USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
INNER JOIN fetchmetrics.DOG_Role ROLES
ON USER_ROLE_LINK.id_role = ROLES.id_role
AND ROLES.active = 1
SET t_USER.id_role_previous = USER_ROLE_LINK.id_role
WHERE t_USER.id_user > 0
;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- GUID
, a_id_user -- ID User
, FALSE -- get inactive Users
, v_id_permission_user_admin -- IDs Permission
, v_id_access_level_edit -- ID Access Level
, NULL -- IDs Product
SELECT
a_guid -- a_guid
, 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_user_edit -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 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_user_edit -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
CASE WHEN IFNULL(CALC_USER_T.can_edit, 0) = 1 THEN 1 ELSE 0 END AS can_edit
, IFNULL(CALC_USER_T.is_super_user, 0) AS is_super_user
, IFNULL(CALC_USER_T.priority_access_level_user, v_priority_access_level_none) AS priority_access_level
INTO
v_can_edit_user
, v_is_super_user
, v_priority_access_level_user
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE
CALC_USER_T.GUID = a_guid
AND CALC_USER_T.id_user = a_id_user
AND CALC_USER_T.id_permission_required = v_id_permission_user_edit
;
IF (
v_is_super_user = 0
AND EXISTS (
WITH
Access_User_Company AS (
SELECT USER_COMPANY_LINK.id_company
FROM fetchmetrics.DOG_User_Company_Link USER_COMPANY_LINK
WHERE USER_COMPANY_LINK.id_user = a_id_user
)
, User_Is_In_Access_User_Company AS (
SELECT
USER.id_user
, CASE WHEN ACCESS_USER_COMPANY.id_company IS NULL THEN 1 ELSE 0 END AS is_user_company_link_in_access_user_company
, ROW_NUMBER() OVER (PARTITION BY USER.id_user ORDER BY CASE WHEN ACCESS_USER_COMPANY.id_company IS NULL THEN 1 ELSE 0 END DESC) AS index_link_in_user
FROM fetchmetrics.DOG_User USER
INNER JOIN fetchmetrics.DOG_User_Company_Link USER_COMPANY_LINK ON USER.id_user = USER_COMPANY_LINK.id_user
LEFT JOIN Access_User_Company ACCESS_USER_COMPANY ON USER_COMPANY_LINK.id_company = ACCESS_USER_COMPANY.id_company
)
SELECT *
FROM tmp_User_Save_User t_USER
LEFT JOIN User_Is_In_Access_User_Company USER_IS_IN_COMPANY ON t_USER.id_user = USER_IS_IN_COMPANY.id_user
/*
LEFT JOIN fetchmetrics.DOG_User_Company_Link USER_COMPANY_LINK ON t_USER.id_user = USER_COMPANY_LINK.id_user
LEFT JOIN User_Company USER_COMPANY ON USER_COMPANY_LINK.id_company = USER_COMPANY.id_company
WHERE USER_COMPANY.id_company IS NULL
*/
WHERE
USER_IS_IN_COMPANY.id_user IS NULL
OR (
USER_IS_IN_COMPANY.index_link_in_user = 1
AND USER_IS_IN_COMPANY.is_user_company_link_in_access_user_company = 0
)
)
) THEN
DELETE FROM tmp_Msg_Error;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to edit User(s) in other Company(s).'
)
;
END IF;
CALL p_dog_calc_user_access(
a_guid -- GUID
, a_id_user -- ID User
, FALSE -- get inactive Users
, v_id_permission_user_admin -- IDs Permission
, v_id_access_level_edit -- ID Access Level
, NULL -- IDs Product
);
-- replace with below
IF a_debug = 1 THEN
SELECT
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
SELECT * FROM fetchmetrics.DOG_Calc_User_Access_Temp;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SET v_can_admin_user := (
SELECT IFNULL(UE_T.can_edit, 0) = 1
FROM fetchmetrics.Shop_User_Eval_Temp UE_T
WHERE
UE_T.GUID = a_guid
AND UE_T.id_user = a_id_user
AND UE_T.id_permission = v_id_permission_user_admin
);
IF (v_can_admin_user = 0 AND EXISTS (
SELECT *
FROM tmp_User t_U
WHERE
t_U.id_user <> a_id_user
)) THEN
IF (
v_is_super_user = 0
AND v_priority_access_level_user > v_priority_access_level_admin
AND EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
WHERE t_USER.id_user <> a_id_user
)
) THEN
DELETE FROM tmp_Msg_Error;
INSERT INTO tmp_Msg_Error (
id_type
@@ -244,39 +332,126 @@ BEGIN
;
END IF;
CALL p_dog_clear_calc_user_access(a_guid);
-- Attempt to change role they can't access
-- role from
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
INNER JOIN fetchmetrics.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK ON t_USER.id_user = USER_ROLE_LINK.id_user
INNER JOIN fetchmetrics.DOG_Role ROLES ON USER_ROLE_LINK.id_role = ROLES.id_role
INNER JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) have role(s) you cannot access: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
INNER JOIN fetchmetrics.DOG_User USER ON t_USER.id_user = USER.id_user
INNER JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK ON t_USER.id_user = USER_ROLE_LINK.id_user
INNER JOIN fetchmetrics.DOG_Role ROLES ON USER_ROLE_LINK.id_role = ROLES.id_role
INNER JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
;
END IF;
-- role to
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
INNER JOIN fetchmetrics.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
INNER JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following User(s) have role(s) you cannot access: ', GROUP_CONCAT(t_USER.name_error SEPARATOR ', ')) AS msg
FROM tmp_User_Save_User t_USER
INNER JOIN fetchmetrics.DOG_Role ROLES ON t_USER.id_role = ROLES.id_role
INNER JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL ON ROLES.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE ACCESS_LEVEL.priority < v_priority_access_level_user
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access( a_guid, 0 );
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN
START TRANSACTION;
INSERT INTO Shop_User_Change_Set ( comment )
INSERT INTO fetchmetrics.DOG_User_Change_Set ( comment )
VALUES ( a_comment )
;
SET v_id_change_set := LAST_INSERT_ID();
UPDATE Shop_User U
INNER JOIN tmp_User t_U ON U.id_user = t_U.id_user
UPDATE fetchmetrics.DOG_User USER
INNER JOIN tmp_User_Save_User t_USER ON USER.id_user = t_USER.id_user
SET
U.id_user_auth0 = t_U.id_user_auth0
, U.firstname = t_U.firstname
, U.surname = t_U.surname
, U.email = t_U.email
, U.is_email_verified = t_U.is_email_verified
, U.is_super_user = t_U.is_super_user
, U.id_currency_default = t_U.id_currency_default
, U.id_region_default = t_U.id_region_default
, U.is_included_VAT_default = t_U.is_included_VAT_default
, U.active = t_U.active
, U.id_change_set = v_id_change_set
USER.id_user_auth0 = t_USER.id_user_auth0
, USER.firstname = t_USER.firstname
, USER.surname = t_USER.surname
, USER.email = t_USER.email
, USER.is_email_verified = t_USER.is_email_verified
, USER.is_super_user = t_USER.is_super_user
, USER.active = t_USER.active
, USER.id_change_set = v_id_change_set
;
IF EXISTS (
SELECT *
FROM tmp_User_Save_User t_USER
WHERE
t_USER.id_role IS NOT NULL
AND t_USER.id_role_previous IS NULL
LIMIT 1
) THEN
INSERT INTO fetchmetrics.DOG_User_Role_Link (
id_user
, id_role
, active
, id_user_created_by
)
SELECT
t_USER.id_user
, t_USER.id_role
, t_USER.active
, a_id_user AS id_user_created_by
FROM tmp_User_Save_User t_USER
WHERE
t_USER.id_role IS NOT NULL
AND t_USER.id_role_previous IS NULL
;
END IF;
IF EXISTS (SELECT * FROM tmp_User_Save_User t_USER WHERE t_USER.id_role <> t_USER.id_role_previous LIMIT 1) THEN
UPDATE fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
INNER JOIN tmp_User_Save_User t_USER ON USER_ROLE_LINK.id_user = t_USER.id_user
SET
USER_ROLE_LINK.id_role = t_USER.id_role
, USER_ROLE_LINK.id_change_set = v_id_change_set
;
END IF;
COMMIT;
END IF;
START TRANSACTION;
DELETE FROM Shop_User_Temp
DELETE FROM fetchmetrics.DOG_User_Temp
WHERE GUID = a_guid;
COMMIT;
@@ -284,15 +459,15 @@ BEGIN
# Errors
SELECT *
FROM tmp_Msg_Error t_ME
INNER JOIN fetchmetrics.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type
INNER JOIN fetchmetrics.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type
;
IF a_debug = 1 THEN
SELECT * from tmp_User;
SELECT * from tmp_User_Save_User;
END IF;
DROP TABLE IF EXISTS tmp_Msg_Error;
DROP TABLE IF EXISTS tmp_User;
DROP TABLE IF EXISTS tmp_User_Save_User;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting ( v_time_start );
@@ -300,3 +475,49 @@ BEGIN
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
CALL fetchmetrics.p_dog_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, 1 -- 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
, 15 -- ids_permission
, 2 -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM fetchmetrics.DOG_Calc_User_Access_Temp;
CALL fetchmetrics.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
SELECT * FROM fetchmetrics.DOG_Calc_User_Access_Temp;
CALL fetchmetrics.p_dog_save_user (
'Test' -- comment
, 'greensgreensgreensgreensgreensgreens' -- guid
, 1 -- id_user
, 1 -- debug
);
CALL fetchmetrics.p_dog_clear_calc_user_access(
'greensgreensgreensgreensgreensgreens' -- guid
, 0 -- debug
);
*/

View File

@@ -0,0 +1,551 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_role;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_role (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_role BIT
, IN a_get_inactive_role BIT
, IN a_ids_role TEXT
, IN a_names_role 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_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_role_id BIT;
DECLARE v_has_filter_role_name BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_user_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_priority_access_level_none INT;
DECLARE v_priority_access_level_user INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@sqlstate = RETURNED_SQLSTATE
, @errno = MYSQL_ERRNO
, @text = MESSAGE_TEXT
;
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Role (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_Role (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Role t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Role;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_user_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.priority FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'NONE' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_role := IFNULL(a_get_all_role, 0);
SET a_get_inactive_role := IFNULL(a_get_inactive_role, 0);
SET a_ids_role := TRIM(IFNULL(a_ids_role, ''));
SET a_names_role := TRIM(IFNULL(a_names_role, ''));
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);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
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_id_user
, a_get_all_role
, a_get_inactive_role
, a_ids_role
, a_names_role
, 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_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_user_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Role_Calc_Role;
CREATE TEMPORARY TABLE tmp_Role_Calc_Role (
id_role INT NOT NULL
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Role (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_Role (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_Role;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_Role (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Name_Calc_Role;
SET v_has_filter_role_id = CASE WHEN a_ids_role <> '' THEN 1 ELSE 0 END;
SET v_has_filter_role_name = CASE WHEN a_names_role <> '' THEN 1 ELSE 0 END;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 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_user_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 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_user_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
, IFNULL(CALC_USER_T.priority_access_level_user, v_priority_access_level_none)
INTO
v_can_view
, v_priority_access_level_user
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_Role t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_Role (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs and ROLES.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
-- ROLE
IF v_has_filter_role_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_role, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_Role (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF v_has_filter_role_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_role, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Name_Calc_Role (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Role t_ERROR INNER JOIN fetchmetrics.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 EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_Role t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Role ROLES ON t_SPLIT_ID.as_int = ROLES.id_role
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ROLES.id_role)
OR (
ROLES.active = 0
AND a_get_inactive_role = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_Role (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Role IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_Role t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Role ROLES ON t_SPLIT_ID.as_int = ROLES.id_role
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ROLES.id_role)
OR (
ROLES.active = 0
AND a_get_inactive_role = 0
)
;
/* Don't error on names, hand signals, or notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Role_Calc_Role (
id_role
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Role_Id_Filter AS (
SELECT ROLES.id_role
FROM tmp_Split_Id_Calc_Role t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Role ROLES ON t_SPLIT_ID.as_int = ROLES.id_role
)
, Role_Name_Filter AS (
SELECT ROLES.id_role
FROM tmp_Split_Name_Calc_Role t_SPLIT_NAME
INNER JOIN fetchmetrics.DOG_Role ROLES ON ROLES.name LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE NULLIF(t_SPLIT_NAME.substring, '') IS NOT NULL
)
, Role_Filters AS (
SELECT
ROLE_COMBINED.id_role
, MAX(ROLE_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(ROLE_COMBINED.does_meet_name_filter) AS does_meet_name_filter
FROM (
SELECT
ROLE_ID_FILTER.id_role
, 1 AS does_meet_id_filter
, 0 AS does_meet_name_filter
FROM Role_Id_Filter ROLE_ID_FILTER
UNION
SELECT
ROLE_NAME_FILTER.id_role
, 0 AS does_meet_id_filter
, 1 AS does_meet_name_filter
FROM Role_Name_Filter ROLE_NAME_FILTER
) ROLE_COMBINED
GROUP BY ROLE_COMBINED.id_role
)
SELECT
ROLES.id_role
, CASE WHEN
v_has_filter_role_id = 0
OR IFNULL(ROLE_FILTERS.does_meet_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_role_name = 0
)
OR IFNULL(ROLE_FILTERS.does_meet_name_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Role ROLES
LEFT JOIN Role_Filters ROLE_FILTERS ON ROLES.id_role = ROLE_FILTERS.id_role
-- LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL ON ROLE_FILTERS.id_access_level_required = ACCESS_LEVEL.id_access_level
WHERE
/*
(
ACCESS_LEVEL.priority >= v_priority_access_level_user
)
*/
(
a_get_all_role = 1
OR (
v_has_filter_role_id = 1
AND ROLE_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_role_name = 1
AND ROLE_FILTERS.does_meet_name_filter = 1
)
)
AND (
a_get_inactive_role = 1
OR ROLES.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_Role;
DELETE FROM tmp_Split_Name_Calc_Role;
IF a_debug = 1 THEN
SELECT 'After get ROLE';
SELECT * FROM tmp_Role_Calc_Role;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Role t_ERROR INNER JOIN fetchmetrics.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_ROLES
FROM tmp_Role_Calc_Role t_ROLES
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_ROLES.does_meet_id_filters = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_ROLES.does_meet_non_id_filters = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_ROLES.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ROLES.does_meet_non_id_filters = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter ROLE';
SELECT * FROM tmp_Role_Calc_Role;
END IF;
-- Calculated fields
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Role_Calc_Role;
SELECT * FROM tmp_Msg_Error_Calc_Role;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Role t_ERROR INNER JOIN fetchmetrics.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_Role_Calc_Role;
END IF;
DELETE FROM tmp_Role_Calc_Role;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
START TRANSACTION;
-- ROLE
INSERT INTO fetchmetrics.DOG_Role_Temp (
guid
, id_role
, code
, name
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_ROLES.id_role
, ROLES.code
, ROLES.name
, ROLES.active
, t_ROLES.does_meet_id_filters
, t_ROLES.does_meet_non_id_filters
FROM fetchmetrics.DOG_Role ROLES
INNER JOIN tmp_Role_Calc_Role t_ROLES ON ROLES.id_role = t_ROLES.id_role
ORDER BY ROLES.name
;
COMMIT;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Role t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Role_Calc_Role;
END IF;
CALL fetchmetrics.p_dog_clear_calc_dog ( a_guid, 0 );
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Role;
DROP TEMPORARY TABLE IF EXISTS tmp_Role_Calc_Role;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_role (
'gripe ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_role
, 0 -- a_get_inactive_role
, '' -- a_ids_role
, '' -- a_names_role
, 0 -- a_require_all_id_search_filters_met
, 0 -- 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
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Role_Temp
;
CALL fetchmetrics.p_dog_clear_calc_role (
'gripe ' -- a_guid
, 1 -- debug
);
DELETE
FROM fetchmetrics.DOG_Role_Temp
;
*/

View File

@@ -0,0 +1,45 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_role;
DROP PROCEDURE IF EXISTS fetchmetrics.p_role_clear_calc_role;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_role (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE ROLE_T
FROM fetchmetrics.DOG_Role_Temp ROLE_T
WHERE ROLE_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_role (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -0,0 +1,371 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_role;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_role (
IN a_id_user INT
, IN a_get_all_role BIT
, IN a_get_inactive_role BIT
, IN a_ids_role TEXT
, IN a_names_role 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_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_user_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@sqlstate = RETURNED_SQLSTATE
, @errno = MYSQL_ERRNO
, @text = MESSAGE_TEXT
;
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_user_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_role
, a_get_inactive_role
, a_ids_role
, a_names_role
, 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_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_user_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Role;
CREATE TEMPORARY TABLE tmp_Role (
id_role INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, active BIT
, display_order INT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 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_user_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 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_user_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view ROLE.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Role Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.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 -- a_guid
, a_id_user -- a_id_user
, a_get_all_role -- a_get_all_role
, a_get_inactive_role -- a_get_inactive_role
, a_ids_role -- a_ids_role
, a_names_role -- a_names_role
, 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
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_role (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_role -- a_get_all_role
, a_get_inactive_role -- a_get_inactive_role
, a_ids_role -- a_ids_role
, a_names_role -- a_names_role
, 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
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Role_Temp;
SELECT * FROM fetchmetrics.DOG_Role_Temp;
END IF;
INSERT INTO tmp_Role (
id_role
, code
, name
, active
, display_order
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ROLE_T.id_role
, ROLE_T.code
, ROLE_T.name
, ROLE_T.active
, ROLE_T.display_order
, ROLE_T.does_meet_id_filters
, ROLE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Role_Temp ROLE_T
WHERE ROLE_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Role;
SELECT * FROM tmp_Role;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.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_Role;
END IF;
DELETE FROM tmp_Role;
END IF;
-- Outputs
-- ROLE
SELECT
t_ROLE.id_role
, t_ROLE.code
, t_ROLE.name
, t_ROLE.active
, t_ROLE.display_order
, t_ROLE.does_meet_id_filters
, t_ROLE.does_meet_non_id_filters
FROM tmp_Role t_ROLE
LEFT JOIN fetchmetrics.DOG_Role ROLE ON t_ROLE.id_role = ROLE.id_role
ORDER BY t_ROLE.name
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Role;
END IF;
CALL fetchmetrics.p_dog_clear_calc_role(
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Role;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_role (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_role
, 0 -- a_get_inactive_role
, '' -- a_ids_role
, '' -- a_names_role
, 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
, 1 -- a_debug
);
CALL demo.p_dog_get_many_role (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_role
, 0 -- a_get_inactive_role
, '' -- a_ids_role
, 'pat,point' -- a_names_role
, 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
, 1 -- a_debug
);
*/

View File

@@ -1,9 +1,9 @@
-- Clear previous proc
DROP PROCEDURE IF EXISTS p_dog_user_eval;
DROP PROCEDURE IF EXISTS p_dog_calc_user_access;
DROP PROCEDURE IF EXISTS p_dog_user_calc;
DROP PROCEDURE IF EXISTS p_dog_calc_user_access;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_user_eval;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_user;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_user_calc;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_user_access;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_user_access (
@@ -188,6 +188,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Calc_User_Access_Calc_User_Access (
id_temp INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_role INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
@@ -735,28 +736,48 @@ BEGIN
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 fetchmetrics.DOG_User USER -- tmp_Calc_User_Access_Calc_User_Access t_CALC_USER_ACCESS
LEFT JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
LEFT JOIN fetchmetrics.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 fetchmetrics.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
)
-- Priority Access Level and Role
WITH
User_Access_Level AS (
SELECT
USER.id_user
, MIN(IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none)) AS priority_access_level
FROM fetchmetrics.DOG_User USER -- tmp_Calc_User_Access_Calc_User_Access t_CALC_USER_ACCESS
LEFT JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
LEFT JOIN fetchmetrics.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 fetchmetrics.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
)
, User_Role_And_Access_Level AS (
SELECT
USER_ACCESS_LEVEL.id_user
, USER_ACCESS_LEVEL.priority_access_level
, ROLE_PERMISSION_LINK.id_role
, ROW_NUMBER() OVER (PARTITION BY USER_ACCESS_LEVEL.id_user, USER_ACCESS_LEVEL.priority_access_level) AS index_link_in_user_and_priority_access_level
FROM User_Access_Level USER_ACCESS_LEVEL
LEFT JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
ON USER_ACCESS_LEVEL.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL
ON USER_ACCESS_LEVEL.priority_access_level = ACCESS_LEVEL.priority
AND ACCESS_LEVEL.active = 1
LEFT JOIN fetchmetrics.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON ACCESS_LEVEL.id_access_level = ROLE_PERMISSION_LINK.id_access_level
AND USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active = 1
)
UPDATE tmp_Calc_User_Access_Calc_User_Access t_CALC_USER_ACCESS
INNER JOIN User_Access_Level USER_ACCESS_LEVEL ON t_CALC_USER_ACCESS.id_user = USER_ACCESS_LEVEL.id_user
INNER JOIN User_Role_And_Access_Level USER_ROLE_AND_ACCESS_LEVEL ON t_CALC_USER_ACCESS.id_user = USER_ROLE_AND_ACCESS_LEVEL.id_user
SET
t_CALC_USER_ACCESS.priority_access_level_user = USER_ACCESS_LEVEL.priority_access_level
, t_CALC_USER_ACCESS.has_access = CASE WHEN USER_ACCESS_LEVEL.priority_access_level <= v_priority_access_level_required THEN 1 ELSE 0 END
t_CALC_USER_ACCESS.id_role = USER_ROLE_AND_ACCESS_LEVEL.id_role
, t_CALC_USER_ACCESS.priority_access_level_user = USER_ROLE_AND_ACCESS_LEVEL.priority_access_level
, t_CALC_USER_ACCESS.has_access = CASE WHEN USER_ROLE_AND_ACCESS_LEVEL.priority_access_level <= v_priority_access_level_required THEN 1 ELSE 0 END
;
-- Has access
@@ -791,6 +812,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Calc_User_Access_Temp (
guid
, id_user
, id_role
, id_permission_required
, priority_access_level_required
, is_super_user
@@ -806,6 +828,7 @@ BEGIN
SELECT
a_guid
, t_CALC_USER_ACCESS.id_user
, t_CALC_USER_ACCESS.id_role
, t_CALC_USER_ACCESS.id_permission_required
, t_CALC_USER_ACCESS.priority_access_level_required
, t_CALC_USER_ACCESS.is_super_user

View File

@@ -1127,20 +1127,6 @@ FROM fetchmetrics.DOG_Command_Category_Temp
SELECT *
FROM fetchmetrics.DOG_Command_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Command_Category_Temp CC
WHERE
CC.does_meet_id_filters
AND CC.does_meet_non_id_filters
;
SELECT *
FROM fetchmetrics.DOG_Command_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_command (
'slips ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_command_modality (
SELECT *
FROM fetchmetrics.DOG_Command_Modality_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Command_Modality_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_command_modality (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -655,14 +655,6 @@ CALL fetchmetrics.p_dog_calc_location (
SELECT *
FROM fetchmetrics.DOG_Location_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Location_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_location (
'grops ' -- a_guid
, 1 -- debug

View File

@@ -584,14 +584,6 @@ CALL fetchmetrics.p_dog_calc_button_shape (
SELECT *
FROM fetchmetrics.DOG_Button_Shape_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Button_Shape_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_button_shape (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,7 @@ CALL fetchmetrics.p_dog_calc_colour (
SELECT *
FROM fetchmetrics.DOG_Colour_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Colour_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_colour (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -887,14 +887,6 @@ CALL fetchmetrics.p_dog_calc_image (
SELECT *
FROM fetchmetrics.DOG_Image_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Image_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_image (
'grope ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_weather (
SELECT *
FROM fetchmetrics.DOG_Weather_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Weather_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_weather (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_lighting_level (
SELECT *
FROM fetchmetrics.DOG_Lighting_Level_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Lighting_Level_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_lighting_level (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_distraction_type (
SELECT *
FROM fetchmetrics.DOG_Distraction_Type_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Distraction_Type_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_distraction_type (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_distraction_intensity_level (
SELECT *
FROM fetchmetrics.DOG_Distraction_Intensity_Level_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Distraction_Intensity_Level_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_distraction_intensity_level (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -528,14 +528,6 @@ CALL fetchmetrics.p_dog_calc_bribe (
SELECT *
FROM fetchmetrics.DOG_Bribe_Temp
;
/*
SELECT *
FROM fetchmetrics.DOG_Bribe_Temp C
WHERE
C.does_meet_id_filters
AND C.does_meet_non_id_filters
;
*/
CALL fetchmetrics.p_dog_clear_calc_bribe (
'gripe ' -- a_guid
, 1 -- debug

View File

@@ -538,7 +538,7 @@ VALUES
, 1
)
, (
3
2
, 17
, 1
, 1
@@ -546,7 +546,7 @@ VALUES
, (
3
, 1
, 1
, 2
, 1
)
, (
@@ -564,7 +564,7 @@ VALUES
, (
3
, 4
, 1
, 2
, 1
)
, (
@@ -582,7 +582,7 @@ VALUES
, (
3
, 7
, 1
, 2
, 1
)
, (
@@ -600,7 +600,7 @@ VALUES
, (
3
, 10
, 1
, 2
, 1
)
, (

View File

@@ -1,4 +1,4 @@
rm ./static/MySQL/00000_combined.sql
cat ./static/MySQL/* > ./static/MySQL/00000_combined.sql
cat ./static/MySQL/7* > ./static/MySQL/00000_combined.sql
sed -i 's/parts/demo/g' ./static/MySQL/00000_combined.sql
sed -i 's/ody demo/ody parts/g' ./static/MySQL/00000_combined.sql

View File

@@ -1,5 +1,11 @@
#formFilters {
display: none;
}
.container-input {
margin: 0 auto;
}
.container-input input {
width: 250px;
}

View File

@@ -0,0 +1,4 @@
table.table-main thead tr th.company,
table.table-main tbody tr td.company {
display: none;
}

View File

@@ -66,5 +66,15 @@
}
#formFilters {
display: none;
}
.container-input {
margin: 0 auto;
}
.container-input input {
width: 250px;
}
/*# sourceMappingURL=user_account.bundle.css.map*/

View File

@@ -1 +1 @@
{"version":3,"file":"css/user_account.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C","sources":["webpack://app/./static/css/sections/dog.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}"],"names":[],"sourceRoot":""}
{"version":3,"file":"css/user_account.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;;AChEA;IACI,aAAa;AACjB;;AAEA;IACI,cAAc;AAClB;AACA;IACI,YAAY;AAChB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/user/user.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\n#formFilters {\n display: none;\n}\n\n.container-input {\n margin: 0 auto;\n}\n.container-input input {\n width: 250px;\n}"],"names":[],"sourceRoot":""}

View File

@@ -0,0 +1,73 @@
.container-input > input {
padding: 0vh 1vh;
border-radius: 0.5vh;
max-width: 7vh;
}
/* Right column */
.rightcolumn {
min-width: fit-content;
}
/* Main Table */
#pageBody {
max-height: 88vh;
padding: 0 5vw;
margin: 0;
border: 0;
align-content: center;
justify-content: flex-start;
display: flex;
flex-direction: column;
align-items: flex-start;
overflow-y: auto;
overflow-x: hidden;
position: absolute;
width: 90vw;
color: var(--colour-text);
}
/* Footer */
.footer {
padding: 1vh 1vw;
text-align: center;
margin: 0;
max-height: 5vh;
overflow-y: auto;
background-color: var(--colour-accent);
position: absolute;
bottom: 0;
width: 98vw;
}
@media screen and (max-width: 400px) {
.footer {
max-height: 8vh;
padding: 0.75vh 2vw;
font-size: 10px;
width: 96vw;
max-width: 96vw;
}
.footer > h4 {
font-size: 10px;
}
.footer > h5 {
font-size: 9px;
}
}
.footer > h4, h5 {
padding: 0;
margin: 0;
}
table.table-main thead tr th.company,
table.table-main tbody tr td.company {
display: none;
}
/*# sourceMappingURL=user_accounts.bundle.css.map*/

View File

@@ -0,0 +1 @@
{"version":3,"file":"css/user_accounts.bundle.css","mappings":";;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;ACjEA;;IAEI,aAAa;AACjB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/user/users.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","table.table-main thead tr th.company,\ntable.table-main tbody tr td.company {\n display: none;\n}"],"names":[],"sourceRoot":""}

View File

@@ -655,6 +655,8 @@ var API = /*#__PURE__*/function () {
updateUser: (id, userData) => request(`/users/${id}`, 'PUT', userData),
deleteUser: (id) => request(`/users/${id}`, 'DELETE'),
*/
// User
}, {
key: "loginUser",
value: function () {
@@ -679,22 +681,21 @@ var API = /*#__PURE__*/function () {
return _loginUser.apply(this, arguments);
}
return loginUser;
}() // dog
// Command categories
}()
}, {
key: "saveCommandCategories",
key: "saveUsers",
value: function () {
var _saveCommandCategories = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(commandCategories, formFilters, comment) {
var _saveUsers = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(users, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagCommandCategory] = commandCategories;
dataRequest[flagUser] = users;
dataRequest[flagComment] = comment;
_context3.next = 6;
return API.request(hashSaveDogCommandCategory, 'POST', dataRequest);
return API.request(hashSaveDogUser, 'POST', dataRequest);
case 6:
return _context3.abrupt("return", _context3.sent);
case 7:
@@ -703,25 +704,26 @@ var API = /*#__PURE__*/function () {
}
}, _callee3);
}));
function saveCommandCategories(_x2, _x3, _x4) {
return _saveCommandCategories.apply(this, arguments);
function saveUsers(_x2, _x3, _x4) {
return _saveUsers.apply(this, arguments);
}
return saveCommandCategories;
}() // Commands
return saveUsers;
}() // dog
// Command categories
}, {
key: "saveCommands",
key: "saveCommandCategories",
value: function () {
var _saveCommands = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(commands, formFilters, comment) {
var _saveCommandCategories = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(commandCategories, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagCommand] = commands;
dataRequest[flagCommandCategory] = commandCategories;
dataRequest[flagComment] = comment;
_context4.next = 6;
return API.request(hashSaveDogCommand, 'POST', dataRequest);
return API.request(hashSaveDogCommandCategory, 'POST', dataRequest);
case 6:
return _context4.abrupt("return", _context4.sent);
case 7:
@@ -730,25 +732,25 @@ var API = /*#__PURE__*/function () {
}
}, _callee4);
}));
function saveCommands(_x5, _x6, _x7) {
return _saveCommands.apply(this, arguments);
function saveCommandCategories(_x5, _x6, _x7) {
return _saveCommandCategories.apply(this, arguments);
}
return saveCommands;
}() // Dog Command Links
return saveCommandCategories;
}() // Commands
}, {
key: "saveDogCommandLinks",
key: "saveCommands",
value: function () {
var _saveDogCommandLinks = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(dogCommandLinks, formFilters, comment) {
var _saveCommands = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(commands, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagDogCommandLink] = dogCommandLinks;
dataRequest[flagCommand] = commands;
dataRequest[flagComment] = comment;
_context5.next = 6;
return API.request(hashSaveDogDogCommandLink, 'POST', dataRequest);
return API.request(hashSaveDogCommand, 'POST', dataRequest);
case 6:
return _context5.abrupt("return", _context5.sent);
case 7:
@@ -757,25 +759,25 @@ var API = /*#__PURE__*/function () {
}
}, _callee5);
}));
function saveDogCommandLinks(_x8, _x9, _x10) {
return _saveDogCommandLinks.apply(this, arguments);
function saveCommands(_x8, _x9, _x10) {
return _saveCommands.apply(this, arguments);
}
return saveDogCommandLinks;
}() // Locations
return saveCommands;
}() // Dog Command Links
}, {
key: "saveLocations",
key: "saveDogCommandLinks",
value: function () {
var _saveLocations = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(locations, formFilters, comment) {
var _saveDogCommandLinks = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(dogCommandLinks, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagLocation] = locations;
dataRequest[flagDogCommandLink] = dogCommandLinks;
dataRequest[flagComment] = comment;
_context6.next = 6;
return API.request(hashSaveDogLocation, 'POST', dataRequest);
return API.request(hashSaveDogDogCommandLink, 'POST', dataRequest);
case 6:
return _context6.abrupt("return", _context6.sent);
case 7:
@@ -784,25 +786,25 @@ var API = /*#__PURE__*/function () {
}
}, _callee6);
}));
function saveLocations(_x11, _x12, _x13) {
return _saveLocations.apply(this, arguments);
function saveDogCommandLinks(_x11, _x12, _x13) {
return _saveDogCommandLinks.apply(this, arguments);
}
return saveLocations;
}() // Button Icons
return saveDogCommandLinks;
}() // Locations
}, {
key: "saveButtonIcons",
key: "saveLocations",
value: function () {
var _saveButtonIcons = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(buttonIcons, formFilters, comment) {
var _saveLocations = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(locations, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagButtonIcon] = buttonIcons;
dataRequest[flagLocation] = locations;
dataRequest[flagComment] = comment;
_context7.next = 6;
return API.request(hashSaveDogButtonIcon, 'POST', dataRequest);
return API.request(hashSaveDogLocation, 'POST', dataRequest);
case 6:
return _context7.abrupt("return", _context7.sent);
case 7:
@@ -811,25 +813,25 @@ var API = /*#__PURE__*/function () {
}
}, _callee7);
}));
function saveButtonIcons(_x14, _x15, _x16) {
return _saveButtonIcons.apply(this, arguments);
function saveLocations(_x14, _x15, _x16) {
return _saveLocations.apply(this, arguments);
}
return saveButtonIcons;
}() // Command Button Links
return saveLocations;
}() // Button Icons
}, {
key: "saveCommandButtonLinks",
key: "saveButtonIcons",
value: function () {
var _saveCommandButtonLinks = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(links, formFilters, comment) {
var _saveButtonIcons = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(buttonIcons, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagCommandButtonLink] = links;
dataRequest[flagButtonIcon] = buttonIcons;
dataRequest[flagComment] = comment;
_context8.next = 6;
return API.request(hashSaveDogCommandButtonLink, 'POST', dataRequest);
return API.request(hashSaveDogButtonIcon, 'POST', dataRequest);
case 6:
return _context8.abrupt("return", _context8.sent);
case 7:
@@ -838,25 +840,25 @@ var API = /*#__PURE__*/function () {
}
}, _callee8);
}));
function saveCommandButtonLinks(_x17, _x18, _x19) {
return _saveCommandButtonLinks.apply(this, arguments);
function saveButtonIcons(_x17, _x18, _x19) {
return _saveButtonIcons.apply(this, arguments);
}
return saveCommandButtonLinks;
}() // Assessments
return saveButtonIcons;
}() // Command Button Links
}, {
key: "saveAssessments",
key: "saveCommandButtonLinks",
value: function () {
var _saveAssessments = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(assessments, formFilters, comment) {
var _saveCommandButtonLinks = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(links, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
while (1) switch (_context9.prev = _context9.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagAssessment] = assessments;
dataRequest[flagCommandButtonLink] = links;
dataRequest[flagComment] = comment;
_context9.next = 6;
return API.request(hashSaveDogAssessment, 'POST', dataRequest);
return API.request(hashSaveDogCommandButtonLink, 'POST', dataRequest);
case 6:
return _context9.abrupt("return", _context9.sent);
case 7:
@@ -865,7 +867,34 @@ var API = /*#__PURE__*/function () {
}
}, _callee9);
}));
function saveAssessments(_x20, _x21, _x22) {
function saveCommandButtonLinks(_x20, _x21, _x22) {
return _saveCommandButtonLinks.apply(this, arguments);
}
return saveCommandButtonLinks;
}() // Assessments
}, {
key: "saveAssessments",
value: function () {
var _saveAssessments = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(assessments, formFilters, comment) {
var dataRequest;
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
case 0:
dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagAssessment] = assessments;
dataRequest[flagComment] = comment;
_context10.next = 6;
return API.request(hashSaveDogAssessment, 'POST', dataRequest);
case 6:
return _context10.abrupt("return", _context10.sent);
case 7:
case "end":
return _context10.stop();
}
}, _callee10);
}));
function saveAssessments(_x23, _x24, _x25) {
return _saveAssessments.apply(this, arguments);
}
return saveAssessments;
@@ -873,10 +902,10 @@ var API = /*#__PURE__*/function () {
}, {
key: "saveAssessmentsDistractionsAndResponses",
value: function () {
var _saveAssessmentsDistractionsAndResponses = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(assessments, formFilters, comment) {
var _saveAssessmentsDistractionsAndResponses = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(assessments, formFilters, comment) {
var filtersJson, dataRequest;
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
while (1) switch (_context11.prev = _context11.next) {
case 0:
filtersJson = DOM.convertForm2JSON(formFilters);
filtersJson[attrIdAssessment] = null;
@@ -884,17 +913,17 @@ var API = /*#__PURE__*/function () {
dataRequest[flagFormFilters] = filtersJson;
dataRequest[flagAssessment] = assessments;
dataRequest[flagComment] = comment;
_context10.next = 8;
_context11.next = 8;
return API.request(hashSaveDogAssessmentDistractionAndResponse, 'POST', dataRequest);
case 8:
return _context10.abrupt("return", _context10.sent);
return _context11.abrupt("return", _context11.sent);
case 9:
case "end":
return _context10.stop();
return _context11.stop();
}
}, _callee10);
}, _callee11);
}));
function saveAssessmentsDistractionsAndResponses(_x23, _x24, _x25) {
function saveAssessmentsDistractionsAndResponses(_x26, _x27, _x28) {
return _saveAssessmentsDistractionsAndResponses.apply(this, arguments);
}
return saveAssessmentsDistractionsAndResponses;
@@ -1029,7 +1058,7 @@ var BasePage = /*#__PURE__*/function () {
}, {
key: "logInitialisation",
value: function logInitialisation() {
utils_Utils.consoleLogIfNotProductionEnvironment('Initializing ' + this.title + ' page');
utils_Utils.consoleLogIfNotProductionEnvironment('Initialising ' + this.title + ' page');
}
}, {
key: "hookupCommonElements",
@@ -8296,6 +8325,174 @@ var PageRetentionSchedule = /*#__PURE__*/function (_BasePage) {
}(BasePage);
retention_schedule_defineProperty(PageRetentionSchedule, "hash", hashPageDataRetentionSchedule);
;// ./static/js/pages/user/user.js
function user_typeof(o) { "@babel/helpers - typeof"; return user_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, user_typeof(o); }
function user_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function user_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, user_toPropertyKey(o.key), o); } }
function user_createClass(e, r, t) { return r && user_defineProperties(e.prototype, r), t && user_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function user_callSuper(t, o, e) { return o = user_getPrototypeOf(o), user_possibleConstructorReturn(t, user_isNativeReflectConstruct() ? Reflect.construct(o, e || [], user_getPrototypeOf(t).constructor) : o.apply(t, e)); }
function user_possibleConstructorReturn(t, e) { if (e && ("object" == user_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return user_assertThisInitialized(t); }
function user_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function user_isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (user_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function user_superPropGet(t, o, e, r) { var p = user_get(user_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
function user_get() { return user_get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = user_superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, user_get.apply(null, arguments); }
function user_superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = user_getPrototypeOf(t));); return t; }
function user_getPrototypeOf(t) { return user_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, user_getPrototypeOf(t); }
function user_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && user_setPrototypeOf(t, e); }
function user_setPrototypeOf(t, e) { return user_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, user_setPrototypeOf(t, e); }
function user_defineProperty(e, r, t) { return (r = user_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function user_toPropertyKey(t) { var i = user_toPrimitive(t, "string"); return "symbol" == user_typeof(i) ? i : i + ""; }
function user_toPrimitive(t, r) { if ("object" != user_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != user_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var PageUser = /*#__PURE__*/function (_BasePage) {
function PageUser(router) {
user_classCallCheck(this, PageUser);
return user_callSuper(this, PageUser, [router]);
}
user_inherits(PageUser, _BasePage);
return user_createClass(PageUser, [{
key: "initialize",
value: function initialize() {
this.sharedInitialize();
}
}, {
key: "leave",
value: function leave() {
user_superPropGet(PageUser, "leave", this, 3)([]);
}
}]);
}(BasePage);
user_defineProperty(PageUser, "hash", hashPageUserAccount);
;// ./static/js/pages/user/users.js
function users_typeof(o) { "@babel/helpers - typeof"; return users_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, users_typeof(o); }
function users_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function users_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, users_toPropertyKey(o.key), o); } }
function users_createClass(e, r, t) { return r && users_defineProperties(e.prototype, r), t && users_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function users_callSuper(t, o, e) { return o = users_getPrototypeOf(o), users_possibleConstructorReturn(t, users_isNativeReflectConstruct() ? Reflect.construct(o, e || [], users_getPrototypeOf(t).constructor) : o.apply(t, e)); }
function users_possibleConstructorReturn(t, e) { if (e && ("object" == users_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return users_assertThisInitialized(t); }
function users_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function users_isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (users_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function users_superPropGet(t, o, e, r) { var p = users_get(users_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
function users_get() { return users_get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = users_superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, users_get.apply(null, arguments); }
function users_superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = users_getPrototypeOf(t));); return t; }
function users_getPrototypeOf(t) { return users_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, users_getPrototypeOf(t); }
function users_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && users_setPrototypeOf(t, e); }
function users_setPrototypeOf(t, e) { return users_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, users_setPrototypeOf(t, e); }
function users_defineProperty(e, r, t) { return (r = users_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function users_toPropertyKey(t) { var i = users_toPrimitive(t, "string"); return "symbol" == users_typeof(i) ? i : i + ""; }
function users_toPrimitive(t, r) { if ("object" != users_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != users_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var PageUsers = /*#__PURE__*/function (_TableBasePage) {
function PageUsers(router) {
var _this;
users_classCallCheck(this, PageUsers);
_this = users_callSuper(this, PageUsers, [router]);
users_defineProperty(_this, "callSaveTableContent", API.saveUsers);
_this.dogMixin = new DogTableMixinPage(_this);
return _this;
}
users_inherits(PageUsers, _TableBasePage);
return users_createClass(PageUsers, [{
key: "initialize",
value: function initialize() {
this.sharedInitialize();
}
}, {
key: "hookupFilters",
value: function hookupFilters() {
this.sharedHookupFilters();
this.hookupFilterCompany();
this.hookupFilterActive();
}
}, {
key: "hookupFilterCompany",
value: function hookupFilterCompany() {
this.hookupFilter(attrIdCompany);
}
}, {
key: "loadRowTable",
value: function loadRowTable(rowJson) {
if (rowJson == null) return;
if (_verbose) {
utils_Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson);
}
}
}, {
key: "getJsonRow",
value: function getJsonRow(row) {
if (row == null) return;
// let tdCompany = row.querySelector('td.' + flagCompany);
var inputRole = row.querySelector('td.' + flagRole + ' .' + flagRole);
var inputFirstname = row.querySelector('td.' + flagFirstname + ' .' + flagFirstname);
var inputSurname = row.querySelector('td.' + flagSurname + ' .' + flagSurname);
var inputNotes = row.querySelector('td.' + flagNotes + ' .' + flagNotes);
var buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
var jsonRow = users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty(users_defineProperty({}, attrIdUserAuth0, null), flagEmail, null), flagIsEmailVerified, null), attrIdCompany, company[attrIdCompany]), flagIsSuperUser, null), flagCanAdminDog, null), flagCanAdminUser, null), flagCompany, null), flagRole, null);
jsonRow[attrIdUser] = row.getAttribute(attrIdUser);
// jsonRow[attrIdCompany] = tdCompany.getAttribute(attrIdCompany);
jsonRow[attrIdRole] = DOM.getElementAttributeValueCurrent(inputRole);
jsonRow[flagFirstname] = DOM.getElementAttributeValueCurrent(inputFirstname);
jsonRow[flagSurname] = DOM.getElementAttributeValueCurrent(inputSurname);
jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);
console.log("jsonRow");
console.log(jsonRow);
return jsonRow;
}
}, {
key: "initialiseRowNew",
value: function initialiseRowNew(tbody, row) {}
}, {
key: "postInitialiseRowNewCallback",
value: function postInitialiseRowNewCallback(tbody) {
var newRows = tbody.querySelectorAll('tr.' + flagRowNew);
var newestRow = newRows[0];
var clickableElementsSelector = ['td.' + flagRole + ' div.' + flagRole].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach(function (clickableElement) {
clickableElement.click();
});
}
}, {
key: "hookupTableMain",
value: function hookupTableMain() {
users_superPropGet(PageUsers, "hookupTableMain", this, 3)([]);
this.hookupFieldsRole();
this.hookupFieldsFirstname();
this.hookupFieldsSurname();
this.hookupFieldsNotesTable();
this.hookupFieldsActive();
}
}, {
key: "hookupFieldsRole",
value: function hookupFieldsRole() {
this.hookupTableCellDdlPreviews(flagRole, utils_Utils.getListFromDict(filterRoles) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
);
}
}, {
key: "hookupFieldsFirstname",
value: function hookupFieldsFirstname() {
this.hookupChangeHandlerTableCells(flagFirstname);
}
}, {
key: "hookupFieldsSurname",
value: function hookupFieldsSurname() {
this.hookupChangeHandlerTableCells(flagSurname);
}
}, {
key: "leave",
value: function leave() {
users_superPropGet(PageUsers, "leave", this, 3)([]);
}
}]);
}(TableBasePage);
users_defineProperty(PageUsers, "hash", hashPageUserAccounts);
users_defineProperty(PageUsers, "attrIdRowObject", attrIdUser);
;// ./static/js/router.js
function router_typeof(o) { "@babel/helpers - typeof"; return router_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, router_typeof(o); }
function router_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
@@ -8331,7 +8528,7 @@ function router_toPrimitive(t, r) { if ("object" != router_typeof(t) || !t) retu
// User
// import PageUserLogin from './pages/user/login.js';
// import PageUserLogout from './pages/user/logout.js';
// import PageUserAccount from './pages/user/account.js';
@@ -8425,7 +8622,14 @@ var Router = /*#__PURE__*/function () {
// User
// this.pages[hashPageUserLogin] = { name: 'PageUserLogin', module: PageUserLogin }; // pathModule: './pages/user/login.js' };
// this.pages[hashPageUserLogout] = { name: 'PageUserLogout', module: PageUserLogout }; // pathModule: './pages/user/logout.js' };
// this.pages[hashPageUserAccount] = { name: 'PageUserAccount', module: PageUserAccount }; // pathModule: './pages/user/account.js' };
this.pages[hashPageUserAccount] = {
name: 'PageUser',
module: PageUser
};
this.pages[hashPageUserAccounts] = {
name: 'PageUsers',
module: PageUsers
};
// Routes
this.routes = {};
// Core
@@ -8511,7 +8715,14 @@ var Router = /*#__PURE__*/function () {
// User
// this.routes[hashPageUserLogin] = (isPopState = false) => this.navigateToHash(hashPageUserLogin, isPopState);
// this.routes[hashPageUserLogout] = (isPopState = false) => this.navigateToHash(hashPageUserLogout, isPopState);
// this.routes[hashPageUserAccount] = (isPopState = false) => this.navigateToHash(hashPageUserAccount, isPopState);
this.routes[hashPageUserAccount] = function () {
var isPopState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
return _this.navigateToHash(hashPageUserAccount, isPopState);
};
this.routes[hashPageUserAccounts] = function () {
var isPopState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
return _this.navigateToHash(hashPageUserAccounts, isPopState);
};
this.initialize();
}
return router_createClass(Router, [{

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"file":"js/user_account.bundle.js","mappings":";;;;AAAA;;;;;;ACAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/sections/user.css","webpack://app/./static/css/pages/user/user.css"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}
{"version":3,"file":"js/user_account.bundle.js","mappings":";;;;AAAA;;;;;;ACAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/sections/user.css","webpack://app/./static/css/pages/user/user.css?8ee9"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}

23
static/dist/js/user_accounts.bundle.js vendored Normal file
View File

@@ -0,0 +1,23 @@
/******/ (() => { // webpackBootstrap
/******/ "use strict";
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
(() => {
// extracted by mini-css-extract-plugin
})();
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
(() => {
// extracted by mini-css-extract-plugin
})();
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
(() => {
// extracted by mini-css-extract-plugin
})();
/******/ })()
;
//# sourceMappingURL=user_accounts.bundle.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/user_accounts.bundle.js","mappings":";;;;AAAA;;;;;;ACAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/user.css","webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/pages/user/users.css?320d"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}

View File

@@ -264,7 +264,7 @@
});
}
// Wait for Chart.js to load and initialize
// Wait for Chart.js to load and initialise
function initializeChart() {
if (typeof Chart === 'undefined') {
console.error('Chart.js not loaded');

View File

@@ -64,11 +64,21 @@ export default class API {
updateUser: (id, userData) => request(`/users/${id}`, 'PUT', userData),
deleteUser: (id) => request(`/users/${id}`, 'DELETE'),
*/
// User
static async loginUser() {
let callback = {};
callback[flagCallback] = DOM.getHashPageCurrent();
return await API.request(hashPageUserLogin, 'POST', callback);
}
static async saveUsers(users, formFilters, comment) {
let dataRequest = {};
dataRequest[flagFormFilters] = DOM.convertForm2JSON(formFilters);
dataRequest[flagUser] = users;
dataRequest[flagComment] = comment;
return await API.request(hashSaveDogUser, 'POST', dataRequest);
}
// dog
// Command categories

View File

@@ -39,7 +39,7 @@ export default class BasePage {
}
logInitialisation() {
Utils.consoleLogIfNotProductionEnvironment('Initializing ' + this.title + ' page');
Utils.consoleLogIfNotProductionEnvironment('Initialising ' + this.title + ' page');
}
hookupCommonElements() {

View File

@@ -2,7 +2,7 @@
import BasePage from "../base.js";
export default class PageUser extends BasePage {
static hash = hashPageUser;
static hash = hashPageUserAccount;
constructor(router) {
super(router);
@@ -10,7 +10,6 @@ export default class PageUser extends BasePage {
initialize() {
this.sharedInitialize();
this.hookupButtonsNavContact();
}
leave() {

View File

@@ -0,0 +1,107 @@
import API from "../../api";
import DogTableMixinPage from "../dog/mixin_table";
import DOM from "../../dom";
import TableBasePage from "../base_table";
import Utils from "../../lib/utils";
export default class PageUsers extends TableBasePage {
static hash = hashPageUserAccounts;
static attrIdRowObject = attrIdUser;
callSaveTableContent = API.saveUsers;
constructor(router) {
super(router);
this.dogMixin = new DogTableMixinPage(this);
}
initialize() {
this.sharedInitialize();
}
hookupFilters() {
this.sharedHookupFilters();
this.hookupFilterCompany();
this.hookupFilterActive();
}
hookupFilterCompany() {
this.hookupFilter(attrIdCompany);
}
loadRowTable(rowJson) {
if (rowJson == null) return;
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
}
getJsonRow(row) {
if (row == null) return;
// let tdCompany = row.querySelector('td.' + flagCompany);
let inputRole = row.querySelector('td.' + flagRole + ' .' + flagRole);
let inputFirstname = row.querySelector('td.' + flagFirstname + ' .' + flagFirstname);
let inputSurname = row.querySelector('td.' + flagSurname + ' .' + flagSurname);
let inputNotes = row.querySelector('td.' + flagNotes + ' .' + flagNotes);
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
let jsonRow = {
[attrIdUserAuth0]: null
, [flagEmail]: null
, [flagIsEmailVerified]: null
, [attrIdCompany]: company[attrIdCompany]
, [flagIsSuperUser]: null
, [flagCanAdminDog]: null
, [flagCanAdminUser]: null
, [flagCompany]: null
, [flagRole]: null
};
jsonRow[attrIdUser] = row.getAttribute(attrIdUser);
// jsonRow[attrIdCompany] = tdCompany.getAttribute(attrIdCompany);
jsonRow[attrIdRole] = DOM.getElementAttributeValueCurrent(inputRole);
jsonRow[flagFirstname] = DOM.getElementAttributeValueCurrent(inputFirstname);
jsonRow[flagSurname] = DOM.getElementAttributeValueCurrent(inputSurname);
jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);
console.log("jsonRow");
console.log(jsonRow);
return jsonRow;
}
initialiseRowNew(tbody, row) {
}
postInitialiseRowNewCallback(tbody) {
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
let newestRow = newRows[0];
let clickableElementsSelector = [
'td.' + flagRole + ' div.' + flagRole
].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
clickableElement.click();
});
}
hookupTableMain() {
super.hookupTableMain();
this.hookupFieldsRole();
this.hookupFieldsFirstname();
this.hookupFieldsSurname();
this.hookupFieldsNotesTable();
this.hookupFieldsActive();
}
hookupFieldsRole() {
this.hookupTableCellDdlPreviews(
flagRole
, Utils.getListFromDict(filterRoles) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
);
}
hookupFieldsFirstname() {
this.hookupChangeHandlerTableCells(flagFirstname);
}
hookupFieldsSurname() {
this.hookupChangeHandlerTableCells(flagSurname);
}
leave() {
super.leave();
}
}

View File

@@ -27,7 +27,8 @@ import PageRetentionSchedule from './pages/legal/retention_schedule.js';
// User
// import PageUserLogin from './pages/user/login.js';
// import PageUserLogout from './pages/user/logout.js';
// import PageUserAccount from './pages/user/account.js';
import PageUser from './pages/user/user.js';
import PageUsers from './pages/user/users.js';
import API from './api.js';
import DOM from './dom.js';
@@ -64,7 +65,8 @@ export default class Router {
// User
// this.pages[hashPageUserLogin] = { name: 'PageUserLogin', module: PageUserLogin }; // pathModule: './pages/user/login.js' };
// this.pages[hashPageUserLogout] = { name: 'PageUserLogout', module: PageUserLogout }; // pathModule: './pages/user/logout.js' };
// this.pages[hashPageUserAccount] = { name: 'PageUserAccount', module: PageUserAccount }; // pathModule: './pages/user/account.js' };
this.pages[hashPageUserAccount] = { name: 'PageUser', module: PageUser };
this.pages[hashPageUserAccounts] = { name: 'PageUsers', module: PageUsers };
// Routes
this.routes = {};
// Core
@@ -93,7 +95,8 @@ export default class Router {
// User
// this.routes[hashPageUserLogin] = (isPopState = false) => this.navigateToHash(hashPageUserLogin, isPopState);
// this.routes[hashPageUserLogout] = (isPopState = false) => this.navigateToHash(hashPageUserLogout, isPopState);
// this.routes[hashPageUserAccount] = (isPopState = false) => this.navigateToHash(hashPageUserAccount, isPopState);
this.routes[hashPageUserAccount] = (isPopState = false) => this.navigateToHash(hashPageUserAccount, isPopState);
this.routes[hashPageUserAccounts] = (isPopState = false) => this.navigateToHash(hashPageUserAccounts, isPopState);
this.initialize();
}
loadPage(hashPage, isPopState = false) {