From ada49974f4b635e611dfb22a1fc28c8495d73a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 20 Aug 2019 09:27:27 +0200 Subject: [PATCH 1/2] MOBILE-3117 login: Check you entered the credentials page again --- src/core/login/pages/credentials/credentials.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/login/pages/credentials/credentials.ts b/src/core/login/pages/credentials/credentials.ts index eb791bab4..fbf6eb574 100644 --- a/src/core/login/pages/credentials/credentials.ts +++ b/src/core/login/pages/credentials/credentials.ts @@ -81,6 +81,13 @@ export class CoreLoginCredentialsPage { } } + /** + * View enter. + */ + ionViewDidEnter(): void { + this.viewLeft = false; + } + /** * View left. */ From a347a6d4ed9adec6336c296b13b59a2ee41f3bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 20 Aug 2019 09:35:00 +0200 Subject: [PATCH 2/2] MOBILE-3117 login: Fix logout on reconnect --- src/app/app.component.ts | 5 ++- src/core/login/pages/reconnect/reconnect.html | 2 +- src/core/login/pages/reconnect/reconnect.ts | 15 ++++---- src/providers/sites.ts | 35 ++++++++----------- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 1be81e471..cd0200f8d 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -25,6 +25,7 @@ import { CoreCustomURLSchemesProvider } from '@providers/urlschemes'; import { CoreLoginHelperProvider } from '@core/login/providers/helper'; import { Keyboard } from '@ionic-native/keyboard'; import { ScreenOrientation } from '@ionic-native/screen-orientation'; +import { CoreLoginSitesPage } from '@core/login/pages/sites/sites'; @Component({ templateUrl: 'app.html' @@ -74,7 +75,9 @@ export class MoodleMobileApp implements OnInit { ngOnInit(): void { this.eventsProvider.on(CoreEventsProvider.LOGOUT, () => { // Go to sites page when user is logged out. - this.appProvider.getRootNavController().setRoot('CoreLoginSitesPage'); + // Due to DeepLinker, we need to use the ViewCtrl instead of name. + // Otherwise some pages are re-created when they shouldn't. + this.appProvider.getRootNavController().setRoot(CoreLoginSitesPage); // Unload lang custom strings. this.langProvider.clearCustomStrings(); diff --git a/src/core/login/pages/reconnect/reconnect.html b/src/core/login/pages/reconnect/reconnect.html index 7d4cadb37..44955e85a 100644 --- a/src/core/login/pages/reconnect/reconnect.html +++ b/src/core/login/pages/reconnect/reconnect.html @@ -39,7 +39,7 @@ - {{ 'core.login.cancel' | translate }} + {{ 'core.login.cancel' | translate }} diff --git a/src/core/login/pages/reconnect/reconnect.ts b/src/core/login/pages/reconnect/reconnect.ts index ba08c11be..c653e51a6 100644 --- a/src/core/login/pages/reconnect/reconnect.ts +++ b/src/core/login/pages/reconnect/reconnect.ts @@ -101,13 +101,16 @@ export class CoreLoginReconnectPage { /** * Cancel reconnect. + * + * @param {Event} [e] Event. */ - cancel(): void { - this.sitesProvider.logout().catch(() => { - // Ignore errors (shouldn't happen). - }).finally(() => { - this.navCtrl.setRoot('CoreLoginSitesPage'); - }); + cancel(e?: Event): void { + if (e) { + e.preventDefault(); + e.stopPropagation(); + } + + this.sitesProvider.logout(); } /** diff --git a/src/providers/sites.ts b/src/providers/sites.ts index a80aca762..c52b205a5 100644 --- a/src/providers/sites.ts +++ b/src/providers/sites.ts @@ -27,7 +27,6 @@ import { CoreConfigConstants } from '../configconstants'; import { CoreSite } from '@classes/site'; import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb'; import { Md5 } from 'ts-md5/dist/md5'; -import { Location } from '@angular/common'; import { WP_PROVIDER } from '@app/app.module'; /** @@ -326,7 +325,7 @@ export class CoreSitesProvider { constructor(logger: CoreLoggerProvider, private http: HttpClient, private sitesFactory: CoreSitesFactoryProvider, private appProvider: CoreAppProvider, private translate: TranslateService, private urlUtils: CoreUrlUtilsProvider, - private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider, private location: Location, + private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider, private utils: CoreUtilsProvider, private injector: Injector) { this.logger = logger.getInstance('CoreSitesProvider'); @@ -1221,27 +1220,23 @@ export class CoreSitesProvider { * @return {Promise} Promise resolved when the user is logged out. */ logout(): Promise { - if (!this.currentSite) { - // Already logged out. - return Promise.resolve(); + let siteId; + const promises = []; + + if (this.currentSite) { + const siteConfig = this.currentSite.getStoredConfig(); + siteId = this.currentSite.getId(); + + this.currentSite = undefined; + + if (siteConfig && siteConfig.tool_mobile_forcelogout == '1') { + promises.push(this.setSiteLoggedOut(siteId, true)); + } + + promises.push(this.appDB.deleteRecords(this.CURRENT_SITE_TABLE, { id: 1 })); } - const siteId = this.currentSite.getId(), - siteConfig = this.currentSite.getStoredConfig(), - promises = []; - - this.currentSite = undefined; - - if (siteConfig && siteConfig.tool_mobile_forcelogout == '1') { - promises.push(this.setSiteLoggedOut(siteId, true)); - } - - promises.push(this.appDB.deleteRecords(this.CURRENT_SITE_TABLE, { id: 1 })); - return Promise.all(promises).finally(() => { - // Due to DeepLinker, we need to remove the path from the URL, otherwise some pages are re-created when they shouldn't. - this.location.replaceState(''); - this.eventsProvider.trigger(CoreEventsProvider.LOGOUT, {}, siteId); }); }