|
|
const manager = require('../lib/manager'); |
|
|
|
|
|
const verify = async (req, res, next) => { |
|
|
|
|
|
const apiKeyHeader = req.headers['x-api-key']; |
|
|
|
|
|
|
|
|
if (!apiKeyHeader) { |
|
|
return res.status(401).json({ message: 'Unauthorized' }); |
|
|
} |
|
|
|
|
|
|
|
|
let tokenToCompare = apiKeyHeader; |
|
|
if (apiKeyHeader.toLowerCase().startsWith('bearer ')) { |
|
|
tokenToCompare = apiKeyHeader.substring(7); |
|
|
} |
|
|
|
|
|
|
|
|
if (tokenToCompare === process.env.AUTH_TOKEN) { |
|
|
try { |
|
|
req.account = await manager.getAccount(); |
|
|
if (!req.account) { |
|
|
|
|
|
return res.status(503).json({ |
|
|
error: { |
|
|
message: '服务暂时不可用,无法获取有效账户', |
|
|
type: 'service_unavailable', |
|
|
code: 'account_unavailable' |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
next(); |
|
|
} catch (error) { |
|
|
console.error('获取账户时出错:', error); |
|
|
|
|
|
return res.status(503).json({ |
|
|
error: { |
|
|
message: '服务暂时不可用', |
|
|
type: 'service_unavailable', |
|
|
code: 'internal_error' |
|
|
} |
|
|
}); |
|
|
} |
|
|
} else { |
|
|
return res.status(401).json({ message: 'Unauthorized' }); |
|
|
} |
|
|
}; |
|
|
|
|
|
module.exports = verify; |