diff --git a/auth.js b/auth.js index a16a294..fab465d 100644 --- a/auth.js +++ b/auth.js @@ -4,6 +4,7 @@ var https = require('socks5-https-client'); var crypt = require('./crypt'); var config = require('./configuration'); +var lookup = require('./lookup'); function get_login(username, password, callback) { var login = qs.stringify({ @@ -59,21 +60,23 @@ function logout(req, res) { function is(req, res, next) { var cookies = qs.parse(req.headers.cookie.replace(/\s/g, ''), ';', '='); - console.log(cookies); if (!cookies.username || !cookies.password) {next(); return;} var username = crypt.decrypt(cookies.username), password = crypt.decrypt(cookies.password); - console.log(username, password); get_login(username, password, function (legit) { if (legit) { - console.log('Username and password were legit'); - req.headers.username = username; + req.query.name = username; + lookup.api(req, function (database_entry) { + req.headers.user = database_entry.data[0]; + next(); + }); // req.headers.password = password; } - - next(); + else { + next(); + } }); } diff --git a/configuration.js b/configuration.js index 9b6e214..0d9182b 100644 --- a/configuration.js +++ b/configuration.js @@ -23,8 +23,8 @@ module.exports = function () { ], 'school_id' : 934, 'links' : { - 'Login': ['#', '#96AA48'], - 'Magister': ['http://werkman.magister.net', '#0C5489'], + 'Login': ['http://roosters5.gepro-osi.nl/roosters/rooster.php?school=INSERTYOURSCHOOL_ID', '#CCCC99'], + 'Magister': ['http://INSERTYOURMAGISTER.magister.net', '#0C5489'], 'Mail': ['https://login.microsoftonline.com/', '#C41824'] }, 'spider_timeout' : 1000 diff --git a/lookup.js b/lookup.js index 453cdc3..d36cf68 100644 --- a/lookup.js +++ b/lookup.js @@ -12,8 +12,7 @@ function get(req, res, next, search) { easter(search) ? search = easter(search).name : null; //Check if there are any eastereggs matching the search query. search = new RegExp(search, 'i'); //Make regular exeption for ignoring the case (Bram vs BRAM) should return the same. - - index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}]}).toArray(function (err, database_entry) { + index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}, {username: search}]}).toArray(function (err, database_entry) { if (err) console.warn(err); if (database_entry.length == 1) { @@ -35,7 +34,7 @@ function api(req, callback) { var index = database.collection('index'); var query = RegExp(req.query.name, 'i'); - index.find({$or : [{id : query}, {name : query}, {first_name : query}, {last_name : query}]}).toArray(function (err, database_entry) { + index.find({$or : [{id : query}, {name : query}, {first_name : query}, {last_name : query}, {username: query}]}).toArray(function (err, database_entry) { if (err) callback({'error': err}); else { for (entry of database_entry) {entry.url = make_url(req, entry)} @@ -65,7 +64,7 @@ function make_url(req, database_entry) { url += '&klassen=' + database_entry.name; break; } - + if (req.query.tab) url += '&tabblad=' + req.query.tab return url; diff --git a/resources/jade/header.jade b/resources/jade/header.jade index 7607235..df26c9d 100644 --- a/resources/jade/header.jade +++ b/resources/jade/header.jade @@ -15,19 +15,24 @@ html (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-46880644-1', 'werkmanrooster.nl');ga('send', 'pageview');ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; body div.bar - - //- div.motd - //- p - //- | Hey jongens, het is weer tijd voor een nieuwe versie van Werkmanrooster.
- //- | Hij is nog niet helemaal af maar het komt allemaal bij elkaar.
- //- | De volgende dingen zijn niet meer te doen :
- //- | * Inloggen
- //- | * Cijfers bekijken
- //- | * Instellingen veranderen
- //- | * Useless button
- //- | Als je wil, vul je een enquette waarin je feedback kan achterlaten.
- //- | Alvast bedankt!
- //- | -B + if headers.user + ul.left + li Hey, #{headers.user.first_name} + li | + li + a(href="/rooster/#{headers.user.id}") Jouw Rooster + li + a(href=headers.user.url, target="_blank") Andere roostersite + + ul.right + li + a(href="/logout") Logout + + + else + ul + li + a(href="/login") Login h1#title(class=url == '/' ? 'big' : '') Werkmanrooster span V diff --git a/resources/jade/homepage.jade b/resources/jade/homepage.jade index 06c5779..bddd875 100644 --- a/resources/jade/homepage.jade +++ b/resources/jade/homepage.jade @@ -3,5 +3,5 @@ include header div.homepage input.search(type="text", name="searchterm", placeholder="Je naam, id, klassennaam, docentencode, lokaalcode") button.search Zoeken - + include links diff --git a/resources/jade/login.jade b/resources/jade/login.jade index 4228a17..a926cf6 100644 --- a/resources/jade/login.jade +++ b/resources/jade/login.jade @@ -1,14 +1,13 @@ //- login.jade include header -form(action="/login", method="post") - div - label Username - input(type="text", name="username") - div - label Password - input(type="password", name="password") - div - input(type="submit", value="Log In") - -div=user +.login + form(action="/login", method="post") + div + label Gebruikersnaam + input(type="text", name="username") + div + label Wachtwoord + input(type="password", name="password") + div + input(type="submit", value="Log In").button-primary diff --git a/resources/less/style.less b/resources/less/style.less index ccbf7cb..693c960 100644 --- a/resources/less/style.less +++ b/resources/less/style.less @@ -77,10 +77,40 @@ input.search { } .bar { - height: 10px; + height: 20px; width: 100%; background-color: #96aa48; margin-bottom: 50px; + + ul { + list-style: none; + display: inline; + + &.right li { + float: right; + } + + li { + display: inline-block; + margin: 0 7px; + font-size: 13px; + color: #FFF; + + a { + text-decoration: none; + color: inherit; + + &:hover { + color: #DDD; + } + + &:active { + color: #CCC; + } + } + } + } + } h1#title { @@ -287,4 +317,10 @@ div.schedule { } } +.login { + margin: 0 auto; + width: 200px; + text-align: center; +} + @import "mobile"; diff --git a/web.js b/web.js index 5a62cea..0d4f4c7 100644 --- a/web.js +++ b/web.js @@ -31,10 +31,11 @@ app.get('/', auth.is, function (req, res) { }); app.get('/login', function (req, res) { - res.render('login'); + res.render('login', req); }); app.post('/login', auth.login); +app.get('/logout', auth.logout); app.get('/api/:api', function (req, res, next) { next(); }); app.param('api', api); @@ -43,6 +44,7 @@ app.get('/rooster/:search', function (req, res, next) { next(); }); +app.param('search', auth.is); app.param('search', lookup.get); app.param('search', schedule.get);