fix #4667 - installation issues when running on IIS
This commit is contained in:
parent
4511acf273
commit
e1ada78c1f
|
@ -375,7 +375,6 @@ namespace Oqtane.Infrastructure
|
|||
AddEFMigrationsHistory(sql, _configManager.GetSetting($"{SettingKeys.ConnectionStringsSection}:{tenant.DBConnectionString}", ""), tenant.DBType, tenant.Version, false);
|
||||
// push latest model into database
|
||||
tenantDbContext.Database.Migrate();
|
||||
result.Success = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -384,35 +383,35 @@ namespace Oqtane.Infrastructure
|
|||
_filelogger.LogError(Utilities.LogMessage(this, result.Message));
|
||||
}
|
||||
|
||||
// execute any version specific upgrade logic
|
||||
var version = tenant.Version;
|
||||
var index = Array.FindIndex(versions, item => item == version);
|
||||
if (index != (versions.Length - 1))
|
||||
if (string.IsNullOrEmpty(result.Message))
|
||||
{
|
||||
try
|
||||
// execute any version specific upgrade logic
|
||||
var version = tenant.Version;
|
||||
var index = Array.FindIndex(versions, item => item == version);
|
||||
if (index != (versions.Length - 1))
|
||||
{
|
||||
for (var i = (index + 1); i < versions.Length; i++)
|
||||
try
|
||||
{
|
||||
upgrades.Upgrade(tenant, versions[i]);
|
||||
for (var i = (index + 1); i < versions.Length; i++)
|
||||
{
|
||||
upgrades.Upgrade(tenant, versions[i]);
|
||||
}
|
||||
tenant.Version = versions[versions.Length - 1];
|
||||
db.Entry(tenant).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "An Error Occurred Executing Upgrade Logic On Tenant " + tenant.Name + ". " + ex.ToString();
|
||||
_filelogger.LogError(Utilities.LogMessage(this, result.Message));
|
||||
}
|
||||
tenant.Version = versions[versions.Length - 1];
|
||||
db.Entry(tenant).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Message = "An Error Occurred Executing Upgrade Logic On Tenant " + tenant.Name + ". " + ex.ToString();
|
||||
_filelogger.LogError(Utilities.LogMessage(this, result.Message));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(result.Message))
|
||||
{
|
||||
result.Success = true;
|
||||
}
|
||||
result.Success = string.IsNullOrEmpty(result.Message);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -588,7 +587,7 @@ namespace Oqtane.Infrastructure
|
|||
|
||||
// add host role
|
||||
var hostRoleId = roles.GetRoles(user.SiteId, true).FirstOrDefault(item => item.Name == RoleNames.Host)?.RoleId ?? 0;
|
||||
var userRole = new UserRole { UserId = user.UserId, RoleId = hostRoleId, EffectiveDate = null, ExpiryDate = null };
|
||||
var userRole = new UserRole { UserId = user.UserId, RoleId = hostRoleId, EffectiveDate = null, ExpiryDate = null, IgnoreSecurityStamp = true };
|
||||
userRoles.AddUserRole(userRole);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ namespace Oqtane.Repository
|
|||
userrole.RoleId = role.RoleId;
|
||||
userrole.EffectiveDate = null;
|
||||
userrole.ExpiryDate = null;
|
||||
userrole.IgnoreSecurityStamp = true;
|
||||
_userroles.AddUserRole(userrole);
|
||||
}
|
||||
|
||||
|
|
|
@ -72,8 +72,13 @@ namespace Oqtane.Repository
|
|||
DeleteUserRoles(userRole.UserId);
|
||||
}
|
||||
|
||||
UpdateSecurityStamp(userRole.UserId);
|
||||
|
||||
if (!userRole.IgnoreSecurityStamp)
|
||||
{
|
||||
UpdateSecurityStamp(userRole.UserId);
|
||||
}
|
||||
|
||||
RefreshCache(userRole.UserId);
|
||||
|
||||
return userRole;
|
||||
}
|
||||
|
||||
|
@ -83,7 +88,12 @@ namespace Oqtane.Repository
|
|||
db.Entry(userRole).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
|
||||
UpdateSecurityStamp(userRole.UserId);
|
||||
if (!userRole.IgnoreSecurityStamp)
|
||||
{
|
||||
UpdateSecurityStamp(userRole.UserId);
|
||||
}
|
||||
|
||||
RefreshCache(userRole.UserId);
|
||||
|
||||
return userRole;
|
||||
}
|
||||
|
@ -144,6 +154,7 @@ namespace Oqtane.Repository
|
|||
db.SaveChanges();
|
||||
|
||||
UpdateSecurityStamp(userRole.UserId);
|
||||
RefreshCache(userRole.UserId);
|
||||
}
|
||||
|
||||
public void DeleteUserRoles(int userId)
|
||||
|
@ -156,11 +167,11 @@ namespace Oqtane.Repository
|
|||
db.SaveChanges();
|
||||
|
||||
UpdateSecurityStamp(userId);
|
||||
RefreshCache(userId);
|
||||
}
|
||||
|
||||
private void UpdateSecurityStamp(int userId)
|
||||
{
|
||||
// update user security stamp
|
||||
using var db = _dbContextFactory.CreateDbContext();
|
||||
var user = db.User.Find(userId);
|
||||
if (user != null)
|
||||
|
@ -168,11 +179,13 @@ namespace Oqtane.Repository
|
|||
var identityuser = _identityUserManager.FindByNameAsync(user.Username).GetAwaiter().GetResult();
|
||||
if (identityuser != null)
|
||||
{
|
||||
_identityUserManager.UpdateSecurityStampAsync(identityuser);
|
||||
_identityUserManager.UpdateSecurityStampAsync(identityuser).GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// refresh cache
|
||||
private void RefreshCache(int userId)
|
||||
{
|
||||
var alias = _tenantManager.GetAlias();
|
||||
if (alias != null)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Oqtane.Models
|
||||
{
|
||||
|
@ -26,11 +27,18 @@ namespace Oqtane.Models
|
|||
/// Start of when this assignment is valid. See also <see cref="ExpiryDate"/>
|
||||
/// </summary>
|
||||
public DateTime? EffectiveDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// End of when this assignment is valid. See also <see cref="EffectiveDate"/>
|
||||
/// </summary>
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates that the User Security Stamp should not be updated when this user role is added or updated
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool IgnoreSecurityStamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Direct reference to the <see cref="Role"/> object.
|
||||
/// TODO: todoc - is this always populated?
|
||||
|
|
Loading…
Reference in New Issue
Block a user