forked from EVOgeek/Vmeda.Online
		
	MOBILE-3960 config: Add new removeaccountonlogout config
This commit is contained in:
		
							parent
							
								
									9f63d7307c
								
							
						
					
					
						commit
						e505f1370a
					
				| @ -77,8 +77,14 @@ | ||||
|     <div class="ion-padding"> | ||||
|         <ion-button (click)="logout($event)" expand="block" color="danger" [attr.aria-label]="'core.mainmenu.logout' | translate" | ||||
|             class="ion-text-wrap"> | ||||
|             <ion-icon name="fas-sign-out-alt" slot="start" aria-hidden="true"></ion-icon> | ||||
|             {{ 'core.mainmenu.logout' | translate }} | ||||
|             <ng-container *ngIf="!removeAccountOnLogout"> | ||||
|                 <ion-icon name="fas-sign-out-alt" slot="start" aria-hidden="true"></ion-icon> | ||||
|                 {{ 'core.mainmenu.logout' | translate }} | ||||
|             </ng-container> | ||||
|             <ng-container *ngIf="removeAccountOnLogout"> | ||||
|                 <ion-icon name="fas-trash" slot="start" aria-hidden="true"></ion-icon> | ||||
|                 {{ 'core.login.removeaccount' | translate }} | ||||
|             </ng-container> | ||||
|         </ion-button> | ||||
|     </div> | ||||
| </ion-footer> | ||||
|  | ||||
| @ -15,6 +15,7 @@ | ||||
| import { CoreConstants } from '@/core/constants'; | ||||
| import { Component, OnDestroy, OnInit } from '@angular/core'; | ||||
| import { CoreSite, CoreSiteInfo } from '@classes/site'; | ||||
| import { CoreFilter } from '@features/filter/services/filter'; | ||||
| import { CoreLoginSitesComponent } from '@features/login/components/sites/sites'; | ||||
| import { CoreLoginHelper } from '@features/login/services/login-helper'; | ||||
| import { CoreUser, CoreUserProfile } from '@features/user/services/user'; | ||||
| @ -40,6 +41,7 @@ import { Subscription } from 'rxjs'; | ||||
| }) | ||||
| export class CoreMainMenuUserMenuComponent implements OnInit, OnDestroy { | ||||
| 
 | ||||
|     siteId?: string; | ||||
|     siteInfo?: CoreSiteInfo; | ||||
|     siteName?: string; | ||||
|     siteLogo?: string; | ||||
| @ -50,6 +52,7 @@ export class CoreMainMenuUserMenuComponent implements OnInit, OnDestroy { | ||||
|     loaded = false; | ||||
|     user?: CoreUserProfile; | ||||
|     displaySwitchAccount = true; | ||||
|     removeAccountOnLogout = false; | ||||
| 
 | ||||
|     protected subscription!: Subscription; | ||||
| 
 | ||||
| @ -58,10 +61,12 @@ export class CoreMainMenuUserMenuComponent implements OnInit, OnDestroy { | ||||
|      */ | ||||
|     async ngOnInit(): Promise<void> { | ||||
|         const currentSite = CoreSites.getRequiredCurrentSite(); | ||||
|         this.siteId = currentSite.getId(); | ||||
|         this.siteInfo = currentSite.getInfo(); | ||||
|         this.siteName = currentSite.getSiteName(); | ||||
|         this.siteUrl = currentSite.getURL(); | ||||
|         this.displaySwitchAccount = !currentSite.isFeatureDisabled('NoDelegate_SwitchAccount'); | ||||
|         this.removeAccountOnLogout = !!CoreConstants.CONFIG.removeaccountonlogout; | ||||
| 
 | ||||
|         this.loaded = true; | ||||
| 
 | ||||
| @ -167,9 +172,26 @@ export class CoreMainMenuUserMenuComponent implements OnInit, OnDestroy { | ||||
|      * @param event Click event | ||||
|      */ | ||||
|     async logout(event: Event): Promise<void> { | ||||
|         if (this.removeAccountOnLogout) { | ||||
|             // Ask confirm.
 | ||||
|             const siteName = this.siteName ? | ||||
|                 await CoreFilter.formatText(this.siteName, { clean: true, singleLine: true, filter: false }, [], this.siteId) : | ||||
|                 ''; | ||||
| 
 | ||||
|             try { | ||||
|                 await CoreDomUtils.showDeleteConfirm('core.login.confirmdeletesite', { sitename: siteName }); | ||||
|             } catch (error) { | ||||
|                 // User cancelled, stop.
 | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         await this.close(event); | ||||
| 
 | ||||
|         CoreSites.logout(true); | ||||
|         await CoreSites.logout({ | ||||
|             forceLogout: true, | ||||
|             removeAccount: this.removeAccountOnLogout, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -1184,7 +1184,7 @@ export class CoreSitesProvider { | ||||
|      * @param forceLogout If true, site will be marked as logged out, no matter the value tool_mobile_forcelogout. | ||||
|      * @return Promise resolved when the user is logged out. | ||||
|      */ | ||||
|     async logout(forceLogout = false): Promise<void> { | ||||
|     async logout(options: CoreSitesLogoutOptions = {}): Promise<void> { | ||||
|         if (!this.currentSite) { | ||||
|             return; | ||||
|         } | ||||
| @ -1195,7 +1195,7 @@ export class CoreSitesProvider { | ||||
| 
 | ||||
|         this.currentSite = undefined; | ||||
| 
 | ||||
|         if (forceLogout || (siteConfig && siteConfig.tool_mobile_forcelogout == '1')) { | ||||
|         if (options.forceLogout || (siteConfig && siteConfig.tool_mobile_forcelogout == '1')) { | ||||
|             promises.push(this.setSiteLoggedOut(siteId)); | ||||
|         } | ||||
| 
 | ||||
| @ -1203,6 +1203,10 @@ export class CoreSitesProvider { | ||||
| 
 | ||||
|         await CoreUtils.ignoreErrors(Promise.all(promises)); | ||||
| 
 | ||||
|         if (options.removeAccount) { | ||||
|             await CoreSites.deleteSite(siteId); | ||||
|         } | ||||
| 
 | ||||
|         CoreEvents.trigger(CoreEvents.LOGOUT, {}, siteId); | ||||
|     } | ||||
| 
 | ||||
| @ -1913,3 +1917,11 @@ export type CoreSitesLoginTokenResponse = { | ||||
|     debuginfo?: string; | ||||
|     reproductionlink?: string; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Options for logout. | ||||
|  */ | ||||
| export type CoreSitesLogoutOptions = { | ||||
|     forceLogout?: boolean; // If true, site will be marked as logged out, no matter the value tool_mobile_forcelogout.
 | ||||
|     removeAccount?: boolean; // If true, site will be removed too after logout.
 | ||||
| }; | ||||
|  | ||||
							
								
								
									
										1
									
								
								src/types/config.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								src/types/config.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -61,4 +61,5 @@ export interface EnvironmentConfig { | ||||
|     wsrequestqueuelimit: number; // Maximum number of requests allowed in the queue.
 | ||||
|     wsrequestqueuedelay: number; // Maximum number of miliseconds to wait before processing the queue.
 | ||||
|     calendarreminderdefaultvalue: number; // Initial value for default reminders (in seconds). User can change it later.
 | ||||
|     removeaccountonlogout?: boolean; // True to remove the account when the user clicks logout. Doesn't affect switch account.
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user