|
|
@@ -52,6 +52,10 @@ module.exports = WebsocketController =
|
|
|
metrics.inc "editor.leave-project"
|
|
|
Utils.getClientAttributes client, ["project_id", "user_id"], (error, {project_id, user_id}) ->
|
|
|
return callback(error) if error?
|
|
|
+
|
|
|
+ logger.log {project_id, user_id, client_id: client.id}, "client leaving project"
|
|
|
+ WebsocketLoadBalancer.emitToRoom project_id, "clientTracking.clientDisconnected", client.id
|
|
|
+
|
|
|
# bail out if the client had not managed to authenticate or join
|
|
|
# the project. Prevents downstream errors in docupdater from
|
|
|
# flushProjectToMongoAndDelete with null project_id.
|
|
|
@@ -61,9 +65,6 @@ module.exports = WebsocketController =
|
|
|
if not project_id?
|
|
|
logger.log {user_id: user_id, client_id: client.id}, "client leaving, not in project"
|
|
|
return callback()
|
|
|
-
|
|
|
- logger.log {project_id, user_id, client_id: client.id}, "client leaving project"
|
|
|
- WebsocketLoadBalancer.emitToRoom project_id, "clientTracking.clientDisconnected", client.id
|
|
|
|
|
|
# We can do this in the background
|
|
|
ConnectedUsersManager.markUserAsDisconnected project_id, client.id, (err) ->
|
|
|
@@ -129,7 +130,6 @@ module.exports = WebsocketController =
|
|
|
# after the initial joinDoc since we know they are already authorised.
|
|
|
## AuthorizationManager.removeAccessToDoc client, doc_id
|
|
|
callback()
|
|
|
-
|
|
|
updateClientPosition: (client, cursorData, callback = (error) ->) ->
|
|
|
metrics.inc "editor.update-client-position", 0.1
|
|
|
Utils.getClientAttributes client, [
|
|
|
@@ -137,7 +137,7 @@ module.exports = WebsocketController =
|
|
|
], (error, {project_id, first_name, last_name, email, user_id}) ->
|
|
|
return callback(error) if error?
|
|
|
logger.log {user_id, project_id, client_id: client.id, cursorData: cursorData}, "updating client position"
|
|
|
-
|
|
|
+
|
|
|
AuthorizationManager.assertClientCanViewProjectAndDoc client, cursorData.doc_id, (error) ->
|
|
|
if error?
|
|
|
logger.warn {err: error, client_id: client.id, project_id, user_id}, "silently ignoring unauthorized updateClientPosition. Client likely hasn't called joinProject yet."
|
|
|
@@ -145,13 +145,19 @@ module.exports = WebsocketController =
|
|
|
cursorData.id = client.id
|
|
|
cursorData.user_id = user_id if user_id?
|
|
|
cursorData.email = email if email?
|
|
|
- if first_name or last_name
|
|
|
+ # Don't store anonymous users in redis to avoid influx
|
|
|
+ if !user_id or user_id == 'anonymous-user'
|
|
|
+ cursorData.name = ""
|
|
|
+ callback()
|
|
|
+ else
|
|
|
cursorData.name = if first_name && last_name
|
|
|
"#{first_name} #{last_name}"
|
|
|
else if first_name
|
|
|
first_name
|
|
|
else if last_name
|
|
|
last_name
|
|
|
+ else
|
|
|
+ ""
|
|
|
ConnectedUsersManager.updateUserPosition(project_id, client.id, {
|
|
|
first_name: first_name,
|
|
|
last_name: last_name,
|
|
|
@@ -162,9 +168,6 @@ module.exports = WebsocketController =
|
|
|
column: cursorData.column,
|
|
|
doc_id: cursorData.doc_id
|
|
|
}, callback)
|
|
|
- else
|
|
|
- cursorData.name = "Anonymous"
|
|
|
- callback()
|
|
|
WebsocketLoadBalancer.emitToRoom(project_id, "clientTracking.clientUpdated", cursorData)
|
|
|
|
|
|
getConnectedUsers: (client, callback = (error, users) ->) ->
|
|
|
@@ -221,4 +224,4 @@ module.exports = WebsocketController =
|
|
|
for op in update.op
|
|
|
if !op.c?
|
|
|
return false
|
|
|
- return true
|
|
|
+ return true
|