index.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const { static, Router } = require("express");
  2. const api = Router();
  3. const fs = require("fs");
  4. const { join } = require("path");
  5. const RoutesPath = join(__dirname, "Routes");
  6. fs.readdir(RoutesPath, (err, files) => {
  7. if (err) return console.log(err);
  8. files.forEach((file) => {
  9. api.use("/api/" + file.split(".")[0], require(RoutesPath + "/" + file));
  10. });
  11. });
  12. api.use("/", static(join(__dirname, "..", "assets")));
  13. //Handle Login and other stuff
  14. const session = require("express-session");
  15. const DiscordStrategy = require("passport-discord").Strategy;
  16. const passport = require("passport");
  17. let config;
  18. try {
  19. //Config for testing
  20. config = require("../dev-config");
  21. } catch {
  22. //Config for production
  23. config = require("../config");
  24. }
  25. passport.use(
  26. new DiscordStrategy(
  27. {
  28. clientID: config.ClientID,
  29. clientSecret: config.ClientSecret,
  30. callbackURL: config.Website + config.CallbackURL,
  31. scope: config.Scopes.join(" "),
  32. },
  33. function (accessToken, refreshToken, profile, done) {
  34. //User logged in yay!
  35. process.nextTick(function () {
  36. return done(null, profile);
  37. });
  38. }
  39. )
  40. );
  41. api.use(
  42. session({
  43. secret: config.CookieSecret,
  44. resave: false,
  45. saveUninitialized: false,
  46. })
  47. );
  48. api.use(passport.initialize());
  49. api.use(passport.session());
  50. api.get(
  51. config.CallbackURL,
  52. passport.authenticate("discord", {
  53. failureRedirect: "/",
  54. }),
  55. function (req, res) {
  56. res.redirect("/dashboard");
  57. }
  58. );
  59. passport.serializeUser(function (user, done) {
  60. done(null, user);
  61. });
  62. passport.deserializeUser(function (obj, done) {
  63. done(null, obj);
  64. });
  65. api.use("/", require("./routes"));
  66. module.exports = api;