Files
WinStudentGoalTracker/db/Objects/procedures/sp_RefreshToken_Replace.sql
T
2026-02-20 20:10:46 -08:00

44 lines
1.1 KiB
SQL

DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `sp_RefreshToken_Replace`(
IN p_old_token_id INT,
IN p_id_user INT,
IN p_token_hash VARCHAR(512),
IN p_token_salt VARCHAR(512),
IN p_expires_in_seconds INT,
IN p_device_info VARCHAR(255),
IN p_user_agent VARCHAR(512)
)
BEGIN
-- Revoke the old token
UPDATE refresh_token
SET revoked_at = UTC_TIMESTAMP()
WHERE id_refresh_token = p_old_token_id
AND revoked_at IS NULL;
-- Create the new token
INSERT INTO refresh_token
(
id_user,
token_hash,
token_salt,
expires_at,
device_info,
user_agent
)
VALUES
(
p_id_user,
p_token_hash,
p_token_salt,
DATE_ADD(UTC_TIMESTAMP(), INTERVAL p_expires_in_seconds SECOND),
p_device_info,
p_user_agent
);
-- Link old token to new one
SET @new_id = LAST_INSERT_ID();
UPDATE refresh_token
SET replaced_by_token_id = @new_id
WHERE id_refresh_token = p_old_token_id;
SELECT @new_id AS id_refresh_token;
utf8mb4_0900_ai_ci;;
DELIMITER ;