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.
*