diff --git a/app.js b/app.js
index 068f48ec91..70a67da939 100644
--- a/app.js
+++ b/app.js
@@ -178,6 +178,11 @@ function Room(roomid, format, p1, p2, parentid, ranked)
}
else
{
+ var winner = getUser(selfR.battle.winner);
+ if (winner && !winner.authenticated)
+ {
+ winner.emit('console', {rawMessage: '
Register an account to protect your ladder rating!
'});
+ }
// update rankings
request({
uri: config.loginserver+'action.php?act=ladderupdate&serverid='+serverid+'&p1='+encodeURIComponent(p1)+'&p2='+encodeURIComponent(p2)+'&score='+p1score+'&format='+toId(selfR.ranked.format)+'&servertoken='+servertoken+'&nocache='+getTime(),
@@ -1367,7 +1372,7 @@ io.sockets.on('connection', function (socket) {
socket.on('rename', function(data) {
var youUser = resolveUser(you, socket);
if (!youUser) return;
- youUser.rename(data.name, data.token);
+ youUser.rename(data.name, data.token, data.auth);
});
socket.on('chat', function(message) {
var youUser = resolveUser(you, socket);
diff --git a/users.js b/users.js
index 0be4d9ba90..d4a83742c2 100644
--- a/users.js
+++ b/users.js
@@ -147,7 +147,10 @@ function User(name, person, token)
// skip the login server
var userid = toUserid(name);
- if (users[userid] && users[userid] !== selfP) return false;
+ if (users[userid] && users[userid] !== selfP)
+ {
+ return false;
+ }
if (selfP.named) selfP.prevNames[selfP.userid] = selfP.name;
@@ -168,7 +171,7 @@ function User(name, person, token)
delete users[oldid];
selfP.userid = userid;
users[selfP.userid] = selfP;
- selfP.authenticated = (authenticated || false);
+ selfP.authenticated = !!authenticated;
if (config.localsysop && selfP.ip === '127.0.0.1')
{
@@ -237,7 +240,13 @@ function User(name, person, token)
}
return true;
};
- this.rename = function(name, token) {
+ /**
+ *
+ * @param name The name you want
+ * @param token Login token
+ * @param auth Make sure this account will identify as registered
+ */
+ this.rename = function(name, token, auth) {
if (!name) name = '';
name = name.trim();
if (name.length > 18) name = name.substr(0,18);
@@ -247,6 +256,7 @@ function User(name, person, token)
name = name.substr(1);
}
var userid = toUserid(name);
+ if (selfP.authenticated) auth = false;
if (!userid)
{
@@ -255,11 +265,11 @@ function User(name, person, token)
selfP.emit('nameTaken', {userid: '', reason: "You did not specify a name."});
return false;
}
- else if (userid === selfP.userid)
+ else if (userid === selfP.userid && !auth)
{
return selfP.forceRename(name, selfP.authenticated);
}
- if (users[userid] && !users[userid].authenticated && users[userid].connected)
+ if (users[userid] && !users[userid].authenticated && users[userid].connected && !auth)
{
selfP.emit('nameTaken', {userid:selfP.userid, token:token, reason: "Someone is already using the name \""+users[userid].name+"\"."});
return false;
@@ -286,8 +296,15 @@ function User(name, person, token)
if (users[userid] && !users[userid].authenticated && users[userid].connected)
{
- selfP.emit('nameTaken', {userid:selfP.userid, token:token, reason: "Someone is already using the name \""+users[userid].name+"\"."});
- return false;
+ if (auth)
+ {
+ if (users[userid] !== selfP) users[userid].resetName();
+ }
+ else
+ {
+ selfP.emit('nameTaken', {userid:selfP.userid, token:token, reason: "Someone is already using the name \""+users[userid].name+"\"."});
+ return false;
+ }
}
var group = ' ';
var avatar = 0;
@@ -340,7 +357,7 @@ function User(name, person, token)
{
}
}
- if (users[userid])
+ if (users[userid] && users[userid] !== selfP)
{
// This user already exists; let's merge
var user = users[userid];