67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
const DISCORD_CLIENT_ID = "your_client_id";
|
|
const DISCORD_CLIENT_SECRET = "your_client_secret";
|
|
const DISCORD_CALLBACK_URL = "http://localhost:3000/auth/discord/callback";
|
|
const SESSION_SECRET = "your_session_secret";
|
|
|
|
// ...existing code...
|
|
|
|
const express = require('express');
|
|
const session = require('express-session');
|
|
const passport = require('passport');
|
|
const DiscordStrategy = require('passport-discord').Strategy;
|
|
const SQLite = require('sqlite3').verbose();
|
|
const path = require('path');
|
|
const routes = require('./routes');
|
|
|
|
const app = express();
|
|
|
|
// DB SQLite
|
|
const db = new SQLite.Database('./database.sqlite', (err) => {
|
|
if (err) console.error('Erreur SQLite:', err);
|
|
else db.run('CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, username TEXT, discriminator TEXT, avatar TEXT)');
|
|
});
|
|
|
|
// Sessions
|
|
app.use(session({
|
|
secret: SESSION_SECRET,
|
|
resave: false,
|
|
saveUninitialized: false
|
|
}));
|
|
|
|
// Passport config
|
|
passport.serializeUser((user, done) => done(null, user.id));
|
|
passport.deserializeUser((id, done) => {
|
|
db.get('SELECT * FROM users WHERE id = ?', [id], (err, row) => {
|
|
if (err) return done(err);
|
|
done(null, row);
|
|
});
|
|
});
|
|
|
|
passport.use(new DiscordStrategy({
|
|
clientID: DISCORD_CLIENT_ID,
|
|
clientSecret: DISCORD_CLIENT_SECRET,
|
|
callbackURL: DISCORD_CALLBACK_URL,
|
|
scope: ['identify']
|
|
}, (accessToken, refreshToken, profile, done) => {
|
|
db.run('INSERT OR REPLACE INTO users (id, username, discriminator, avatar) VALUES (?, ?, ?, ?)',
|
|
[profile.id, profile.username, profile.discriminator, profile.avatar],
|
|
(err) => {
|
|
if (err) return done(err);
|
|
done(null, profile);
|
|
}
|
|
);
|
|
}));
|
|
|
|
app.use(passport.initialize());
|
|
app.use(passport.session());
|
|
|
|
// EJS
|
|
app.set('view engine', 'ejs');
|
|
app.set('views', path.join(__dirname, 'views'));
|
|
|
|
// Routes
|
|
app.use('/', routes);
|
|
|
|
const PORT = process.env.PORT || 3000;
|
|
app.listen(PORT, () => console.log('Serveur lancé sur http://localhost:' + PORT));
|
|
|