61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
require("dotenv").config();
|
|
const express = require("express");
|
|
const session = require("express-session");
|
|
const passport = require("passport");
|
|
const { Strategy } = require("passport-openidconnect");
|
|
const path = require("path");
|
|
|
|
const app = express();
|
|
|
|
app.set("view engine", "ejs");
|
|
app.set("views", path.join(__dirname, "views"));
|
|
app.use(express.static(path.join(__dirname, "public")));
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
app.use(session({
|
|
secret: process.env.SESSION_SECRET,
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
cookie: { secure: false, httpOnly: true, maxAge: 8 * 60 * 60 * 1000 }
|
|
}));
|
|
|
|
app.use(passport.initialize());
|
|
app.use(passport.session());
|
|
|
|
passport.use("oidc", new Strategy({
|
|
issuer: process.env.OIDC_ISSUER,
|
|
authorizationURL: process.env.OIDC_ISSUER + "/protocol/openid-connect/auth",
|
|
tokenURL: process.env.OIDC_ISSUER + "/protocol/openid-connect/token",
|
|
userInfoURL: process.env.OIDC_ISSUER + "/protocol/openid-connect/userinfo",
|
|
clientID: process.env.OIDC_CLIENT_ID,
|
|
clientSecret: process.env.OIDC_CLIENT_SECRET,
|
|
callbackURL: process.env.OIDC_CALLBACK_URL,
|
|
scope: "openid email profile",
|
|
passReqToCallback: false,
|
|
}, (issuer, profile, done) => {
|
|
return done(null, {
|
|
username: profile.id,
|
|
name: profile.displayName,
|
|
email: profile.emails && profile.emails[0] && profile.emails[0].value,
|
|
groups: [],
|
|
});
|
|
}));
|
|
|
|
passport.serializeUser((user, done) => done(null, user));
|
|
passport.deserializeUser((user, done) => done(null, user));
|
|
|
|
app.use("/auth", require("./routes/auth"));
|
|
app.use("/dashboard", require("./routes/dashboard"));
|
|
|
|
app.get("/", (req, res) => {
|
|
if (req.isAuthenticated()) return res.redirect("/dashboard");
|
|
res.redirect("/auth/login");
|
|
});
|
|
|
|
app.get("/health", (req, res) => res.json({ status: "ok" }));
|
|
|
|
app.listen(process.env.PORT, () => {
|
|
console.log("Portal running on port " + process.env.PORT);
|
|
});
|