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 ;
