fix: allow LiveQuery on Parse.Session (#7554)

This commit is contained in:
dblythy
2021-10-09 02:24:33 +11:00
committed by GitHub
parent 484c2e81ca
commit caee281bc5
7 changed files with 120 additions and 22 deletions

View File

@@ -729,10 +729,12 @@ class ParseLiveQueryServer {
}
const client = this.clients.get(parseWebsocket.clientId);
const className = request.query.className;
let authCalled = false;
try {
const trigger = getTrigger(className, 'beforeSubscribe', Parse.applicationId);
if (trigger) {
const auth = await this.getAuthFromClient(client, request.requestId, request.sessionToken);
authCalled = true;
if (auth && auth.user) {
request.user = auth.user;
}
@@ -749,6 +751,30 @@ class ParseLiveQueryServer {
request.query = query;
}
if (className === '_Session') {
if (!authCalled) {
const auth = await this.getAuthFromClient(
client,
request.requestId,
request.sessionToken
);
if (auth && auth.user) {
request.user = auth.user;
}
}
if (request.user) {
request.query.where.user = request.user.toPointer();
} else if (!request.master) {
Client.pushError(
parseWebsocket,
Parse.Error.INVALID_SESSION_TOKEN,
'Invalid session token',
false,
request.requestId
);
return;
}
}
// Get subscription from subscriptions, create one if necessary
const subscriptionHash = queryHash(request.query);
// Add className to subscriptions if necessary