From 0f7e5a2f2f73cb112b8350bdf00d8ea6b9736e81 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 22 Jul 2021 16:39:06 -0600 Subject: [PATCH] fix null auto link options. --- .../BackOfficeExternalLoginProviderOptions.cs | 2 +- .../services/externallogininfo.service.js | 103 +++++++++--------- 2 files changed, 54 insertions(+), 51 deletions(-) diff --git a/src/Umbraco.Web.BackOffice/Security/BackOfficeExternalLoginProviderOptions.cs b/src/Umbraco.Web.BackOffice/Security/BackOfficeExternalLoginProviderOptions.cs index cdbcd0b8e8..977f981e52 100644 --- a/src/Umbraco.Web.BackOffice/Security/BackOfficeExternalLoginProviderOptions.cs +++ b/src/Umbraco.Web.BackOffice/Security/BackOfficeExternalLoginProviderOptions.cs @@ -32,7 +32,7 @@ namespace Umbraco.Cms.Web.BackOffice.Security /// /// Options used to control how users can be auto-linked/created/updated based on the external login provider /// - public ExternalSignInAutoLinkOptions AutoLinkOptions { get; set; } + public ExternalSignInAutoLinkOptions AutoLinkOptions { get; set; } = new ExternalSignInAutoLinkOptions(); /// /// When set to true will disable all local user login functionality diff --git a/src/Umbraco.Web.UI.Client/src/common/services/externallogininfo.service.js b/src/Umbraco.Web.UI.Client/src/common/services/externallogininfo.service.js index b44f79dd65..10092aaf38 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/externallogininfo.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/externallogininfo.service.js @@ -5,63 +5,66 @@ **/ function externalLoginInfoService(externalLoginInfo, umbRequestHelper) { - function getLoginProvider(provider) { - if (provider) { - var found = _.find(externalLoginInfo.providers, x => x.authType == provider); - return found; - } - return null; + function getLoginProvider(provider) { + if (provider) { + var found = _.find(externalLoginInfo.providers, x => x.authType == provider); + return found; } + return null; + } - function getLoginProviderView(provider) { - if (provider && provider.properties && provider.properties.CustomBackOfficeView) { - return umbRequestHelper.convertVirtualToAbsolutePath(provider.properties.CustomBackOfficeView); - } - return null; + function getLoginProviderView(provider) { + if (provider && provider.properties && provider.properties.CustomBackOfficeView) { + return umbRequestHelper.convertVirtualToAbsolutePath(provider.properties.CustomBackOfficeView); } + return null; + } - /** - * Returns true if any provider denies local login if `provider` is null, else whether the passed - * @param {any} provider - */ - function hasDenyLocalLogin(provider) { - if (!provider) { - return _.some(externalLoginInfo.providers, x => x.properties && (x.properties.DenyLocalLogin === true)); - } - else { - return provider && provider.properties && (provider.properties.DenyLocalLogin === true); - } + /** + * Returns true if any provider denies local login if `provider` is null, else whether the passed + * @param {any} provider + */ + function hasDenyLocalLogin(provider) { + if (!provider) { + return _.some(externalLoginInfo.providers, x => x.properties && (x.properties.DenyLocalLogin === true)); } - - /** - * Returns all login providers - */ - function getLoginProviders() { - return externalLoginInfo.providers; + else { + return provider && provider.properties && (provider.properties.DenyLocalLogin === true); } + } - /** Returns all logins providers that have options that the user can interact with */ - function getLoginProvidersWithOptions() { - // only include providers that allow manual linking or ones that provide a custom view - var providers = _.filter(externalLoginInfo.providers, x => { - // transform the data and also include the custom view as a nicer property - x.customView = getLoginProviderView(x); - if (x.customView) { - return true; - } - else { - return x.properties.AutoLinkOptions.AllowManualLinking; - } - }); - return providers; - } + /** + * Returns all login providers + */ + function getLoginProviders() { + return externalLoginInfo.providers; + } - return { - hasDenyLocalLogin: hasDenyLocalLogin, - getLoginProvider: getLoginProvider, - getLoginProviders: getLoginProviders, - getLoginProvidersWithOptions: getLoginProvidersWithOptions, - getLoginProviderView: getLoginProviderView - }; + /** Returns all logins providers that have options that the user can interact with */ + function getLoginProvidersWithOptions() { + // only include providers that allow manual linking or ones that provide a custom view + var providers = _.filter(externalLoginInfo.providers, x => { + // transform the data and also include the custom view as a nicer property + x.customView = getLoginProviderView(x); + if (x.customView) { + return true; + } + else if (x.properties.AutoLinkOptions) { + return x.properties.AutoLinkOptions.AllowManualLinking; + } + else { + return false; + } + }); + return providers; + } + + return { + hasDenyLocalLogin: hasDenyLocalLogin, + getLoginProvider: getLoginProvider, + getLoginProviders: getLoginProviders, + getLoginProvidersWithOptions: getLoginProvidersWithOptions, + getLoginProviderView: getLoginProviderView + }; } angular.module('umbraco.services').factory('externalLoginInfoService', externalLoginInfoService);