mirror of
https://github.com/vuejs/apollo.git
synced 2026-01-25 14:17:04 +00:00
31 lines
707 B
JavaScript
31 lines
707 B
JavaScript
const users = require('./connectors/users')
|
|
|
|
// Context passed to all resolvers (third argument)
|
|
// req => Query
|
|
// connection => Subscription
|
|
// eslint-disable-next-line no-unused-vars
|
|
module.exports = ({ req, connection }) => {
|
|
// If the websocket context was already resolved
|
|
if (connection && connection.context) return connection.context
|
|
|
|
let rawToken
|
|
// HTTP
|
|
if (req) rawToken = req.get('Authorization')
|
|
// Websocket
|
|
if (connection) rawToken = connection.authorization
|
|
|
|
// Token
|
|
const token = rawToken ? JSON.parse(rawToken) : null
|
|
let userId
|
|
|
|
// User validation
|
|
if (token && users.validateToken(token)) {
|
|
userId = token.userId
|
|
}
|
|
|
|
return {
|
|
token,
|
|
userId,
|
|
}
|
|
}
|