first commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE FUNCTION checktoken(
|
||||
p_token VARCHAR(200)
|
||||
)
|
||||
/*
|
||||
Function : 判斷傳入的 Token 是否過期, 若未過期, 傳回 userid, 已過期傳回空白
|
||||
Description: 判斷 Token 是否過期, 若未過期, 傳回 0, 已過期傳回 9
|
||||
簡單的測試 ok
|
||||
Build Date : 2018/03/02
|
||||
|
||||
Modify History
|
||||
Item Who Date Modify Docs
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2018/01/08 開始改寫為 MySQL 版
|
||||
|
||||
*/
|
||||
RETURNS VARCHAR(100)
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
DECLARE v_lastlogintime DATETIME;
|
||||
DECLARE v_recno INT;
|
||||
DECLARE v_diffhour INT;
|
||||
DECLARE v_statuscode INT;
|
||||
DECLARE v_errMsg VARCHAR(200);
|
||||
DECLARE v_longday INT; -- 0: token 永久有效 其他: token 的效期天數
|
||||
DECLARE v_userid VARCHAR(100);
|
||||
|
||||
SET v_longday = 0; -- token 預設永久有效
|
||||
SET v_statuscode = 4;
|
||||
SET v_userid = '';
|
||||
SET v_errMsg = '帳號或密碼錯誤!';
|
||||
|
||||
SELECT COUNT(*), userid, lastlogintime
|
||||
INTO v_recno, v_userid, v_lastlogintime
|
||||
FROM sys_users
|
||||
WHERE IFNULL(isstop, '') <> 'Y'
|
||||
AND IFNULL(token, 'null') = p_token
|
||||
GROUP BY userid, lastlogintime;
|
||||
|
||||
IF v_recno > 0 THEN
|
||||
-- 如果傳入 token
|
||||
SELECT TIMESTAMPDIFF(HOUR, v_lastlogintime, NOW()) INTO v_diffhour;
|
||||
|
||||
IF v_diffhour >= 24 * v_longday AND v_longday > 0 THEN
|
||||
SET v_statuscode = 9;
|
||||
SET v_errMsg = 'token 已過期,請重新登入!';
|
||||
SET v_userid = '';
|
||||
ELSE
|
||||
SET v_statuscode = 0;
|
||||
SET v_errMsg = 'token 有效!';
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- 回傳值 dataset[0], 前3個欄位有固定的內容
|
||||
RETURN IFNULL(v_userid, '');
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user