RUN npm install AFTER PULLING THIS COMMIT!

Added user label to header, gravatar support
v1.18.x
Julian Lam 12 years ago
parent 4730bc0f6f
commit cb9a110a5d

@ -16,7 +16,8 @@
"emailjs": "0.3.4",
"cookie": "0.0.6",
"connect-redis": "1.4.5",
"path": "0.4.9"
"path": "0.4.9",
"crypto": "0.0.3"
},
"devDependencies": {},
"optionalDependencies": {},

@ -15,7 +15,8 @@
(function() {
var num_users = document.getElementById('number_of_users'),
latest_user = document.getElementById('latest_user'),
active_users = document.getElementById('active_users');
active_users = document.getElementById('active_users'),
user_label = document.getElementById('user_label');
socket.emit('user.count', {});
socket.on('user.count', function(data) {
@ -29,6 +30,17 @@
socket.on('api:user.active.get', function(data) {
active_users.innerHTML = 'There ' + (parseInt(data.users) !== 1 ? 'are' : 'is') + ' <strong>' + data.users + '</strong> user' + (parseInt(data.users) !== 1 ? 's' : '') + ' and <strong>' + data.anon + '</strong> guest' + (parseInt(data.anon) !== 1 ? 's' : '') + ' online';
});
socket.emit('api:user.get', { fields: ['username', 'picture'] });
socket.on('api:user.get', function(data) {
var gravatar = document.createElement('img'),
name = document.createElement('span');
name.innerHTML = data['username'];
gravatar.src = data['picture'];
user_label.appendChild(gravatar);
user_label.appendChild(name);
});
}());
</script>
<!-- END Forum Info -->

@ -102,6 +102,16 @@
.topic-container li.topic-row:hover {
background-color: #eee;
}
#user_label img {
border: 1px solid #999;
margin-right: 8px;
}
#user_label span {
font-size: 12px;
font-weight: bold;
}
</style>
</head>
@ -117,7 +127,7 @@
<li><a href="/login">Login</a></li>
</ul>
<ul class="nav pull-right">
<li><a href="/account">Account</a></li>
<li><p class="navbar-text" id="user_label"></p></li>
<li><a href="/logout">Log out</a></li>
</ul>
</div>

@ -1,11 +1,50 @@
var config = require('../config.js'),
utils = require('../utils.js'),
RDB = require('./redis.js'),
crypto = require('crypto'),
emailjs = require('emailjs'),
emailjsServer = emailjs.server.connect(config.mailer);
(function(User) {
User.get = function(uid, fields) {
if (uid > 0) {
var keys = [],
returnData = {},
removeEmail = false;
if (!(fields instanceof Array)) fields = ['username', 'email'];
if (fields.indexOf('picture') !== -1 && fields.indexOf('email') === -1) {
fields.push('email');
removeEmail = true;
}
for(var f=0,numFields=fields.length;f<numFields;f++) {
keys.push('uid:' + uid + ':' + fields[f]);
}
RDB.mget(keys, function(data) {
for(var x=0,numData=data.length;x<numData;x++) {
returnData[fields[x]] = data[x];
}
console.log(returnData);
if (returnData.picture !== undefined) {
var md5sum = crypto.createHash('md5');
md5sum.update(returnData.email.toLowerCase());
returnData.picture = 'http://www.gravatar.com/avatar/' + md5sum.digest('hex') + '?s=24';
if (removeEmail) delete returnData.email;
}
socket.emit('api:user.get', returnData);
});
} else {
socket.emit('api:user.get', {
username: "Anonymous User",
email: '',
picture: 'http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?s=24'
});
}
}
User.login = function(user) {
if (user.username == null || user.password == null) {
return global.socket.emit('user.login', {'status': 0, 'message': 'Missing fields'});

@ -48,6 +48,10 @@ var SocketIO = require('socket.io').listen(global.server),
// BEGIN: API calls (todo: organize)
// julian: :^)
socket.on('api:user.get', function(data) {
modules.user.get(uid, data.fields);
});
socket.on('user.create', function(data) {
modules.user.create(data.username, data.password, data.email);
});

Loading…
Cancel
Save