Fix: Permissions.
This commit is contained in:
@@ -39,6 +39,9 @@ BEGIN
|
||||
DECLARE v_ids_user TEXT;
|
||||
DECLARE v_is_new BIT;
|
||||
DECLARE v_is_super_user BIT;
|
||||
DECLARE v_priority_access_level_edit INT;
|
||||
DECLARE v_priority_access_level_none INT;
|
||||
DECLARE v_priority_access_level_user_view_user INT;
|
||||
DECLARE v_rank_max INT;
|
||||
DECLARE v_time_start TIMESTAMP(6);
|
||||
|
||||
@@ -91,8 +94,10 @@ BEGIN
|
||||
|
||||
SET v_time_start := CURRENT_TIMESTAMP(6);
|
||||
SET v_guid := UUID();
|
||||
SET v_id_access_level_admin := (SELECT id_access_level FROM fetchmetrics.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
|
||||
SET v_id_access_level_view := (SELECT id_access_level FROM fetchmetrics.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
|
||||
SET v_id_access_level_admin := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE code = 'ADMIN' LIMIT 1);
|
||||
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE code = 'VIEW' LIMIT 1);
|
||||
SET v_priority_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE code = 'EDIT' LIMIT 1);
|
||||
SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE code = 'NONE' LIMIT 1);
|
||||
SET v_id_permission_dog_admin := (SELECT id_permission FROM fetchmetrics.DOG_Permission WHERE code = 'DOG_ADMIN' LIMIT 1);
|
||||
SET v_id_permission_user := (SELECT id_permission FROM fetchmetrics.DOG_Permission WHERE code = 'USER_VIEW' LIMIT 1);
|
||||
SET v_id_permission_user_admin := (SELECT id_permission FROM fetchmetrics.DOG_Permission WHERE code = 'USER_ADMIN' LIMIT 1);
|
||||
@@ -183,6 +188,7 @@ BEGIN
|
||||
|
||||
|
||||
-- Permissions
|
||||
-- Can View
|
||||
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
|
||||
@@ -202,7 +208,7 @@ BEGIN
|
||||
, 0 -- a_show_errors
|
||||
, 0 -- a_debug
|
||||
;
|
||||
SELECT * FROM fetchmetrics.DOG_Calc_User_Access_Temp;
|
||||
SELECT * FROM fetchmetrics.DOG_Calc_User_Access_Temp CUA_T WHERE CUA_T.GUID = v_guid;
|
||||
END IF;
|
||||
|
||||
CALL fetchmetrics.p_dog_calc_user_access(
|
||||
@@ -271,8 +277,26 @@ BEGIN
|
||||
|
||||
CALL fetchmetrics.p_dog_clear_calc_user_access( v_guid, FALSE );
|
||||
END IF;
|
||||
|
||||
SELECT
|
||||
IFNULL(t_USER_ACCESS.is_super_user, 0) AS v_is_super_user
|
||||
, IFNULL(t_USER_ACCESS.id_user, a_id_user) AS a_id_user
|
||||
, IFNULL(t_USER_ACCESS.priority_access_level_user, v_priority_access_level_none) AS v_priority_access_level_user_view_user
|
||||
INTO
|
||||
v_is_super_user
|
||||
, a_id_user
|
||||
, v_priority_access_level_user_view_user
|
||||
FROM tmp_User_Access t_USER_ACCESS
|
||||
LIMIT 1
|
||||
;
|
||||
|
||||
SET v_is_super_user := (SELECT IFNULL(t_USER_ACCESS.is_super_user, 0) FROM tmp_User_Access t_USER_ACCESS LIMIT 1);
|
||||
IF a_debug = 1 THEN
|
||||
SELECT
|
||||
v_is_super_user AS v_is_super_user
|
||||
, a_id_user AS a_id_user
|
||||
, v_priority_access_level_user_view_user AS v_priority_access_level_user_view_user
|
||||
;
|
||||
END IF;
|
||||
|
||||
-- Companies
|
||||
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
|
||||
@@ -283,8 +307,8 @@ BEGIN
|
||||
, 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
|
||||
, 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_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||
@@ -332,6 +356,7 @@ BEGIN
|
||||
;
|
||||
|
||||
IF a_debug = 1 THEN
|
||||
SELECT 'After get permissions user companies';
|
||||
SELECT * FROM tmp_Company;
|
||||
END IF;
|
||||
END IF;
|
||||
@@ -398,8 +423,21 @@ BEGIN
|
||||
, 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 fetchmetrics.DOG_User USER
|
||||
LEFT JOIN fetchmetrics.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
|
||||
LEFT JOIN fetchmetrics.DOG_User_Company_Link USER_COMPANY_LINK
|
||||
ON USER.id_user = USER_COMPANY_LINK.id_user
|
||||
AND (
|
||||
(
|
||||
a_get_inactive_company = 1
|
||||
AND a_get_inactive_user = 1
|
||||
)
|
||||
OR USER_COMPANY_LINK.active = 1
|
||||
)
|
||||
LEFT JOIN tmp_Company t_COMPANY
|
||||
ON USER_COMPANY_LINK.id_company = t_COMPANY.id_company
|
||||
AND (
|
||||
a_get_inactive_company = 1
|
||||
OR USER_COMPANY_LINK.active = 1
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
CALC_USER_T.id_user
|
||||
@@ -425,13 +463,16 @@ BEGIN
|
||||
AND (
|
||||
v_is_super_user = 1
|
||||
OR (
|
||||
CAN_ACCESS_USER.id_company IS NOT NULL
|
||||
v_priority_access_level_user_view_user <= v_priority_access_level_edit
|
||||
AND CAN_ACCESS_USER.id_company IS NOT NULL
|
||||
AND CAN_ACCESS_USER.index_user_company_link_in_user = 1
|
||||
)
|
||||
OR CALC_USER_T.id_user = a_id_user
|
||||
)
|
||||
;
|
||||
|
||||
IF a_debug = 1 THEN
|
||||
SELECT 'After get many user';
|
||||
SELECT * FROM tmp_User;
|
||||
END IF;
|
||||
|
||||
@@ -508,12 +549,12 @@ BEGIN
|
||||
|
||||
-- Returns
|
||||
SELECT
|
||||
USER.id_user
|
||||
, USER.id_user_auth0
|
||||
, USER.firstname
|
||||
, USER.surname
|
||||
, USER.email
|
||||
, USER.is_email_verified
|
||||
USERS.id_user
|
||||
, USERS.id_user_auth0
|
||||
, USERS.firstname
|
||||
, USERS.surname
|
||||
, USERS.email
|
||||
, USERS.is_email_verified
|
||||
, t_USER.id_role
|
||||
, ROLES.name AS name_role
|
||||
, t_USER.id_company
|
||||
@@ -525,7 +566,7 @@ BEGIN
|
||||
, t_USER.can_admin_user
|
||||
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
|
||||
INNER JOIN fetchmetrics.DOG_User USERS ON t_USER.id_user = USERS.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
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user