Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions apps/central/src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ The following meta fields are supported for bottom-level routes:
However, NotFound requires neither: a user can navigate to NotFound whether
they are logged in or anonymous.

- skipAutoLogout (default: false): If `true`, no alert will be displayed when
session is about to expire. Also user will be not be redirected to login
page when session has expired.

requestData
-----------

Expand Down Expand Up @@ -699,7 +695,6 @@ const routesByName = new Map();
requireAnonymity: false,
preserveData: [],
fullWidth: false,
skipAutoLogout: false,
...meta,
validateData: meta == null || meta.validateData == null
? []
Expand Down
5 changes: 2 additions & 3 deletions apps/central/src/util/session.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,10 @@ export const logOut = (container, setNext) => {
// approach rather than using setTimeout() to schedule logout, because
// setTimeout() does not seem to clock time while the computer is asleep.
const logOutBeforeSessionExpires = (container) => {
const { i18n, requestData, alert, router } = container;
const { i18n, requestData, alert } = container;
const { session } = requestData;
let alerted;
return () => {
if (router.currentRoute.value.meta.skipAutoLogout) return;
if (!session.dataExists) return;
const millisUntilExpires = Date.parse(session.expiresAt) - Date.now();
const millisUntilLogout = millisUntilExpires - 60000;
Expand All @@ -183,7 +182,7 @@ const logOutBeforeSessionExpires = (container) => {
const logOutAfterStorageChange = (container) => (event) => {
// event.key == null if the user clears local storage in Chrome.
if ((event.key == null || event.key === 'sessionExpires') &&
container.requestData.session.dataExists && !container.router.currentRoute.value.meta.skipAutoLogout) {
container.requestData.session.dataExists) {
logOut(container, true).catch(noop);
}
};
Expand Down
63 changes: 0 additions & 63 deletions apps/central/test/unit/session.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -667,27 +667,6 @@ describe('util/session', () => {
clock.tick(240000);
});
});

it('does not logout when skipAutoLogout is true', () => {
const clock = sinon.useFakeTimers();
testData.extendedUsers.createPast(1, { role: 'none' });
const container = createTestContainer({ router: mockRouter('/') });
container.router.currentRoute.value.meta.skipAutoLogout = true;
withSetup(useSessions, { container });
const { session } = setRequestData(container.requestData, {
session: testData.sessions.createNew({ expiresAt: '1970-01-01T00:05:00Z' })
});
return mockHttp(container)
.request(() => logIn(container, true))
.respondWithData(() => testData.extendedUsers.first())
.complete()
.testNoRequest(() => {
clock.tick(240000);
})
.afterResponse(() => {
session.dataExists.should.be.true;
});
});
});

describe('logout after session expiration', () => {
Expand Down Expand Up @@ -808,25 +787,6 @@ describe('util/session', () => {
alert.state.should.be.false;
});
});

it('does not show alert if skipAutoLogout is true', () => {
const clock = sinon.useFakeTimers();
testData.extendedUsers.createPast(1, { role: 'none' });
const container = createTestContainer({ router: mockRouter('/') });
container.router.currentRoute.value.meta.skipAutoLogout = true;
withSetup(useSessions, { container });
const { requestData, alert } = container;
setRequestData(requestData, {
session: testData.sessions.createNew({ expiresAt: '1970-01-01T00:05:00Z' })
});
return mockHttp(container)
.request(() => logIn(container, true))
.respondWithData(() => testData.extendedUsers.first())
.afterResponse(() => {
clock.tick(120000);
alert.state.should.be.false;
});
});
});

describe('local storage changes', () => {
Expand Down Expand Up @@ -876,29 +836,6 @@ describe('util/session', () => {
});
});

it('does not logs out if skipAutoLogout is true', () => {
testData.extendedUsers.createPast(1, { role: 'none' });
const container = createTestContainer({ router: mockRouter('/') });
container.router.currentRoute.value.meta.skipAutoLogout = true;
withSetup(useSessions, { container });
const { session } = setRequestData(container.requestData, {
session: testData.sessions.createNew()
});
return mockHttp(container)
.request(() => logIn(container, true))
.respondWithData(() => testData.extendedUsers.first())
.complete()
.testNoRequest(() => {
window.dispatchEvent(new StorageEvent('storage', {
key: null,
url: window.location.href
}));
})
.afterResponse(() => {
session.dataExists.should.be.true;
});
});

it('sets the ?next query parameter', () => {
mockLogin();
return load('/users')
Expand Down
Loading