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);