feat: Allow Parse.Session.current on expired session token instead of throwing error (#8722)

BREAKING CHANGE: `Parse.Session.current()` no longer throws an error if the session token is expired, but instead returns the session token with its expiration date to allow checking its validity
This commit is contained in:
Diamond Lewis
2023-12-25 13:40:49 -06:00
committed by GitHub
parent a22f095a47
commit f9dde4a9f8
2 changed files with 30 additions and 1 deletions

View File

@@ -3224,6 +3224,35 @@ describe('Parse.User testing', () => {
.catch(done.fail);
});
it('should return current session with expired expiration date', async () => {
await Parse.User.signUp('buser', 'somepass', null);
const response = await request({
method: 'GET',
url: 'http://localhost:8378/1/classes/_Session',
headers: {
'X-Parse-Application-Id': 'test',
'X-Parse-Master-Key': 'test',
},
});
const body = response.data;
const id = body.results[0].objectId;
const expiresAt = new Date(new Date().setYear(2015));
await request({
method: 'PUT',
url: 'http://localhost:8378/1/classes/_Session/' + id,
headers: {
'X-Parse-Application-Id': 'test',
'X-Parse-Master-Key': 'test',
'Content-Type': 'application/json',
},
body: {
expiresAt: { __type: 'Date', iso: expiresAt.toISOString() },
},
});
const session = await Parse.Session.current();
expect(session.get('expiresAt')).toEqual(expiresAt);
});
it('should not create extraneous session tokens', done => {
const config = Config.get(Parse.applicationId);
config.database

View File

@@ -342,7 +342,7 @@ const handleRateLimit = async (req, res, next) => {
export const handleParseSession = async (req, res, next) => {
try {
const info = req.info;
if (req.auth) {
if (req.auth || req.url === '/sessions/me') {
next();
return;
}