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 ;