MOBILE-4362 auth: Fix redirect to other site in slow devices

main
Dani Palou 2023-10-19 12:37:02 +02:00
parent b982a96305
commit 1250779328
3 changed files with 6 additions and 7 deletions

View File

@ -54,7 +54,7 @@ export class CoreMainMenuAuthGuard implements CanLoad, CanActivate {
// Pass redirect data (if any and belongs to same site). // Pass redirect data (if any and belongs to same site).
let redirect = CoreApp.consumeMemoryRedirect(); let redirect = CoreApp.consumeMemoryRedirect();
if (!redirect?.timemodified || Date.now() - redirect.timemodified > 20000 || redirect.siteId !== siteId) { if (redirect?.siteId !== siteId) {
redirect = null; redirect = null;
} }

View File

@ -44,16 +44,10 @@ export class CoreRedirectGuard implements CanLoad, CanActivate {
*/ */
private async guard(): Promise<true | UrlTree> { private async guard(): Promise<true | UrlTree> {
const redirect = CoreApp.consumeMemoryRedirect(); const redirect = CoreApp.consumeMemoryRedirect();
if (!redirect) { if (!redirect) {
return true; return true;
} }
// Only accept the redirect if it was stored less than 20 seconds ago.
if (!redirect.timemodified || Date.now() - redirect.timemodified > 20000) {
return true;
}
// Redirect to site path. // Redirect to site path.
if (redirect.siteId && redirect.siteId !== CoreConstants.NO_SITE_ID) { if (redirect.siteId && redirect.siteId !== CoreConstants.NO_SITE_ID) {
const redirectData: CoreRedirectPayload = { const redirectData: CoreRedirectPayload = {

View File

@ -488,6 +488,11 @@ export class CoreAppProvider {
this.forgetRedirect(); this.forgetRedirect();
if (redirect && (!redirect.timemodified || Date.now() - redirect.timemodified > 300000)) {
// Redirect data is only valid for 5 minutes, discard it.
return null;
}
return redirect; return redirect;
} }