46 lines
2.0 KiB
JavaScript
46 lines
2.0 KiB
JavaScript
const axios = require('axios');
|
|
const logger = require('./logger');
|
|
|
|
// These functions are intentionally generic/stubbed. Configure endpoints via env.
|
|
// STEAM: require STEAM_WEB_API_KEY to call ISteamUserAuth/AuthenticateUserTicket if you have an auth ticket.
|
|
// RECNET: set RECNET_VERIFY_URL to a RecNet endpoint that verifies tokens.
|
|
|
|
const STEAM_API_KEY = process.env.STEAM_WEB_API_KEY || '';
|
|
const RECNET_VERIFY_URL = process.env.RECNET_VERIFY_URL || '';
|
|
|
|
async function verifySteamToken(token) {
|
|
if (!STEAM_API_KEY) throw new Error('STEAM_WEB_API_KEY not configured');
|
|
if (!token) throw new Error('no token');
|
|
|
|
// Example: call Steam Web API to validate an auth ticket. Replace with proper endpoint as needed.
|
|
// This is a placeholder; Steam ticket verification requires the AuthenticateUserTicket endpoint and a ticket from client.
|
|
const url = `https://api.steampowered.com/ISteamUserAuth/AuthenticateUserTicket/v1/?key=${STEAM_API_KEY}&ticket=${encodeURIComponent(token)}`;
|
|
try {
|
|
const res = await axios.get(url);
|
|
// Properly interpret res.data based on Steam response shape
|
|
logger.debug('Steam verify response', { data: res.data });
|
|
// Map to a normalized user object
|
|
return { id: res.data.response?.params?.steamid || null, provider: 'steam', raw: res.data };
|
|
} catch (err) {
|
|
logger.warn('Steam token verification failed', { err: err.message });
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
async function verifyRecNetToken(token) {
|
|
if (!RECNET_VERIFY_URL) throw new Error('RECNET_VERIFY_URL not configured');
|
|
if (!token) throw new Error('no token');
|
|
|
|
try {
|
|
const res = await axios.post(RECNET_VERIFY_URL, { token });
|
|
logger.debug('RecNet verify response', { data: res.data });
|
|
// Map to normalized user
|
|
return { id: res.data?.id || res.data?.userId || null, provider: 'recnet', raw: res.data };
|
|
} catch (err) {
|
|
logger.warn('RecNet token verification failed', { err: err.message });
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
module.exports = { verifySteamToken, verifyRecNetToken };
|