@coko/server
Version:
Reusable server for use by Coko's projects
56 lines (45 loc) • 1.11 kB
JavaScript
const logger = require('../../logger')
const subscriptionManager = require('../../graphql/pubsub')
const {
createOAuthIdentity,
hasValidRefreshToken,
} = require('./identity.controller')
const { getUser } = require('../user/user.controller')
const {
labels: { IDENTITY_RESOLVER },
} = require('./constants')
const {
subscriptions: { USER_UPDATED },
} = require('../user/constants')
const createOAuthIdentityResolver = async (
_,
{ provider, sessionState, code },
ctx,
) => {
try {
logger.info(`${IDENTITY_RESOLVER} createOAuthIdentity`)
const { userId } = ctx
const identity = await createOAuthIdentity(
userId,
provider,
sessionState,
code,
)
const user = await getUser(userId)
subscriptionManager.publish(USER_UPDATED, {
userUpdated: user,
})
return identity
} catch (e) {
logger.error(`${IDENTITY_RESOLVER} createOAuthIdentity: ${e.message}`)
throw new Error(e)
}
}
module.exports = {
Mutation: {
createOAuthIdentity: createOAuthIdentityResolver,
},
Identity: {
hasValidRefreshToken,
},
}