Files
Omni_kernel.db/permission/get_module_security.txt
T
2026-02-06 15:09:39 +08:00

43 lines
1.3 KiB
Plaintext

DELIMITER //
CREATE PROCEDURE get_module_security (
IN p_token VARCHAR(100), -- 新增 token 判斷
IN p_moduleid VARCHAR(20)
)
/*
Function : 依 Security 的設定, 判斷該 user 所有 menu 的權限
Description: 配合 login 後, 寫入 localStorage
Build Date : 2023-12-10
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2023-12-10 改寫為 MySQL 版
*/
BEGIN
DECLARE v_recno INT;
DECLARE v_statuscode INT;
DECLARE v_errMsg NVARCHAR(200);
DECLARE v_userid VARCHAR(20);
SET v_statuscode = 0;
SET v_errMsg = '成功!';
SET v_recno = 1;
-- 根據傳入的 token 取得 userid
SELECT userid INTO v_userid FROM sys_users WHERE token = p_token;
-- 回傳值 dataset[0], 前3個欄位有固定的內容
SELECT v_statuscode AS code, v_errMsg AS msg, v_recno AS recno;
-- 回傳值 dataset[1], 實際的資料
SELECT DISTINCT menuid, controlname FROM sys_rolemenusecurity
WHERE (roleid IN (SELECT DISTINCT roleid FROM sys_userroles WHERE userid = v_userid) OR roleid = '00')
AND EXISTS (SELECT * FROM sys_menutable x WHERE x.menuid = sys_rolemenusecurity.menuid AND moduleid = p_moduleid)
AND controlname <> 'read';
END //
DELIMITER ;