minor improvements to security features, use ActivatorUtilities.CreateInstance with SiteMigration to enable simpler DI
This commit is contained in:
parent
3abfbab5d1
commit
355d0405f4
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user