Skip to content

Commit 1246c90

Browse files
authored
fix(directAccess/cloud-code): Pass installationId with LogIn (#6903)
InstallationId didn't get passed correctly. Resulting in _Session without installationId https://github.com/parse-community/parse-server/blob/master/src/Routers/UsersRouter.js#L263 * Fixed error with POST /login and req.query is undefined
1 parent 90f396b commit 1246c90

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

spec/ParseServerRESTController.spec.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,4 +662,35 @@ describe('ParseServerRESTController', () => {
662662
}
663663
);
664664
});
665+
666+
it('ensures logIn is saved with installationId', async () => {
667+
const installationId = 'installation123';
668+
const user = await RESTController.request(
669+
'POST',
670+
'/classes/_User',
671+
{ username: 'hello', password: 'world' },
672+
{ installationId }
673+
);
674+
expect(user.sessionToken).not.toBeUndefined();
675+
const query = new Parse.Query('_Session');
676+
let sessions = await query.find({ useMasterKey: true });
677+
678+
expect(sessions.length).toBe(1);
679+
expect(sessions[0].get('installationId')).toBe(installationId);
680+
expect(sessions[0].get('sessionToken')).toBe(user.sessionToken);
681+
682+
const loggedUser = await RESTController.request(
683+
'POST',
684+
'/login',
685+
{ username: 'hello', password: 'world' },
686+
{ installationId }
687+
);
688+
expect(loggedUser.sessionToken).not.toBeUndefined();
689+
sessions = await query.find({ useMasterKey: true });
690+
691+
// Should clean up old sessions with this installationId
692+
expect(sessions.length).toBe(1);
693+
expect(sessions[0].get('installationId')).toBe(installationId);
694+
expect(sessions[0].get('sessionToken')).toBe(loggedUser.sessionToken);
695+
});
665696
});

src/ParseServerRESTController.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ function ParseServerRESTController(applicationId, router) {
107107
info: {
108108
applicationId: applicationId,
109109
sessionToken: options.sessionToken,
110+
installationId: options.installationId,
110111
context: options.context || {}, // Add context
111112
},
112113
query,

src/Routers/UsersRouter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ export class UsersRouter extends ClassesRouter {
4141
// Use query parameters instead if provided in url
4242
let payload = req.body;
4343
if (
44-
(!payload.username && req.query.username) ||
45-
(!payload.email && req.query.email)
44+
(!payload.username && req.query && req.query.username) ||
45+
(!payload.email && req.query && req.query.email)
4646
) {
4747
payload = req.query;
4848
}

0 commit comments

Comments
 (0)