Как использовать переменные одного файла в файле другого файла в node.js, который можно использовать для ограничения пользователей после входа в систему? - PullRequest
0 голосов
/ 15 декабря 2018
    const GoogleStrategy = require('passport-google-oauth20').Strategy;
    const mongoose = require('mongoose');
    const keys = require('./keys');
    // var image;
    // var firstName;
    // var emails;
    // var lastName;
    //loading models

    require('../models/students');
    const students = mongoose.model('students');

    module.exports = function(passport){
      passport.use(
        new GoogleStrategy({
          clientID: keys.googleClientID,
          clientSecret:keys.googleClientSecret,
          callbackURL:'/auth/google/callback',
          proxy: true
        }, (accessToken, refreshToken, profile, done) => {
          //console.log(accessToken);
          console.log(profile.id);
          const image = profile.photos[0].value.substring(0,profile.photos[0].value.indexOf('?'));
          console.log(image);
          console.log(profile.emails[0].value);
          console.log(profile.name.givenName);
          console.log(profile.name.familyName);

          //  image = profile.image;
          //  emails = profile.emails[0].value;
          //  firstName = profile.name.givenName;
          //  lastName = profile.name.familyName;

          var newStudent = {
            googleID: profile.id,
            firstName: profile.name.givenName,
            lastName: profile.name.familyName,
            emails: profile.emails[0].value,
            image: image
          }
          //check for existing users
          students.findOne({
            googleID: profile.id
          }).then(student => {
            console.log(`student ${student}`);
            if(student){
              //return
              done(null,student);
            }else {
              //create users
              new students(newStudent)
              .save()
              .then(student => done(null,student));
            }
          })
        })
      )
      //serialise fn pass info to the session to verify

      passport.serializeUser((student, done) => {
        done(null,student.id);
      });

      //deserializeUser fn called after serializeUser to return the user userInfo

      passport.deserializeUser((id,done)=>{
        students.findById(id).then(student => done(null,student));
      });
    }
    // module.exports = {
    //   fname,
    //   lname,
    //   emails,
    //   img
    // }

Я хочу использовать firstName, lastName, image в моем файле handlebars, но не получаю значение в файле handlebars.Также, когда я использую закомментированную переменную, я получаю ошибку из-за циклической зависимости.Так как же сделать вышеупомянутую переменную пригодной для использования в другом файле, чтобы я мог отображать параметры рулей в соответствии с логином пользователя.

Также хочу знать, что когда я использую req.logout ();для выхода из системы это просто выход из системы, а когда я вхожу в систему, то не запрашивает учетную запись для входа в систему и автоматически входит в мою учетную запись gmail в Chrome.

...