manjeshpv / node-oauth2-server-implementation

Using oauth2-server: 3.0.0-b2 & Supports MongoDB, MySQL, PostgreSQL, MSSQL & SQLite
216 stars 103 forks source link

Sessions #11

Open manjeshpv opened 7 years ago

manjeshpv commented 7 years ago

changes in node module

function getSession(done){
  if(this.req.oauth.session_id){
    return done();
  }
  var self = this;
  //console.log(this.req.)
  return this.model.saveSession(this.req, function (err, session) {
      if (err) return done(error('session_get_error', false, err));
      self.req.oauth.session_id = session.id;
      done();
    });
}

see full changelist https://github.com/quezx/node-oauth2-server/commit/7ae58952ac1c1c2403c4c763b70efb5489e879ba

saveSession(req, cb) {
    const ua = req.headers['user-agent'];

    const agent = useragent.parse(ua);
    const { id: userId } = req.user;
    const session = { user_id: userId  };

    if (agent) {
      Object.assign(session, {
        browser: agent.toAgent(),
        os: agent.os.toString(),
        device: agent.device.toString(),
      });
    }

    const ip = (req.headers['x-forwarded-for'] || req.connection.remoteAddress).split(',')[0];

    session.ip = ip;
    const geo = geoip.lookup(ip);
    if (geo) {
      const { country, region, city, ll, metro, zip } = geo;
      const [latitude, longitude] = ll;
      Object.assign(session, { latitude, longitude, country, region,
        city, metro, zip,
      });
    }

    // - Detailed Logging
    const browser = ua ? bowser._detect(ua) : { os: 'na' };

    return Session.create(session)
      .then(saved => {
        cb(null, saved.toJSON());
        return saved;
      })
      .catch(cb);
  },