forked from EVOgeek/Vmeda.Online
		
	MOBILE-3565 login: Implement some todo functions of login helper
This commit is contained in:
		
							parent
							
								
									a39c65801b
								
							
						
					
					
						commit
						1d105b7299
					
				| @ -88,7 +88,7 @@ export class CoreLoginInitPage implements OnInit { | ||||
|                     // Site doesn't exist.
 | ||||
|                     return this.loadPage(); | ||||
|                 } | ||||
|             } else { | ||||
|             } else if (redirectData.page) { | ||||
|                 // No site to load, open the page.
 | ||||
|                 return CoreLoginHelper.instance.goToNoSitePage(redirectData.page, redirectData.params); | ||||
|             } | ||||
|  | ||||
| @ -52,7 +52,7 @@ export class CoreLoginHelperProvider { | ||||
|     protected logger: CoreLogger; | ||||
|     protected isSSOConfirmShown = 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; | ||||
|     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. | ||||
|      */ | ||||
|     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. | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
|     goToNoSitePage(page?: string, params?: Params): Promise<any> { | ||||
|         // @todo
 | ||||
|         return Promise.resolve(); | ||||
|     async goToNoSitePage(page: string, params?: Params): Promise<void> { | ||||
|         const currentPage = CoreApp.instance.getCurrentPage(); | ||||
| 
 | ||||
|         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. | ||||
|      * | ||||
|      * @param siteId Site to load. | ||||
|      * @param page Name of the page to load. | ||||
|      * @param params Params to pass to the page. | ||||
|      * @param siteId Site to load. | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
|     protected loadSiteAndPage(page: string, params: Params, siteId: string): Promise<any> { | ||||
|         // @todo
 | ||||
|         return Promise.resolve(); | ||||
|     protected async loadSiteAndPage(siteId: string, page: string, params?: Params): Promise<void> { | ||||
|         if (siteId == CoreConstants.NO_SITE_ID) { | ||||
|             // Page doesn't belong to a site, just load the page.
 | ||||
|             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 params Params to pass to the page. | ||||
|      */ | ||||
|     loadPageInMainMenu(page: string, params: Params): void { | ||||
|     loadPageInMainMenu(page: string, params?: Params): void { | ||||
|         if (!CoreApp.instance.isMainMenuOpen()) { | ||||
|             // Main menu not open. Store the page to be loaded later.
 | ||||
|             this.pageToLoad = { | ||||
| @ -827,9 +884,20 @@ export class CoreLoginHelperProvider { | ||||
|      * | ||||
|      * @param siteId The site ID. | ||||
|      */ | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
|     passwordChangeForced(siteId: string): void { | ||||
|         // @todo
 | ||||
|     async passwordChangeForced(siteId: string): Promise<void> { | ||||
|         const currentSite = CoreSites.instance.getCurrentSite(); | ||||
|         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. | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
|     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(); | ||||
|                 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) { | ||||
| @ -1166,7 +1269,12 @@ export class CoreLoginHelperProvider { | ||||
|             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.
 | ||||
| 
 | ||||
| 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 { CoreDB } from '@services/db'; | ||||
| import { CoreEvents } from '@singletons/events'; | ||||
| import { CoreUtils, PromiseDefer } from '@services/utils/utils'; | ||||
| import { CoreUrlUtils } from '@services/utils/url'; | ||||
| import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb'; | ||||
| import { CoreConstants } from '@core/constants'; | ||||
| 
 | ||||
| @ -56,7 +57,11 @@ export class CoreAppProvider { | ||||
|     // Variables for DB.
 | ||||
|     protected createVersionsTableReady: Promise<void>; | ||||
| 
 | ||||
|     constructor(appRef: ApplicationRef, zone: NgZone) { | ||||
|     constructor( | ||||
|         appRef: ApplicationRef, | ||||
|         zone: NgZone, | ||||
|         protected router: Router, | ||||
|     ) { | ||||
|         this.logger = CoreLogger.getInstance('CoreAppProvider'); | ||||
|         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 }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Get current page route without params. | ||||
|      * | ||||
|      * @return Current page route. | ||||
|      */ | ||||
|     getCurrentPage(): string { | ||||
|         return CoreUrlUtils.instance.removeUrlParams(this.router.url); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Get the application global database. | ||||
|      * | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user