Skip to content

Commit 3405078

Browse files
committed
MOBILE-3279 login: Allow disabling identity providers
1 parent 421ea59 commit 3405078

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/core/login/pages/credentials/credentials.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,9 @@ export class CoreLoginCredentialsPage {
155155
this.siteName = CoreConfigConstants.sitename ? CoreConfigConstants.sitename : this.siteConfig.sitename;
156156
this.logoUrl = this.siteConfig.logourl || this.siteConfig.compactlogourl;
157157
this.authInstructions = this.siteConfig.authinstructions || this.translate.instant('core.login.loginsteps');
158-
this.identityProviders = this.loginHelper.getValidIdentityProviders(this.siteConfig);
159158

160159
const disabledFeatures = this.loginHelper.getDisabledFeatures(this.siteConfig);
160+
this.identityProviders = this.loginHelper.getValidIdentityProviders(this.siteConfig, disabledFeatures);
161161
this.canSignup = this.siteConfig.registerauth == 'email' &&
162162
!this.loginHelper.isEmailSignupDisabled(this.siteConfig, disabledFeatures);
163163
this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(this.siteConfig, disabledFeatures);

src/core/login/pages/reconnect/reconnect.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ export class CoreLoginReconnectPage {
7474
*/
7575
ionViewDidLoad(): void {
7676
if (this.siteConfig) {
77-
this.identityProviders = this.loginHelper.getValidIdentityProviders(this.siteConfig);
78-
this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(this.siteConfig);
77+
this.getDataFromConfig(this.siteConfig);
7978
}
8079

8180
this.sitesProvider.getSite(this.siteId).then((site) => {
@@ -100,7 +99,7 @@ export class CoreLoginReconnectPage {
10099
this.logoUrl = config.logourl || config.compactlogourl;
101100
}
102101

103-
this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(config);
102+
this.getDataFromConfig(this.siteConfig);
104103
}).catch(() => {
105104
this.cancel();
106105
});
@@ -111,7 +110,18 @@ export class CoreLoginReconnectPage {
111110
// Shouldn't happen. Just leave the view.
112111
this.cancel();
113112
});
113+
}
114+
115+
/**
116+
* Get some data (like identity providers) from the site config.
117+
*
118+
* @param config Config to use.
119+
*/
120+
protected getDataFromConfig(config: any): void {
121+
const disabledFeatures = this.loginHelper.getDisabledFeatures(config);
114122

123+
this.identityProviders = this.loginHelper.getValidIdentityProviders(config, disabledFeatures);
124+
this.showForgottenPassword = !this.loginHelper.isForgottenPasswordDisabled(config);
115125
}
116126

117127
/**

src/core/login/providers/helper.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,16 +430,25 @@ export class CoreLoginHelperProvider {
430430
* Get the valid identity providers from a site config.
431431
*
432432
* @param siteConfig Site's public config.
433+
* @param disabledFeatures List of disabled features already treated. If not provided it will be calculated.
433434
* @return Valid identity providers.
434435
*/
435-
getValidIdentityProviders(siteConfig: any): any[] {
436+
getValidIdentityProviders(siteConfig: any, disabledFeatures?: string): any[] {
437+
if (this.isFeatureDisabled('NoDelegate_IdentityProviders', siteConfig, disabledFeatures)) {
438+
// Identity providers are disabled, return an empty list.
439+
return [];
440+
}
441+
436442
const validProviders = [],
437443
httpUrl = this.textUtils.concatenatePaths(siteConfig.wwwroot, 'auth/oauth2/'),
438444
httpsUrl = this.textUtils.concatenatePaths(siteConfig.httpswwwroot, 'auth/oauth2/');
439445

440446
if (siteConfig.identityproviders && siteConfig.identityproviders.length) {
441447
siteConfig.identityproviders.forEach((provider) => {
442-
if (provider.url && (provider.url.indexOf(httpsUrl) != -1 || provider.url.indexOf(httpUrl) != -1)) {
448+
const urlParams = this.urlUtils.extractUrlParams(provider.url);
449+
450+
if (provider.url && (provider.url.indexOf(httpsUrl) != -1 || provider.url.indexOf(httpUrl) != -1) &&
451+
!this.isFeatureDisabled('NoDelegate_IdentityProvider_' + urlParams.id, siteConfig, disabledFeatures)) {
443452
validProviders.push(provider);
444453
}
445454
});

0 commit comments

Comments
 (0)