Added a top bar for controlling logging in and logging out.

This commit is contained in:
Bram van der Veen 2015-07-21 17:01:45 +02:00
parent a7c1c87859
commit abd175136a
8 changed files with 83 additions and 39 deletions

15
auth.js
View file

@ -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();
}
});
}

View file

@ -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

View file

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

View file

@ -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. <br>
//- | Hij is nog niet helemaal af maar het komt allemaal bij elkaar. <br>
//- | De volgende dingen zijn niet meer te doen : <br>
//- | * Inloggen <br>
//- | * Cijfers bekijken <br>
//- | * Instellingen veranderen <br>
//- | * Useless button <br>
//- | Als je wil, vul je een <a href="https://docs.google.com/forms/d/1MBf7ncF8BQc4f7B8EfXZyuvRdIhLYmhgGB2vcdb02gw/viewform?c=0&w=1">enquette</a> waarin je feedback kan achterlaten. <br>
//- | Alvast bedankt! <br>
//- | -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

View file

@ -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

View file

@ -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

View file

@ -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";

4
web.js
View file

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