All files / koa/auth/qq index.js

31.82% Statements 7/22
0% Branches 0/8
0% Functions 0/2
31.82% Lines 7/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35    5x 5x 5x 5x 5x   5x                                                   5x
'use strict'
 
const router = require('koa-router')()
var passport = require('koa-passport')
var config = require('../../config/env')
var auth = require('../auth.service')
const debug = require('../../util/debug')('auth:qq')
 
router
  .get('/', auth.snsPassport(), passport.authenticate('qq', {
    failureRedirect: '/',
    session: false,
  }))
  .get('/callback', async(ctx, next) => {
    await passport.authenticate('qq', { session: false }, function (err, user, redirectURL) {
      debug('qq auth callback start')
      const redirectUrl = ctx.session.passport.redirectUrl || '/'
      const cookieDomain = config.session.cookie.domain || null
      let snsmsg = {}
      if (err || !user) {
        snsmsg.msg = 'login failure'
        snsmsg.msgtype = 'error'
      } else {
        snsmsg.msgtype = 'success'
        snsmsg.msg = 'login success!'
        const token = auth.signToken(user._id)
        debug('set cookie token')
        ctx.cookies.set('token', token, { signed: false, domain: cookieDomain, httpOnly: false })
      }
      ctx.cookies.set('snsmsg', JSON.stringify(snsmsg), { signed: false, domain: cookieDomain, httpOnly: false, maxAge: 30000 })
      return ctx.redirect(redirectUrl)
    })(ctx)
  })
 
module.exports = router