mirror of
https://github.com/reality/dbot.git
synced 2024-11-27 14:29:29 +01:00
basic skellington for web login stuff [#538]
This commit is contained in:
parent
fe965049f9
commit
d1d62be6f2
5
modules/web/strings.js
Normal file
5
modules/web/strings.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"web_pass_set": {
|
||||||
|
"en": "Congratulations, your account is now set up to log into the web interface!"
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,10 @@
|
|||||||
var express = require('express'),
|
var express = require('express'),
|
||||||
|
passport = require('passport'),
|
||||||
|
passHash = require('password-hash'),
|
||||||
|
flash = require('connect-flash'),
|
||||||
_ = require('underscore')._,
|
_ = require('underscore')._,
|
||||||
fs = require('fs');
|
fs = require('fs'),
|
||||||
|
LocalStrategy = require('passport-local').Strategy;
|
||||||
|
|
||||||
var webInterface = function(dbot) {
|
var webInterface = function(dbot) {
|
||||||
this.config = dbot.config.modules.web;
|
this.config = dbot.config.modules.web;
|
||||||
@ -9,6 +13,39 @@ var webInterface = function(dbot) {
|
|||||||
|
|
||||||
this.app.use(express.static(this.pub));
|
this.app.use(express.static(this.pub));
|
||||||
this.app.set('view engine', 'jade');
|
this.app.set('view engine', 'jade');
|
||||||
|
this.app.use(express.cookieParser());
|
||||||
|
this.app.use(express.methodOverride());
|
||||||
|
this.app.use(express.session({ 'secret': 'wat' }));
|
||||||
|
this.app.use(flash());
|
||||||
|
|
||||||
|
this.app.use(passport.initialize());
|
||||||
|
this.app.use(passport.session());
|
||||||
|
this.app.use(app.router);
|
||||||
|
|
||||||
|
passport.use(new LocalStrategy(function(username, pass, callback) {
|
||||||
|
var splitUser = username.split('@'),
|
||||||
|
server = splitUser[1],
|
||||||
|
username = splitUser[0];
|
||||||
|
|
||||||
|
dbot.api.users.resolveUser(server, username, function(user) {
|
||||||
|
if(user) {
|
||||||
|
this.api.getWebUser(user.id, function(webUser) {
|
||||||
|
if(webUser) {
|
||||||
|
var hash = passHash.generate(pass);
|
||||||
|
if(webUser.password === hash) {
|
||||||
|
return callback(null, user);
|
||||||
|
} else {
|
||||||
|
return callback(null, false, { 'message': 'Incorrect password.' });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return callback(null, false, { 'message': 'Use ~setwebpass to set up your account for web login.' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return callback(null, false, { 'message': 'Unknown user' });
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
var server = this.app.listen(this.config.webPort);
|
var server = this.app.listen(this.config.webPort);
|
||||||
|
|
||||||
@ -44,15 +81,16 @@ var webInterface = function(dbot) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(indexModules);
|
|
||||||
|
|
||||||
// TODO: get list of loaded modules
|
|
||||||
this.app.get('/', function(req, res) {
|
this.app.get('/', function(req, res) {
|
||||||
res.render('index', {
|
res.render('index', {
|
||||||
'name': dbot.config.name,
|
'name': dbot.config.name,
|
||||||
'routes': indexModules
|
'routes': indexModules
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.app.get('/login', function(req, res) {
|
||||||
|
|
||||||
|
});
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
|
|
||||||
this.onDestroy = function() {
|
this.onDestroy = function() {
|
||||||
@ -67,6 +105,31 @@ var webInterface = function(dbot) {
|
|||||||
} else {
|
} else {
|
||||||
return 'http://' + this.config.webHost + ':' + this.config.webPort + '/' + path;
|
return 'http://' + this.config.webHost + ':' + this.config.webPort + '/' + path;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'getWebUser': function(id) {
|
||||||
|
this.db.read('web_users', id, function(err, webUser) {
|
||||||
|
if(!err) callback(webUser);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.commands = {
|
||||||
|
'~setwebpassword': function(event) {
|
||||||
|
var newPass = event.input[1];
|
||||||
|
this.api.getWebUser(event.rUser.id, function(webUser) {
|
||||||
|
if(!webUser) {
|
||||||
|
webUser = {
|
||||||
|
'id': event.rUser.id,
|
||||||
|
'password': false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
webUser.password = passHash.generate(newPass);
|
||||||
|
|
||||||
|
this.db.save('web_users', webUser.id, webUser, function(result) {
|
||||||
|
event.reply(dbot.t('web_pass_set'));
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user