// ==========================================================================
// 所属模块：event - heartbeat
// 生成日期：2024/10/16
// 生成路径: /api/event/heartbeat/function.js
// 生成人：xScript_Engine
// 数据表：system
// ==========================================================================

response.headers.add('X-Script-Version', 'heartbeat-24.10.20')

function main() {
    // 取 Authorization - Bearer 后面的Token值
    let userToken = payload.get().headers["Authorization"] || payload.get().query["token"] || payload.get().headers["X-Token"] || (payload.get().cookie ? payload.get().cookie["token"] : null);
    if (!userToken) {
        return errMsg(413, "未登录");
    }
    // 判断userToken是否是数组
    if (Array.isArray(userToken)) {
        userToken = userToken[0]
    }

    // 删除 Bearer 部分
    userToken = userToken.replace("Bearer ", "").replace(/\s/g, "");
    let tokenInfo = jwt_parse(userToken) // 这里需要密钥进行验证
    if (!tokenInfo) {
        return errMsg(413, "身份验证失败");
    }
    userToken = crypto.hash.md5(userToken).toHEX.encoding().toString()
    let sessions = cache.get('session', tokenInfo.uid)
    if (sessions) {
        if (!sessions.includes(userToken)) {
            sessions.push(userToken)
        }
    } else {
        sessions = [userToken]
    }
    cache.set('session', tokenInfo.uid, sessions, 30 * 60 * 1000)
    return okMsg(true);
}