reharik/koa-papers

View on GitHub
src/handleSuccess.js

Summary

Maintainability
A
25 mins
Test Coverage
const co = require('co');

module.exports = function *(stratResult, ctx, papers) {
  if (papers.functions.customHandler) {
    return {type: 'customHandler', result: 'success', value: stratResult};
  }

  // /********* successFlash *************/
  // if (clientOptions.successFlash) {
  //   var flash = {
  //     type: clientOptions.successFlash.type || info.type || 'success',
  //     message: clientOptions.successFlash.message || info.message || info || 'success'
  //   };
  //   req.flash(flash.type, flash.msg);
  // }
  //
  // /********* successMessage *************/
  // if (clientOptions.successMessage) {
  //   req.session.messages = req.session.messages || [];
  //   req.session.messages.push(typeof msg == 'boolean' ? info.message || info || 'success' : msg);
  // }
  //
  /********* assignProperty *************/
  // this seems spurious
  // if (papers.options.assignProperty) {
  //   req[papers.options.assignProperty] = user;
  //   return {type: 'success'};
  // }

  yield co(function *logInGen(){
    yield papers.functions.logIn(ctx, stratResult.details.user, papers);
  });

  // /********* authInfo *************/
  // if (clientOptions.authInfo !== false) {
  //   req.authInfo = papers.transformAuthInfo(info);
  // }

  /********* redirect *************/
  var redirectUrl = ctx.session && ctx.session.returnTo ? ctx.session.returnTo : papers.options.successRedirect;
  if (ctx.session) {
    delete ctx.session.returnTo;
  }
  if (redirectUrl) {
    return {type  : 'redirect', details: {url: redirectUrl, statusCode: 200}};
  }
  
  if(papers.options.successWithBody){
    ctx.body = papers.options.successWithBody;
  }
  return {type: 'success'};
};