mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
RUN npm install AFTER PULLING THIS COMMIT!
Added user label to header, gravatar support
This commit is contained in:
@@ -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>
|
||||
|
||||
39
src/user.js
39
src/user.js
@@ -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);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user