minor improvements to security features, use ActivatorUtilities.CreateInstance with SiteMigration to enable simpler DI

This commit is contained in:
Shaun Walker 2022-04-12 07:46:43 -04:00
parent 3abfbab5d1
commit 355d0405f4
4 changed files with 12 additions and 20 deletions

View File

@ -6,6 +6,7 @@
@inject ISiteService SiteService
@inject IStringLocalizer<Index> Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer
@inject SiteState SiteState
@if (userroles == null)
{
@ -536,6 +537,11 @@ else
await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId);
await SettingService.ClearSiteSettingsCacheAsync();
if (!string.IsNullOrEmpty(_secret))
{
SiteState.AuthorizationToken = await UserService.GetTokenAsync();
}
AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success);
}
catch (Exception ex)

View File

@ -192,6 +192,7 @@ namespace Oqtane.Extensions
var _users = httpContext.RequestServices.GetRequiredService<IUserRepository>();
var _userRoles = httpContext.RequestServices.GetRequiredService<IUserRoleRepository>();
var providerType = httpContext.GetSiteSettings().GetValue("ExternalLogin:ProviderType", "");
var providerName = httpContext.GetSiteSettings().GetValue("ExternalLogin:ProviderName", "");
var providerKey = claimsPrincipal.FindFirstValue(ClaimTypes.NameIdentifier);
if (providerKey == null)
{
@ -288,7 +289,7 @@ namespace Oqtane.Extensions
// add user login
await _identityUserManager.AddLoginAsync(identityuser, new UserLoginInfo(providerType, providerKey, ""));
user = _users.GetUser(identityuser.UserName);
_logger.Log(user.SiteId, LogLevel.Information, "ExternalLogin", Enums.LogFunction.Create, "External User Login Added For {Email} Using Provider {Provider}", email, providerType);
_logger.Log(user.SiteId, LogLevel.Information, "ExternalLogin", Enums.LogFunction.Create, "External User Login Added For {Email} Using Provider {Provider}", email, providerName);
}
}
@ -304,7 +305,7 @@ namespace Oqtane.Extensions
user.LastLoginOn = DateTime.UtcNow;
user.LastIPAddress = httpContext.Connection.RemoteIpAddress.ToString();
_users.UpdateUser(user);
_logger.Log(LogLevel.Information, "ExternalLogin", Enums.LogFunction.Security, "External User Login Successful For {Username} Using Provider {Provider}", user.Username, providerType);
_logger.Log(LogLevel.Information, "ExternalLogin", Enums.LogFunction.Security, "External User Login Successful For {Username} Using Provider {Provider}", user.Username, providerName);
}
else // user not valid
{

View File

@ -715,7 +715,7 @@ namespace Oqtane.Infrastructure
{
try
{
var obj = Activator.CreateInstance(upgrade.Value) as ISiteMigration;
var obj = ActivatorUtilities.CreateInstance(scope.ServiceProvider, upgrade.Value) as ISiteMigration;
if (obj != null)
{
obj.Up(site, alias);

View File

@ -155,26 +155,11 @@ namespace Oqtane.Security
public static void ResetClaimsIdentity(ClaimsIdentity identity)
{
var claim = identity.Claims.FirstOrDefault(item => item.Type == ClaimTypes.Name);
if (claim != null)
var claims = identity.Claims.ToList(); // clone
foreach (var claim in claims)
{
identity.RemoveClaim(claim);
}
claim = identity.Claims.FirstOrDefault(item => item.Type == ClaimTypes.NameIdentifier);
if (claim != null)
{
identity.RemoveClaim(claim);
}
claim = identity.Claims.FirstOrDefault(item => item.Type == "sitekey");
if (claim != null)
{
identity.RemoveClaim(claim);
}
var roles = identity.Claims.Where(item => item.Type == ClaimTypes.Role);
foreach (var role in roles)
{
identity.RemoveClaim(role);
}
}
}
}