add server side https redirect

This commit is contained in:
sorrelbri 2020-06-08 14:00:45 -07:00
parent 72b93f8ff1
commit 0b2bfad12f
2 changed files with 33 additions and 31 deletions

View file

@ -1,11 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<script>
if (window.location.protocol === 'http:') {
window.location.protocol === 'https:';
}
</script>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />

View file

@ -1,21 +1,21 @@
const createError = require('http-errors'); const createError = require("http-errors");
const express = require('express'); const express = require("express");
const cors = require('cors'); const cors = require("cors");
const path = require('path'); const path = require("path");
const cookieParser = require('cookie-parser'); const cookieParser = require("cookie-parser");
const logger = require('morgan'); const logger = require("morgan");
const db = require('./data/db'); const db = require("./data/db");
const dotenv = require('dotenv'); const dotenv = require("dotenv");
dotenv.config(); dotenv.config();
const indexRouter = require('./routes/index'); const indexRouter = require("./routes/index");
const usersRouter = require('./routes/users'); const usersRouter = require("./routes/users");
const authRouter = require('./routes/auth'); const authRouter = require("./routes/auth");
const apiRouter = require('./routes/api'); const apiRouter = require("./routes/api");
const app = express(); const app = express();
@ -23,40 +23,47 @@ const allowedOrigin = process.env.REACT_ADDRESS;
const corsOptions = { const corsOptions = {
origin: allowedOrigin, origin: allowedOrigin,
credentials: true, credentials: true,
methods: "GET,PUT,POST,DELETE" methods: "GET,PUT,POST,DELETE",
} };
app.options('*', cors(corsOptions)); app.options("*", cors(corsOptions));
app.use('*', cors(corsOptions)); app.use("*", cors(corsOptions));
// disable logging for tests // disable logging for tests
if (process.env.NODE_ENV !== 'test') app.use(logger('dev')); if (process.env.NODE_ENV !== "test") app.use(logger("dev"));
app.use(express.json()); app.use(express.json());
app.use(express.urlencoded({ extended: false })); app.use(express.urlencoded({ extended: false }));
app.use(cookieParser()); app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public'))); app.use(express.static(path.join(__dirname, "public")));
app.use('/', indexRouter); // HTTP redirect to HTTPS
app.use('/users', usersRouter); app.use("/", (req, res, next) => {
app.use('/auth', authRouter); if (req.protocol === "http") {
return res.redirect(`https://${req.hostname}`);
}
return next();
});
app.use("/", indexRouter);
app.use("/users", usersRouter);
app.use("/auth", authRouter);
// @auth // @auth
app.use('/api/v1', apiRouter); app.use("/api/v1", apiRouter);
// catch 404 and forward to error handler // catch 404 and forward to error handler
app.use(function(req, res, next) { app.use(function (req, res, next) {
next(createError(404)); next(createError(404));
}); });
// error handler // error handler
app.use(function(err, req, res, next) { app.use(function (err, req, res, next) {
// set locals, only providing error in development // set locals, only providing error in development
res.locals.message = err.message; res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {}; res.locals.error = req.app.get("env") === "development" ? err : {};
// render the error page // render the error page
res.status(err.status || 500); res.status(err.status || 500);
res.send('error'); res.send("error");
}); });
module.exports = app; module.exports = app;