43 lines
1.3 KiB
Plaintext
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 ;
|