const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const oauthService = require('../services/OAuthService');

/**
 * Passport-Konfiguration für OAuth
 */
class PassportConfig {
  static initialize() {
    // Google OAuth Strategy
    if (process.env.GOOGLE_CLIENT_ID && process.env.GOOGLE_CLIENT_SECRET) {
      passport.use(new GoogleStrategy({
        clientID: process.env.GOOGLE_CLIENT_ID,
        clientSecret: process.env.GOOGLE_CLIENT_SECRET,
        callbackURL: process.env.GOOGLE_CALLBACK_URL || 'http://localhost:3010/api/auth/google/callback',
        scope: ['profile', 'email']
      },
      async (accessToken, refreshToken, profile, done) => {
        try {
          return done(null, { profile, provider: 'google' });
        } catch (error) {
          return done(error, null);
        }
      }));

      console.log('✅ Google OAuth konfiguriert');
    } else {
      console.log('⚠️  Google OAuth nicht konfiguriert (GOOGLE_CLIENT_ID/SECRET fehlen)');
    }

    // Serialisierung (für Session-basierte Strategien)
    passport.serializeUser((user, done) => {
      done(null, user);
    });

    passport.deserializeUser((user, done) => {
      done(null, user);
    });

    return passport;
  }
}

module.exports = PassportConfig;


