resto-epi/app.js
2025-08-29 10:35:47 +02:00

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));