Merge pull request #2446 from sbwalker/dev

add upgrade logic for sites using remapped identifier and email claim…
This commit is contained in:
Shaun Walker 2022-09-30 09:54:59 -04:00 committed by GitHub
commit e40bf08691
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 4 deletions

View File

@ -602,14 +602,10 @@ else
if (_providertype == AuthenticationProviderTypes.OpenIDConnect)
{
_scopes = "openid,profile,email";
_identifierclaimtype = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
_emailclaimtype = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
}
else
{
_scopes = "";
_identifierclaimtype = "sub";
_emailclaimtype = "email";
}
}
_redirecturl = PageState.Uri.Scheme + "://" + PageState.Alias.Name + "/signin-" + _providertype;

View File

@ -57,6 +57,9 @@ namespace Oqtane.Infrastructure
case "3.2.0":
Upgrade_3_2_0(tenant, scope);
break;
case "3.2.1":
Upgrade_3_2_1(tenant, scope);
break;
}
}
}
@ -264,5 +267,41 @@ namespace Oqtane.Infrastructure
}
}
private void Upgrade_3_2_1(Tenant tenant, IServiceScope scope)
{
try
{
// convert Identifier Claim Type and Email Claim Type
var settingRepository = scope.ServiceProvider.GetRequiredService<ISettingRepository>();
var siteRepository = scope.ServiceProvider.GetRequiredService<ISiteRepository>();
foreach (Site site in siteRepository.GetSites().ToList())
{
var settings = settingRepository.GetSettings(EntityNames.Site, site.SiteId).ToList();
var setting = settings.FirstOrDefault(item => item.SettingName == "ExternalLogin:IdentifierClaimType");
if (setting != null)
{
if (setting.SettingValue == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")
{
setting.SettingValue = "sub";
settingRepository.UpdateSetting(setting);
}
}
setting = settings.FirstOrDefault(item => item.SettingName == "ExternalLogin:EmailClaimType");
if (setting != null)
{
if (setting.SettingValue == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
{
setting.SettingValue = "email";
settingRepository.UpdateSetting(setting);
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine($"Oqtane Error: Error In 3.2.1 Upgrade Logic - {ex}");
}
}
}
}