diff --git a/src/core/login/pages/credentials/credentials.html b/src/core/login/pages/credentials/credentials.html index e34139c6c..467bb49dd 100644 --- a/src/core/login/pages/credentials/credentials.html +++ b/src/core/login/pages/credentials/credentials.html @@ -36,7 +36,7 @@ -
+
diff --git a/src/core/login/pages/credentials/credentials.ts b/src/core/login/pages/credentials/credentials.ts index de94968cf..ed0b43d0e 100644 --- a/src/core/login/pages/credentials/credentials.ts +++ b/src/core/login/pages/credentials/credentials.ts @@ -43,6 +43,7 @@ export class CoreLoginCredentialsPage { pageLoaded = false; isBrowserSSO = false; isFixedUrlSet = false; + showForgottenPassword = true; protected siteConfig; protected eventThrown = false; @@ -50,9 +51,14 @@ export class CoreLoginCredentialsPage { protected siteId: string; protected urlToOpen: string; - constructor(private navCtrl: NavController, navParams: NavParams, fb: FormBuilder, private appProvider: CoreAppProvider, - private sitesProvider: CoreSitesProvider, private loginHelper: CoreLoginHelperProvider, - private domUtils: CoreDomUtilsProvider, private translate: TranslateService, + constructor(private navCtrl: NavController, + navParams: NavParams, + fb: FormBuilder, + private appProvider: CoreAppProvider, + private sitesProvider: CoreSitesProvider, + private loginHelper: CoreLoginHelperProvider, + private domUtils: CoreDomUtilsProvider, + private translate: TranslateService, private eventsProvider: CoreEventsProvider) { this.siteUrl = navParams.get('siteUrl'); @@ -149,9 +155,13 @@ export class CoreLoginCredentialsPage { this.siteName = CoreConfigConstants.sitename ? CoreConfigConstants.sitename : this.siteConfig.sitename; this.logoUrl = this.siteConfig.logourl || this.siteConfig.compactlogourl; this.authInstructions = this.siteConfig.authinstructions || this.translate.instant('core.login.loginsteps'); - this.canSignup = this.siteConfig.registerauth == 'email' && !this.loginHelper.isEmailSignupDisabled(this.siteConfig); this.identityProviders = this.loginHelper.getValidIdentityProviders(this.siteConfig); + const disabledFeatures = this.loginHelper.getDisabledFeatures(this.siteConfig); + this.canSignup = this.siteConfig.registerauth == 'email' && + !this.loginHelper.isEmailSignupDisabled(this.siteConfig, disabledFeatures); + this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(this.siteConfig, disabledFeatures); + if (!this.eventThrown && !this.viewLeft) { this.eventThrown = true; this.eventsProvider.trigger(CoreEventsProvider.LOGIN_SITE_CHECKED, { config: this.siteConfig }); diff --git a/src/core/login/pages/reconnect/reconnect.html b/src/core/login/pages/reconnect/reconnect.html index 99e9ab99d..1aed56c2a 100644 --- a/src/core/login/pages/reconnect/reconnect.html +++ b/src/core/login/pages/reconnect/reconnect.html @@ -50,7 +50,7 @@ -
+ diff --git a/src/core/login/pages/reconnect/reconnect.ts b/src/core/login/pages/reconnect/reconnect.ts index 3ec8479a3..58e24a078 100644 --- a/src/core/login/pages/reconnect/reconnect.ts +++ b/src/core/login/pages/reconnect/reconnect.ts @@ -36,6 +36,7 @@ export class CoreLoginReconnectPage { logoUrl: string; identityProviders: any[]; site: any; + showForgottenPassword = true; protected infoSiteUrl: string; protected pageName: string; @@ -44,9 +45,13 @@ export class CoreLoginReconnectPage { protected isLoggedOut: boolean; protected siteId: string; - constructor(private navCtrl: NavController, navParams: NavParams, fb: FormBuilder, private appProvider: CoreAppProvider, - private sitesProvider: CoreSitesProvider, private loginHelper: CoreLoginHelperProvider, - private domUtils: CoreDomUtilsProvider) { + constructor(private navCtrl: NavController, + navParams: NavParams, + fb: FormBuilder, + private appProvider: CoreAppProvider, + private sitesProvider: CoreSitesProvider, + private loginHelper: CoreLoginHelperProvider, + private domUtils: CoreDomUtilsProvider) { const currentSite = this.sitesProvider.getCurrentSite(); @@ -69,6 +74,7 @@ export class CoreLoginReconnectPage { ionViewDidLoad(): void { if (this.siteConfig) { this.identityProviders = this.loginHelper.getValidIdentityProviders(this.siteConfig); + this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(this.siteConfig); } this.sitesProvider.getSite(this.siteId).then((site) => { @@ -87,9 +93,10 @@ export class CoreLoginReconnectPage { // Check logoURL if user avatar is not set. if (this.site.avatar.startsWith(site.infos.siteurl + '/theme/image.php')) { this.site.avatar = false; - this.logoUrl = config.logourl || config.compactlogourl; } + + this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(config); }).catch(() => { this.cancel(); }); diff --git a/src/core/login/providers/helper.ts b/src/core/login/providers/helper.ts index 86ff47643..34cadb2f9 100644 --- a/src/core/login/providers/helper.ts +++ b/src/core/login/providers/helper.ts @@ -322,6 +322,21 @@ export class CoreLoginHelperProvider { }); } + /** + * Get disabled features from a site public config. + * + * @param config Site public config. + * @return Disabled features. + */ + getDisabledFeatures(config: any): string { + const disabledFeatures = config && config.tool_mobile_disabledfeatures; + if (!disabledFeatures) { + return ''; + } + + return this.textUtils.treatDisabledFeatures(disabledFeatures); + } + /** * Builds an object with error messages for some common errors. * Please notice that this function doesn't support all possible error types. @@ -555,17 +570,27 @@ export class CoreLoginHelperProvider { * Given a site public config, check if email signup is disabled. * * @param config Site public config. + * @param disabledFeatures List of disabled features already treated. If not provided it will be calculated. * @return Whether email signup is disabled. */ - isEmailSignupDisabled(config: any): boolean { - let disabledFeatures = config && config.tool_mobile_disabledfeatures; - if (!disabledFeatures) { - return false; + isEmailSignupDisabled(config?: any, disabledFeatures?: string): boolean { + return this.isFeatureDisabled('CoreLoginEmailSignup', config, disabledFeatures); + } + + /** + * Given a site public config, check if a certian feature is disabled. + * + * @param feature Feature to check. + * @param config Site public config. + * @param disabledFeatures List of disabled features already treated. If not provided it will be calculated. + * @return Whether email signup is disabled. + */ + isFeatureDisabled(feature: string, config?: any, disabledFeatures?: string): boolean { + if (typeof disabledFeatures == 'undefined') { + disabledFeatures = this.getDisabledFeatures(config); } - disabledFeatures = this.textUtils.treatDisabledFeatures(disabledFeatures); - - const regEx = new RegExp('(,|^)CoreLoginEmailSignup(,|$)', 'g'); + const regEx = new RegExp('(,|^)' + feature + '(,|$)', 'g'); return !!disabledFeatures.match(regEx); } @@ -583,6 +608,17 @@ export class CoreLoginHelperProvider { return !!CoreConfigConstants.siteurl; } + /** + * Given a site public config, check if forgotten password is disabled. + * + * @param config Site public config. + * @param disabledFeatures List of disabled features already treated. If not provided it will be calculated. + * @return Whether it's disabled. + */ + isForgottenPasswordDisabled(config?: any, disabledFeatures?: string): boolean { + return this.isFeatureDisabled('NoDelegate_ForgottenPassword', config, disabledFeatures); + } + /** * Check if current site is logged out, triggering mmCoreEventSessionExpired if it is. *