web login works, with access settings for certain modules [#538]

This commit is contained in:
reality 2013-07-29 20:08:25 +00:00
parent 78b9bf2525
commit 652a9ef7a3
5 changed files with 36 additions and 11 deletions

View File

@ -1,4 +1,6 @@
{
"dependencies": [ "report", "users", "web" ],
"dbType": "redis"
"dbType": "redis",
"requireWebLogin": true,
"webAccess": "power_users"
}

View File

@ -24,11 +24,16 @@ var webInterface = function(dbot) {
this.app.use(this.app.router);
passport.serializeUser(function(user, done) {
done(null, user);
console.log('serialising ' + user);
done(null, user.id);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
passport.deserializeUser(function(id, done) {
dbot.api.users.getUser(id, function(user) {
console.log(id);
console.log(user);
done(null, user);
});
});
passport.use(new LocalStrategy(function(username, password, callback) {
@ -68,6 +73,10 @@ var webInterface = function(dbot) {
var shim = Object.create(resp);
shim.render = (function(view, one, two) {
// Render with express.js
_.extend(one, {
'name': dbot.config.name,
'user': req.user
});
resp.render(this.module + '/' + view, one, two);
}).bind(this);
shim.render_core = resp.render;
@ -92,6 +101,7 @@ var webInterface = function(dbot) {
this.app.get('/', function(req, res) {
res.render('index', {
'name': dbot.config.name,
'user': req.user,
'routes': indexModules
});
});
@ -107,10 +117,14 @@ var webInterface = function(dbot) {
'failureRedirect': '/login',
'failureFlash': true
}), function(req, res) {
res.render('login', {
'user': req.user,
'message': 'Successfully logged in!'
});
if(req.body.redirect) {
res.redirect(req.body.redirect);
} else {
res.render('login', {
'user': req.user,
'message': 'Successfully logged in!'
});
}
});
this.app.get('/logout', function(req, res) {
@ -167,7 +181,8 @@ var webInterface = function(dbot) {
}
} else {
res.render('login', {
'message': 'You need to log in to access this module.'
'message': 'You need to log in to access this module.',
'redirect': module
});
}
} else {

View File

@ -230,8 +230,10 @@ div.imgwrap > img {
margin-right:10px;
margin-left:10px;
}
#footer a {
#bread {
float:right;
margin-left: 2px;
margin-right: 2px;
padding-left:2px;
padding-right:2px;
background-color:#f5f5f5;

View File

@ -16,7 +16,12 @@ html(lang='en')
div.container#main
block content
div#footer
a#project(href='/project') About
p#project
a#bread(href='/project') About
if user
span#bread Logged in as #{user.primaryNick}
else
a#bread(href='/login') Login
script(type="text/javascript", src="/bootstrap/js/bootstrap.min.js")
script(type="text/javascript", src="/d3/d3.v3.min.js")

View File

@ -8,6 +8,7 @@ block content
p #{message}
div#login
form(action='/login', method='post')
input(type="hidden", name="redirect", value=redirect)
p
key Username
input(type="text", name="username")