This commit is contained in:
groovecoder 2018-03-14 15:45:06 -05:00
Родитель 4346d527cf
Коммит 3c649f7ecb
6 изменённых файлов: 123 добавлений и 27 удалений

Просмотреть файл

@ -13,6 +13,7 @@
"client-sessions": "^0.8.0", "client-sessions": "^0.8.0",
"dotenv": "^5.0.1", "dotenv": "^5.0.1",
"express": "^4.16.2", "express": "^4.16.2",
"express-hbs": "^1.0.4",
"hbs": "^4.0.1", "hbs": "^4.0.1",
"nodemailer": "^4.6.0", "nodemailer": "^4.6.0",
"pg": "^7.4.1", "pg": "^7.4.1",

28
routes/home.js Normal file
Просмотреть файл

@ -0,0 +1,28 @@
"use strict";
const AppConstants = require("../app-constants");
const express = require("express");
const router = express.Router();
const models = require("../db/models");
router.get("/", (req, res) => {
res.render("home", {
title: "Firefox Breach Alerts",
});
});
router.post("/scan", (req, res) => {
// const email = req.body.email
// breachedHash = models.BreachedHash.get({ where: { hash: sha1(email) } })
// breaches = models.Breaches.findAll({ where: {id: [breach1ID, breach2ID, ...] } })
// res.render("scan", {
// title: "Firefox Breach Alerts: Scan Results",
// email: email,
// breaches: breaches
// });
res.render("scan");
});
module.exports = router;

Просмотреть файл

@ -4,16 +4,23 @@ const AppConstants = require("./app-constants");
const bodyParser = require("body-parser"); const bodyParser = require("body-parser");
const express = require("express"); const express = require("express");
const hbs = require("express-hbs");
const sessions = require("client-sessions"); const sessions = require("client-sessions");
const EmailUtils = require("./email-utils"); const EmailUtils = require("./email-utils");
const OAuthRoute = require("./routes/oauth"); const BaseRoutes = require("./routes/home");
const UserRoute = require("./routes/user"); const OAuthRoutes = require("./routes/oauth");
const UserRoutes = require("./routes/user");
const app = express(); const app = express();
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use(express.static("public")); app.use(express.static("public"));
app.engine("hbs", hbs.express4({
layoutsDir: __dirname + "/views/layouts"
}));
app.set("view engine", "hbs"); app.set("view engine", "hbs");
app.set("views", __dirname + "/views");
app.use(sessions({ app.use(sessions({
cookieName: "session", cookieName: "session",
@ -22,12 +29,9 @@ app.use(sessions({
activeDuration: 5 * 60 * 1000, // 5 minutes activeDuration: 5 * 60 * 1000, // 5 minutes
})); }));
app.get("/", (req, res) => { app.use("/", BaseRoutes);
res.render("home"); app.use("/oauth", OAuthRoutes);
}); app.use("/user", UserRoutes);
app.use("/oauth", OAuthRoute);
app.use("/user", UserRoute);
EmailUtils.init().then(() => { EmailUtils.init().then(() => {
const listener = app.listen(AppConstants.PORT, () => { const listener = app.listen(AppConstants.PORT, () => {

Просмотреть файл

@ -1,16 +1,4 @@
<!DOCTYPE html> {{!< default }}
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Firefox Breach Alerts</title>
<link rel="stylesheet" href="/css/vendor/foundation.min.css">
<script type="text/javascript" src="/js/vendor/jquery.js" defer></script>
<script type="text/javascript" src="/js/vendor/foundation.min.js" defer></script>
<script type="text/javascript" src="/js/test.js" defer></script>
</head>
<body>
<div class="top-bar"> <div class="top-bar">
<div class="top-bar-left"> <div class="top-bar-left">
<h1><a href="/">Firefox Breach Alert</a></h1> <h1><a href="/">Firefox Breach Alert</a></h1>
@ -32,9 +20,9 @@
<p>Simple reason and explanation as to what scanning will do and why the user should do it.</p> <p>Simple reason and explanation as to what scanning will do and why the user should do it.</p>
<form action="/scan" method="post"> <form action="/scan" method="post">
<div class="input-group"> <div class="input-group">
<input class="input-group-field" type="email" name="email"> <input class="input-group-field email-to-hash" type="email" name="email">
<div class="input-group-button"> <div class="input-group-button">
<input type="submit" class="button" value="Scan"> <input id="submit-email" type="submit" class="button" value="Scan">
</div> </div>
</div> </div>
</form> </form>
@ -60,7 +48,3 @@
<input type="submit" class="button" value="Subscribe with Email Account"> <input type="submit" class="button" value="Subscribe with Email Account">
</form> </form>
</div> </div>
</body>
</html>

35
views/layouts/default.hbs Normal file
Просмотреть файл

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
<link rel="stylesheet" href="/css/vendor/foundation.min.css">
<script type="text/javascript" src="/js/vendor/jquery.js" defer></script>
<script type="text/javascript" src="/js/vendor/foundation.min.js" defer></script>
<script type="text/javascript" src="/js/test.js" defer></script>
</head>
<body>
{{{ body }}}
<div class="reveal" id="subscribe-modal" data-reveal>
<h3>Subscribe to Breach Alerts</h3>
<p>Explanation of what the user will get if they subscribe to breach alerts.</p>
<a id="subscribe-fxa-btn" class="button sign-in-btn">Subscribe with Firefox Accounts</a>
<div class="grid-x">
<div class="cell small-5"><hr></div>
<div class="cell small-2">or</div>
<div class="cell small-5"><hr></div>
</div>
<form action="/subscribe" method="post">
<input type="email" name="email">
<input type="submit" class="button" value="Subscribe with Email Account">
</form>
</div>
</body>
</html>

44
views/scan.hbs Normal file
Просмотреть файл

@ -0,0 +1,44 @@
{{!< default }}
<div class="top-bar">
<div class="top-bar-left">
<h1><a href="/">Firefox Breach Alerts</a></h1>
</div>
<div class="top-bar-right">
<ul class="menu">
<li><a href="/">About</a></li>
<li><a href="#tips">Tips</a></li>
<li><a class="button" data-open="subscribe-modal">Subscribe</a></li>
</ul>
</div>
</div>
<div class="grid-x grid-margin-x grid-padding-x grid-margin-y grid-padding-y">
<div class="cell small-8">
<h2>Uh oh! Here are your results</h2>
<h3>{{ email }} <a href="">Subscribe</a></h3>
<div class="callout alert"><img src="http://via.placeholder.com/100x100">Really bad breach</div>
<div class="callout warning"><img src="http://via.placeholder.com/100x100">Bad breach</div>
<div class="callout secondary"><img src="http://via.placeholder.com/100x100">Regular breach</div>
</div>
<div class="cell small-4">
<p>Title that encourages user to try again</p>
<form action="/scan" method="post">
<div class="input-group">
<input class="input-group-field email-to-hash" type="email" name="email" placeholder="Enter Email">
<div class="input-group-button">
<input id="submit-email" type="submit" class="button" value="Scan">
</div>
</div>
</form>
<hr>
<p>Text explaining that you should tell your friends about this great feature and why.</p>
<p>
<a class="button" data-open="share-modal">Share</a>
</p>
</div>
</div>