diff options
| -rw-r--r-- | .gitignore | 44 | ||||
| -rw-r--r-- | app.js | 9 | ||||
| -rw-r--r-- | config/passport.js | 3 | ||||
| -rw-r--r-- | routes/index.js | 33 | ||||
| -rw-r--r-- | views/signup.hbs | 38 |
5 files changed, 127 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea83a5e --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/workspace.xml +.idea/tasks.xml +.idea/dictionaries +.idea/vcs.xml +.idea/jsLibraryMappings.xml + +# Sensitive or high-churn files: +.idea/dataSources.ids +.idea/dataSources.xml +.idea/dataSources.local.xml +.idea/sqlDataSources.xml +.idea/dynamic.xml +.idea/uiDesigner.xml + +# Gradle: +.idea/gradle.xml +.idea/libraries + +# Mongo Explorer plugin: +.idea/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties @@ -6,6 +6,9 @@ var bodyParser = require('body-parser'); var hbs = require('express-handlebars'); var dbFile = require("./node_simple.js"); var sanitizer = require ("sanitizer"); +var session = require('express-session'); +var passport = require('passport'); +var flash = require('connect-flash'); var routes = require('./routes/index'); var app = express(); @@ -23,6 +26,12 @@ app.set('view engine', '.hbs'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(cookieParser()); +app.use(session({secret: 'pickbetterlater', resave: false, saveUninitialized: false})); +app.use(flash()); +app.use(passport.initialize()); +app.use(passport.session()); + +require('./config/passport'); // simply need to load it /*LOADS ALL STATIC FILES FROM THE DIRECTORY __dirname*/ app.use(express.static(__dirname)); diff --git a/config/passport.js b/config/passport.js new file mode 100644 index 0000000..63ea1fd --- /dev/null +++ b/config/passport.js @@ -0,0 +1,3 @@ +/** + * Created by nanalelfe on 2016-07-20. + */ diff --git a/routes/index.js b/routes/index.js index 72e6c5b..84087e7 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,6 +1,11 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); +var csrf = require('csurf'); // Cross-Site Request Forgery prevention +var passport = require('passport'); + +var csrfProtection = csrf(); +router.use(csrfProtection); // router is protected /* Render/GET homepage. */ router.get('/', function(req, res, next) { @@ -78,6 +83,21 @@ router.get('/search', function(req, res, next) { res.redirect('/exams/' + courseName); }); +router.get('/signup', function(req, res, next) { + res.render('signup', {csrfToken: req.csrfToken()}); +}); + +router.post('/signup', function(req, res, next) { + res.redirect('/'); +}); + +/*router.post('/signup', passport.authenticate('local.signup', { + sucessRedirect: '/profile', + failureRedirect: '/signup', + failureFlash: true +}));*/ + + /* app.get('/exams',function (req,res) { console.log(req.query.search); @@ -92,6 +112,19 @@ app.get('/exams.html', function (req,res) { res.sendFile(__dirname+'/exams.html'); });*/ + +function getExamsForCourseCode(courseCode) { + dbFile.get_all_exams(courseCode, function (exams) { + if (exams.length == 0){ + console.log("Nothing was found"); + } + else { + console.log(exams); + } + }); +} + + module.exports = router; function toProperCase(string) { diff --git a/views/signup.hbs b/views/signup.hbs new file mode 100644 index 0000000..a389b63 --- /dev/null +++ b/views/signup.hbs @@ -0,0 +1,38 @@ +<main id="solutions-main"> +<div class="row" id="solutions-main"> + <div class="col-md-4 col-md-offset-4 col-sm-6 sol-sm-offset-3"> + <h2><i class="fa fa-user-plus" aria-hidden="true"></i> Sign Up</h2> + <form action="" method="post"> + <div class="form-group"> + <input type="text" class="form-control" placeholder="First Name"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="Last Name"> + </div> + + <div class="form-group"> + <input type="email" class="form-control" placeholder="Email"> + </div> + + <div class="form-group"> + <input type="email" class="form-control" placeholder="New Username"> + </div> + <div class="form-group"> + <input type="password" class="form-control" placeholder="New Password"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="University (optional)"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="Department (optional)"> + </div> + <input type="hidden" name="_csrf" value="{{ csrfToken }}"> + <button type="submit" class="btn btn-primary">Sign Up</button> + </form> + </div> + +</div> +</main>
\ No newline at end of file |
