function (req, res){

      var isAdmin = !!req.session.admin
      var isFellow = false
      var isInstructor = false

      MP.me.groups(req.session.accessToken).then(function(groups) {

        groups.forEach(function(cohorts){
          if(cohorts.user_role === 'fellow')     isFellow = true
          if(cohorts.user_role === 'instructor') isInstructor = true
        })

        isAdmin = !!req.session.admin

      })
      .then(function(){
        if(!isInstructor && !isAdmin && !isFellow) {
          res.redirect('/nope')
        } else {
          res.cookie("picture", App.picture)
          res.cookie("name", App.name)
          res.cookie("email", App.email)
          res.redirect('/')
        }
      })
    }
    function(req, accessToken, refreshToken, profile, done) {


      MP.me.adminStatus(accessToken)
        .then(function (subjects) {
          req.session.accessToken = accessToken
          //
          // Only assign if there are any subjects at all.
          // This makes internal logic easier,
          // and sends less data over the wire.
          //
          if ( subjects.groups.length ) {
            req.session.admin = {
              groups: subjects.groups.map( g => g.uid )
            }
          }

          App.picture = profile.avatar_url
          App.name = profile.name
          App.email = profile.email

          done(null, profile)
        })
        .catch(function (err) {
          console.log("Error getting admin status:", err)
          done(err)
        })
    }