mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-04 13:49:56 +01:00
username to userslug change
This commit is contained in:
@@ -13,18 +13,13 @@ var RDB = require('./redis.js'),
|
||||
.get('cid:' + category_id + ':name')
|
||||
.smembers('cid:' + category_id + ':active_users')
|
||||
.exec(function(err, replies) {
|
||||
category_name = replies[0];
|
||||
active_usernames = replies[1];
|
||||
var category_name = replies[0];
|
||||
var active_users = replies[1];
|
||||
|
||||
if (category_name === null) {
|
||||
callback(false);
|
||||
}
|
||||
|
||||
var active_users = [];
|
||||
for (var username in active_usernames) {
|
||||
active_users.push({'username': active_usernames[username]});
|
||||
}
|
||||
|
||||
var categoryData = {
|
||||
'category_name' : category_name,
|
||||
'show_sidebar' : 'show',
|
||||
@@ -32,7 +27,7 @@ var RDB = require('./redis.js'),
|
||||
'no_topics_message': 'hidden',
|
||||
'topic_row_size': 'span9',
|
||||
'category_id': category_id,
|
||||
'active_users': active_users,
|
||||
'active_users': [],
|
||||
'topics' : []
|
||||
};
|
||||
|
||||
@@ -48,6 +43,16 @@ var RDB = require('./redis.js'),
|
||||
});
|
||||
}
|
||||
|
||||
function getActiveUsers(next) {
|
||||
user.getMultipleUserFields(active_users, ['username','userslug'], function(users) {
|
||||
var activeUserData = [];
|
||||
for(var uid in users) {
|
||||
activeUserData.push(users[uid]);
|
||||
}
|
||||
next(null, activeUserData);
|
||||
});
|
||||
}
|
||||
|
||||
if (tids.length === 0) {
|
||||
getModerators(function(err, moderators) {
|
||||
categoryData.moderator_block_class = moderators.length > 0 ? '' : 'none';
|
||||
@@ -58,10 +63,11 @@ var RDB = require('./redis.js'),
|
||||
callback(categoryData);
|
||||
});
|
||||
} else {
|
||||
async.parallel([getTopics, getModerators], function(err, results) {
|
||||
async.parallel([getTopics, getModerators, getActiveUsers], function(err, results) {
|
||||
categoryData.topics = results[0];
|
||||
categoryData.moderator_block_class = results[1].length > 0 ? '' : 'none';
|
||||
categoryData.moderators = results[1];
|
||||
categoryData.active_users = results[2];
|
||||
callback(categoryData);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ marked.setOptions({
|
||||
}
|
||||
}
|
||||
|
||||
user.getMultipleUserFields(post_data.uid, ['username','reputation','picture', 'signature'], function(user_details) {
|
||||
user.getMultipleUserFields(post_data.uid, ['username', 'userslug', 'reputation', 'picture', 'signature'], function(user_details) {
|
||||
next(null, {
|
||||
users: user_details,
|
||||
posts: post_data
|
||||
@@ -272,7 +272,8 @@ marked.setOptions({
|
||||
RDB.spop('cid:' + cid + ':active_users');
|
||||
}
|
||||
|
||||
RDB.sadd('cid:' + cid + ':active_users', data.username);
|
||||
//RDB.sadd('cid:' + cid + ':active_users', data.username);
|
||||
RDB.sadd('cid:' + cid + ':active_users', uid);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -28,13 +28,14 @@ var user = require('./../user.js'),
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/users/:username', function(req, res) {
|
||||
if(!req.params.username) {
|
||||
app.get('/users/:userslug', function(req, res) {
|
||||
|
||||
if(!req.params.userslug) {
|
||||
res.send("User doesn't exist!");
|
||||
return;
|
||||
}
|
||||
|
||||
user.get_uid_by_username(req.params.username, function(uid) {
|
||||
user.get_uid_by_userslug(req.params.userslug, function(uid) {
|
||||
if(!uid) {
|
||||
res.redirect('/404');
|
||||
return;
|
||||
@@ -42,7 +43,7 @@ var user = require('./../user.js'),
|
||||
|
||||
user.getUserData(uid, function(data) {
|
||||
if(data) {
|
||||
res.send(app.build_header(res) + app.create_route('users/'+data.username, 'account') + templates['footer']);
|
||||
res.send(app.build_header(res) + app.create_route('users/'+data.userslug, 'account') + templates['footer']);
|
||||
}
|
||||
else {
|
||||
res.redirect('/404');
|
||||
@@ -51,15 +52,15 @@ var user = require('./../user.js'),
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/users/:username/edit', function(req, res){
|
||||
app.get('/users/:userslug/edit', function(req, res){
|
||||
|
||||
if(!req.user)
|
||||
return res.redirect('/403');
|
||||
|
||||
user.getUserField(req.user.uid, 'username', function(username) {
|
||||
user.getUserField(req.user.uid, 'userslug', function(userslug) {
|
||||
|
||||
if(req.params.username && username === req.params.username)
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.username+'/edit','accountedit') + templates['footer']);
|
||||
if(req.params.userslug && userslug === req.params.userslug)
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.userslug+'/edit','accountedit') + templates['footer']);
|
||||
else
|
||||
return res.redirect('/404');
|
||||
});
|
||||
@@ -217,35 +218,35 @@ var user = require('./../user.js'),
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/users/:username/following', function(req, res) {
|
||||
app.get('/users/:userslug/following', function(req, res) {
|
||||
|
||||
if(!req.user)
|
||||
return res.redirect('/403');
|
||||
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.username+'/following','following') + templates['footer']);
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.userslug+'/following','following') + templates['footer']);
|
||||
});
|
||||
|
||||
app.get('/users/:username/followers', function(req, res) {
|
||||
app.get('/users/:userslug/followers', function(req, res) {
|
||||
|
||||
if(!req.user)
|
||||
return res.redirect('/403');
|
||||
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.username+'/followers','followers') + templates['footer']);
|
||||
res.send(app.build_header(res) + app.create_route('users/'+req.params.userslug+'/followers','followers') + templates['footer']);
|
||||
});
|
||||
|
||||
function api_method(req, res) {
|
||||
|
||||
|
||||
var callerUID = req.user?req.user.uid : 0;
|
||||
|
||||
if (!req.params.section && !req.params.username) {
|
||||
|
||||
if (!req.params.section && !req.params.userslug) {
|
||||
|
||||
user.getUserList(function(data){
|
||||
user.getUserList(function(data) {
|
||||
res.json({users:data});
|
||||
});
|
||||
}
|
||||
else if(String(req.params.section).toLowerCase() === 'following') {
|
||||
|
||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||
getUserDataByUserSlug(req.params.userslug, callerUID, function(userData) {
|
||||
|
||||
user.getFollowing(userData.uid, function(followingData){
|
||||
userData.following = followingData;
|
||||
@@ -256,7 +257,7 @@ var user = require('./../user.js'),
|
||||
}
|
||||
else if(String(req.params.section).toLowerCase() === 'followers') {
|
||||
|
||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||
getUserDataByUserSlug(req.params.userslug, callerUID, function(userData) {
|
||||
|
||||
user.getFollowers(userData.uid, function(followersData){
|
||||
userData.followers = followersData;
|
||||
@@ -266,11 +267,11 @@ var user = require('./../user.js'),
|
||||
});
|
||||
}
|
||||
else if (String(req.params.section).toLowerCase() === 'edit') {
|
||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||
getUserDataByUserSlug(req.params.userslug, callerUID, function(userData) {
|
||||
res.json(userData);
|
||||
});
|
||||
} else {
|
||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||
getUserDataByUserSlug(req.params.userslug, callerUID, function(userData) {
|
||||
|
||||
user.isFollowing(callerUID, userData.theirid, function(isFollowing) {
|
||||
userData.isFollowing = isFollowing;
|
||||
@@ -285,11 +286,11 @@ var user = require('./../user.js'),
|
||||
|
||||
}
|
||||
|
||||
app.get('/api/users/:username?/:section?', api_method);
|
||||
app.get('/api/users/:userslug?/:section?', api_method);
|
||||
|
||||
function getUserDataByUserName(username, callerUID, callback) {
|
||||
function getUserDataByUserSlug(userslug, callerUID, callback) {
|
||||
|
||||
user.get_uid_by_username(username, function(uid) {
|
||||
user.get_uid_by_userslug(userslug, function(uid) {
|
||||
|
||||
user.getUserData(uid, function(data) {
|
||||
if(data) {
|
||||
|
||||
@@ -234,7 +234,6 @@ var RDB = require('./redis.js'),
|
||||
async.parallel([
|
||||
function(next) {
|
||||
topics.get_topic(tid, 0, function(threadData) {
|
||||
// console.log(threadData);
|
||||
notifications.create(threadData.teaser_username + ' has posted a reply to: "' + threadData.title + '"', null, '/topic/' + tid, 'topic:' + tid, function(nid) {
|
||||
next(null, nid);
|
||||
});
|
||||
|
||||
@@ -79,6 +79,7 @@ marked.setOptions({
|
||||
'timestamp' : postData.timestamp[i],
|
||||
'relativeTime': utils.relativeTime(postData.timestamp[i]),
|
||||
'username' : userData[uid].username || 'anonymous',
|
||||
'userslug' : userData[uid].userslug || '',
|
||||
'user_rep' : userData[uid].reputation || 0,
|
||||
'gravatar' : userData[uid].picture || 'http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e',
|
||||
'signature' : marked(userData[uid].signature || ''),
|
||||
|
||||
59
src/user.js
59
src/user.js
@@ -136,6 +136,30 @@ var utils = require('./../public/src/utils.js'),
|
||||
});
|
||||
}
|
||||
|
||||
User.delete = function(uid, callback) {
|
||||
RDB.exists('user:'+uid, function(err, exists) {
|
||||
if(exists === 1) {
|
||||
console.log('deleting uid ' + uid);
|
||||
|
||||
User.getUserData(uid, function(data) {
|
||||
|
||||
RDB.del('username:' + data['username'] + ':uid');
|
||||
RDB.del('email:' + data['email'] +':uid');
|
||||
RDB.del('userslug:'+ data['userslug'] +':uid');
|
||||
|
||||
RDB.del('user:' + uid);
|
||||
RDB.del('followers:' + uid);
|
||||
RDB.del('following:' + uid);
|
||||
|
||||
RDB.lrem('userlist', 1, uid);
|
||||
|
||||
callback(true);
|
||||
});
|
||||
}
|
||||
else
|
||||
callback(false);
|
||||
});
|
||||
}
|
||||
|
||||
User.create = function(username, password, email, callback) {
|
||||
|
||||
@@ -144,13 +168,11 @@ var utils = require('./../public/src/utils.js'),
|
||||
RDB.handle(err);
|
||||
|
||||
var gravatar = User.createGravatarURLFromEmail(email);
|
||||
|
||||
var userSlug = utils.slugify(username);
|
||||
|
||||
console.log(userSlug);
|
||||
var userslug = utils.slugify(username);
|
||||
|
||||
RDB.hmset('user:'+uid, {
|
||||
'username' : username,
|
||||
'userslug' : userslug,
|
||||
'fullname': '',
|
||||
'location':'',
|
||||
'birthday':'',
|
||||
@@ -169,6 +191,7 @@ var utils = require('./../public/src/utils.js'),
|
||||
|
||||
RDB.set('username:' + username + ':uid', uid);
|
||||
RDB.set('email:' + email +':uid', uid);
|
||||
RDB.set('userslug:'+ userslug +':uid', uid);
|
||||
|
||||
if(email)
|
||||
User.sendConfirmationEmail(email);
|
||||
@@ -387,6 +410,13 @@ var utils = require('./../public/src/utils.js'),
|
||||
});
|
||||
};
|
||||
|
||||
User.get_uid_by_userslug = function(userslug, callback) {
|
||||
RDB.get('userslug:' + userslug + ':uid', function(err, data) {
|
||||
RDB.handle(err);
|
||||
callback(data);
|
||||
});
|
||||
};
|
||||
|
||||
User.get_usernames_by_uids = function(uids, callback) {
|
||||
var usernames = [];
|
||||
|
||||
@@ -394,7 +424,7 @@ var utils = require('./../public/src/utils.js'),
|
||||
|
||||
for(var i=0, ii=uids.length; i<ii; ++i) {
|
||||
|
||||
User.getUserField(uids[i],'username', function(username){
|
||||
User.getUserField(uids[i],'username', function(username) {
|
||||
|
||||
usernames.push(username);
|
||||
|
||||
@@ -402,7 +432,24 @@ var utils = require('./../public/src/utils.js'),
|
||||
callback(usernames);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
User.get_userslugs_by_uids = function(uids, callback) {
|
||||
var userslugs = [];
|
||||
|
||||
if (!Array.isArray(uids)) return callback([]);
|
||||
|
||||
for(var i=0, ii=uids.length; i<ii; ++i) {
|
||||
|
||||
User.getUserField(uids[i],'userslug', function(userslug) {
|
||||
|
||||
userslugs.push(userslug);
|
||||
|
||||
if(userslugs.length >= uids.length)
|
||||
callback(userslugs);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
User.get_uid_by_email = function(email, callback) {
|
||||
RDB.get('email:' + email + ':uid', function(err, data) {
|
||||
|
||||
@@ -295,7 +295,6 @@ var express = require('express'),
|
||||
res.send();
|
||||
});
|
||||
|
||||
|
||||
//START TODO: MOVE TO GRAPH.JS
|
||||
|
||||
app.get('/graph/users/:username/picture', function(req, res) {
|
||||
|
||||
@@ -109,11 +109,16 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
||||
|
||||
|
||||
user.get_usernames_by_uids(uids, function(usernames) {
|
||||
io.sockets.in(data.enter).emit('api:get_users_in_room', {
|
||||
usernames: usernames,
|
||||
uids: uids,
|
||||
anonymous: anonymous
|
||||
user.get_userslugs_by_uids(uids, function(userslugs) {
|
||||
|
||||
io.sockets.in(data.enter).emit('api:get_users_in_room', {
|
||||
usernames: usernames,
|
||||
userslugs: userslugs,
|
||||
uids: uids,
|
||||
anonymous: anonymous
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
if (data.enter != 'admin') io.sockets.in('admin').emit('api:get_all_rooms', io.sockets.manager.rooms);
|
||||
|
||||
Reference in New Issue
Block a user