MOBILE-3565 login: Implement some todo functions of login helper
parent
a39c65801b
commit
1d105b7299
|
@ -88,7 +88,7 @@ export class CoreLoginInitPage implements OnInit {
|
||||||
// Site doesn't exist.
|
// Site doesn't exist.
|
||||||
return this.loadPage();
|
return this.loadPage();
|
||||||
}
|
}
|
||||||
} else {
|
} else if (redirectData.page) {
|
||||||
// No site to load, open the page.
|
// No site to load, open the page.
|
||||||
return CoreLoginHelper.instance.goToNoSitePage(redirectData.page, redirectData.params);
|
return CoreLoginHelper.instance.goToNoSitePage(redirectData.page, redirectData.params);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ export class CoreLoginHelperProvider {
|
||||||
protected logger: CoreLogger;
|
protected logger: CoreLogger;
|
||||||
protected isSSOConfirmShown = false;
|
protected isSSOConfirmShown = false;
|
||||||
protected isOpenEditAlertShown = false;
|
protected isOpenEditAlertShown = false;
|
||||||
protected pageToLoad?: {page: string; params: Params; time: number}; // Page to load once main menu is opened.
|
protected pageToLoad?: {page: string; params?: Params; time: number}; // Page to load once main menu is opened.
|
||||||
protected isOpeningReconnect = false;
|
protected isOpeningReconnect = false;
|
||||||
waitingForBrowser = false;
|
waitingForBrowser = false;
|
||||||
|
|
||||||
|
@ -123,7 +123,13 @@ export class CoreLoginHelperProvider {
|
||||||
* Function called when an SSO InAppBrowser is closed or the app is resumed. Check if user needs to be logged out.
|
* Function called when an SSO InAppBrowser is closed or the app is resumed. Check if user needs to be logged out.
|
||||||
*/
|
*/
|
||||||
checkLogout(): void {
|
checkLogout(): void {
|
||||||
// @todo
|
const currentSite = CoreSites.instance.getCurrentSite();
|
||||||
|
const currentPage = CoreApp.instance.getCurrentPage();
|
||||||
|
|
||||||
|
if (!CoreApp.instance.isSSOAuthenticationOngoing() && currentSite?.isLoggedOut() && currentPage == 'login/reconnect') {
|
||||||
|
// User must reauthenticate but he closed the InAppBrowser without doing so, logout him.
|
||||||
|
CoreSites.instance.logout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -444,10 +450,38 @@ export class CoreLoginHelperProvider {
|
||||||
* @param params Params of the page.
|
* @param params Params of the page.
|
||||||
* @return Promise resolved when done.
|
* @return Promise resolved when done.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
async goToNoSitePage(page: string, params?: Params): Promise<void> {
|
||||||
goToNoSitePage(page?: string, params?: Params): Promise<any> {
|
const currentPage = CoreApp.instance.getCurrentPage();
|
||||||
// @todo
|
|
||||||
return Promise.resolve();
|
if (currentPage == page) {
|
||||||
|
// Already at page, nothing to do.
|
||||||
|
} else if (page == '/login/sites') {
|
||||||
|
// Just open the page as root.
|
||||||
|
await this.navCtrl.navigateRoot(page, { queryParams: params });
|
||||||
|
} else if (page == '/login/credentials' && currentPage == '/login/site') {
|
||||||
|
// Just open the new page to keep the navigation history.
|
||||||
|
await this.navCtrl.navigateForward(page, { queryParams: params });
|
||||||
|
} else {
|
||||||
|
// Check if there is any site stored.
|
||||||
|
const hasSites = await CoreSites.instance.hasSites();
|
||||||
|
|
||||||
|
if (!hasSites) {
|
||||||
|
// There are sites stored, open sites page first to be able to go back.
|
||||||
|
await this.navCtrl.navigateRoot('/login/sites');
|
||||||
|
|
||||||
|
await this.navCtrl.navigateForward(page, { queryParams: params });
|
||||||
|
} else {
|
||||||
|
if (page != '/login/site') {
|
||||||
|
// Open the new site page to be able to go back.
|
||||||
|
await this.navCtrl.navigateRoot('/login/site');
|
||||||
|
|
||||||
|
await this.navCtrl.navigateForward(page, { queryParams: params });
|
||||||
|
} else {
|
||||||
|
// Just open the page as root.
|
||||||
|
await this.navCtrl.navigateRoot(page, { queryParams: params });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -611,15 +645,38 @@ export class CoreLoginHelperProvider {
|
||||||
/**
|
/**
|
||||||
* Load a site and load a certain page in that site.
|
* Load a site and load a certain page in that site.
|
||||||
*
|
*
|
||||||
|
* @param siteId Site to load.
|
||||||
* @param page Name of the page to load.
|
* @param page Name of the page to load.
|
||||||
* @param params Params to pass to the page.
|
* @param params Params to pass to the page.
|
||||||
* @param siteId Site to load.
|
|
||||||
* @return Promise resolved when done.
|
* @return Promise resolved when done.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
protected async loadSiteAndPage(siteId: string, page: string, params?: Params): Promise<void> {
|
||||||
protected loadSiteAndPage(page: string, params: Params, siteId: string): Promise<any> {
|
if (siteId == CoreConstants.NO_SITE_ID) {
|
||||||
// @todo
|
// Page doesn't belong to a site, just load the page.
|
||||||
return Promise.resolve();
|
await this.navCtrl.navigateRoot(page, params);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const modal = await CoreDomUtils.instance.showModalLoading();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const loggedIn = await CoreSites.instance.loadSite(siteId, page, params);
|
||||||
|
|
||||||
|
if (!loggedIn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.openMainMenu({
|
||||||
|
redirectPage: page,
|
||||||
|
redirectParams: params,
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
// Site doesn't exist.
|
||||||
|
await this.navCtrl.navigateRoot('/login/sites');
|
||||||
|
} finally {
|
||||||
|
modal.dismiss();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -628,7 +685,7 @@ export class CoreLoginHelperProvider {
|
||||||
* @param page Name of the page to load.
|
* @param page Name of the page to load.
|
||||||
* @param params Params to pass to the page.
|
* @param params Params to pass to the page.
|
||||||
*/
|
*/
|
||||||
loadPageInMainMenu(page: string, params: Params): void {
|
loadPageInMainMenu(page: string, params?: Params): void {
|
||||||
if (!CoreApp.instance.isMainMenuOpen()) {
|
if (!CoreApp.instance.isMainMenuOpen()) {
|
||||||
// Main menu not open. Store the page to be loaded later.
|
// Main menu not open. Store the page to be loaded later.
|
||||||
this.pageToLoad = {
|
this.pageToLoad = {
|
||||||
|
@ -827,9 +884,20 @@ export class CoreLoginHelperProvider {
|
||||||
*
|
*
|
||||||
* @param siteId The site ID.
|
* @param siteId The site ID.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
async passwordChangeForced(siteId: string): Promise<void> {
|
||||||
passwordChangeForced(siteId: string): void {
|
const currentSite = CoreSites.instance.getCurrentSite();
|
||||||
// @todo
|
if (!currentSite || siteId !== currentSite.getId()) {
|
||||||
|
return; // Site that triggered the event is not current site.
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentPage = CoreApp.instance.getCurrentPage();
|
||||||
|
|
||||||
|
// If current page is already change password, stop.
|
||||||
|
if (currentPage == '/login/changepassword') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.navCtrl.navigateRoot('/login/changepassword', { queryParams: { siteId } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -886,9 +954,26 @@ export class CoreLoginHelperProvider {
|
||||||
* @param siteId Site to load. If not defined, current site.
|
* @param siteId Site to load. If not defined, current site.
|
||||||
* @return Promise resolved when done.
|
* @return Promise resolved when done.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
async redirect(page: string, params?: Params, siteId?: string): Promise<void> {
|
async redirect(page: string, params?: Params, siteId?: string): Promise<void> {
|
||||||
// @todo
|
siteId = siteId || CoreSites.instance.getCurrentSiteId();
|
||||||
|
|
||||||
|
if (CoreSites.instance.isLoggedIn()) {
|
||||||
|
if (siteId && siteId != CoreSites.instance.getCurrentSiteId()) {
|
||||||
|
// Target page belongs to a different site. Change site.
|
||||||
|
// @todo: Check site plugins.
|
||||||
|
await CoreSites.instance.logout();
|
||||||
|
|
||||||
|
await this.loadSiteAndPage(siteId, page, params);
|
||||||
|
} else {
|
||||||
|
this.loadPageInMainMenu(page, params);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (siteId) {
|
||||||
|
await this.loadSiteAndPage(siteId, page, params);
|
||||||
|
} else {
|
||||||
|
await this.navCtrl.navigateRoot('/login/sites');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1013,7 +1098,25 @@ export class CoreLoginHelperProvider {
|
||||||
|
|
||||||
const info = currentSite.getInfo();
|
const info = currentSite.getInfo();
|
||||||
if (typeof info != 'undefined' && typeof info.username != 'undefined' && !this.isOpeningReconnect) {
|
if (typeof info != 'undefined' && typeof info.username != 'undefined' && !this.isOpeningReconnect) {
|
||||||
// @todo
|
// If current page is already reconnect, stop.
|
||||||
|
if (CoreApp.instance.getCurrentPage() == '/login/reconnect') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isOpeningReconnect = true;
|
||||||
|
|
||||||
|
await CoreUtils.instance.ignoreErrors(this.navCtrl.navigateRoot('/login/reconnect', {
|
||||||
|
queryParams: {
|
||||||
|
infoSiteUrl: info.siteurl,
|
||||||
|
siteUrl: result.siteUrl,
|
||||||
|
siteId: siteId,
|
||||||
|
pageName: data.pageName,
|
||||||
|
pageParams: data.params,
|
||||||
|
siteConfig: result.config,
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.isOpeningReconnect = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -1166,7 +1269,12 @@ export class CoreLoginHelperProvider {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo Navigate to site policy page.
|
// If current page is already site policy, stop.
|
||||||
|
if (CoreApp.instance.getCurrentPage() == '/login/sitepolicy') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.navCtrl.navigateRoot('/login/sitepolicy', { queryParams: { siteId: siteId } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,12 +13,13 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable, NgZone, ApplicationRef } from '@angular/core';
|
import { Injectable, NgZone, ApplicationRef } from '@angular/core';
|
||||||
import { Params } from '@angular/router';
|
import { Params, Router } from '@angular/router';
|
||||||
import { Connection } from '@ionic-native/network/ngx';
|
import { Connection } from '@ionic-native/network/ngx';
|
||||||
|
|
||||||
import { CoreDB } from '@services/db';
|
import { CoreDB } from '@services/db';
|
||||||
import { CoreEvents } from '@singletons/events';
|
import { CoreEvents } from '@singletons/events';
|
||||||
import { CoreUtils, PromiseDefer } from '@services/utils/utils';
|
import { CoreUtils, PromiseDefer } from '@services/utils/utils';
|
||||||
|
import { CoreUrlUtils } from '@services/utils/url';
|
||||||
import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb';
|
import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb';
|
||||||
import { CoreConstants } from '@core/constants';
|
import { CoreConstants } from '@core/constants';
|
||||||
|
|
||||||
|
@ -56,7 +57,11 @@ export class CoreAppProvider {
|
||||||
// Variables for DB.
|
// Variables for DB.
|
||||||
protected createVersionsTableReady: Promise<void>;
|
protected createVersionsTableReady: Promise<void>;
|
||||||
|
|
||||||
constructor(appRef: ApplicationRef, zone: NgZone) {
|
constructor(
|
||||||
|
appRef: ApplicationRef,
|
||||||
|
zone: NgZone,
|
||||||
|
protected router: Router,
|
||||||
|
) {
|
||||||
this.logger = CoreLogger.getInstance('CoreAppProvider');
|
this.logger = CoreLogger.getInstance('CoreAppProvider');
|
||||||
this.db = CoreDB.instance.getDB(DBNAME);
|
this.db = CoreDB.instance.getDB(DBNAME);
|
||||||
|
|
||||||
|
@ -185,6 +190,15 @@ export class CoreAppProvider {
|
||||||
await this.db.insertRecord(SCHEMA_VERSIONS_TABLE_NAME, { name: schema.name, version: schema.version });
|
await this.db.insertRecord(SCHEMA_VERSIONS_TABLE_NAME, { name: schema.name, version: schema.version });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current page route without params.
|
||||||
|
*
|
||||||
|
* @return Current page route.
|
||||||
|
*/
|
||||||
|
getCurrentPage(): string {
|
||||||
|
return CoreUrlUtils.instance.removeUrlParams(this.router.url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the application global database.
|
* Get the application global database.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue