Fix #5054: parse string to number with invariant culture.
This commit is contained in:
@ -182,7 +182,7 @@
|
||||
}
|
||||
|
||||
// includes resources
|
||||
var resources = await GetPageResources(alias, site, page, modules, int.Parse(route.ModuleId, CultureInfo.InvariantCulture), route.Action);
|
||||
var resources = await GetPageResources(alias, site, page, modules, SharedConverter.ParseInteger(route.ModuleId, CultureInfo.InvariantCulture), route.Action);
|
||||
ManageStyleSheets(resources);
|
||||
ManageScripts(resources, alias);
|
||||
|
||||
@ -423,7 +423,7 @@
|
||||
// set cookie
|
||||
if (setcookie)
|
||||
{
|
||||
expiry = DateTime.UtcNow.AddMinutes(int.Parse(settings.GetValue("VisitorDuration", "5")));
|
||||
expiry = DateTime.UtcNow.AddMinutes(SharedConverter.ParseInteger(settings.GetValue("VisitorDuration", "5")));
|
||||
|
||||
Context.Response.Cookies.Append(
|
||||
visitorCookieName,
|
||||
@ -456,7 +456,7 @@
|
||||
var secret = sitesettings.GetValue("JwtOptions:Secret", "");
|
||||
if (!string.IsNullOrEmpty(secret))
|
||||
{
|
||||
_authorizationToken = JwtManager.GenerateToken(alias, (ClaimsIdentity)Context.User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), int.Parse(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
|
||||
_authorizationToken = JwtManager.GenerateToken(alias, (ClaimsIdentity)Context.User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), SharedConverter.ParseInteger(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -530,7 +530,7 @@ namespace Oqtane.Controllers
|
||||
// parse the filename which is in the format of filename.ext.part_001_999
|
||||
string token = ".part_";
|
||||
string parts = Path.GetExtension(filename)?.Replace(token, ""); // returns "001_999"
|
||||
int totalparts = int.Parse(parts?.Substring(parts.IndexOf("_") + 1));
|
||||
int totalparts = SharedConverter.ParseInteger(parts?.Substring(parts.IndexOf("_") + 1));
|
||||
|
||||
filename = Path.GetFileNameWithoutExtension(filename); // base filename
|
||||
string[] fileparts = Directory.GetFiles(folder, filename + token + "*"); // list of all file parts
|
||||
|
||||
@ -98,7 +98,7 @@ namespace Oqtane.Controllers
|
||||
if (folder == null && User.IsInRole(RoleNames.Host) && path.StartsWith("Users/"))
|
||||
{
|
||||
// create the user folder on this site for the host user
|
||||
var userId = int.Parse(path.ReplaceMultiple(new string[] { "Users", "/" }, ""));
|
||||
var userId = SharedConverter.ParseInteger(path.ReplaceMultiple(new string[] { "Users", "/" }, ""));
|
||||
folder = _folders.GetFolder(siteId, "Users/");
|
||||
if (folder != null)
|
||||
{
|
||||
|
||||
@ -33,7 +33,7 @@ namespace Oqtane.Controllers
|
||||
int SiteId;
|
||||
if (int.TryParse(siteid, out SiteId) && SiteId == _alias.SiteId)
|
||||
{
|
||||
return _logs.GetLogs(SiteId, level, function, int.Parse(rows));
|
||||
return _logs.GetLogs(SiteId, level, function, SharedConverter.ParseInteger(rows));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@ namespace Oqtane.Controllers
|
||||
// legacy support
|
||||
if (_authEntityId.Count == 0 && accessor.HttpContext.Request.Query.ContainsKey("entityid"))
|
||||
{
|
||||
_entityId = int.Parse(accessor.HttpContext.Request.Query["entityid"]);
|
||||
_entityId = SharedConverter.ParseInteger(accessor.HttpContext.Request.Query["entityid"]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -188,7 +188,7 @@ namespace Oqtane.Controllers
|
||||
Page page = null;
|
||||
Page parent = _pages.GetPage(id);
|
||||
User user = _userPermissions.GetUser(User);
|
||||
if (parent != null && parent.SiteId == _alias.SiteId && parent.IsPersonalizable && user.UserId == int.Parse(userid))
|
||||
if (parent != null && parent.SiteId == _alias.SiteId && parent.IsPersonalizable && user.UserId == SharedConverter.ParseInteger(userid))
|
||||
{
|
||||
var path = Utilities.GetFriendlyUrl(user.Username);
|
||||
page = _pages.GetPage(parent.Path + "/" + path, parent.SiteId);
|
||||
@ -208,12 +208,12 @@ namespace Oqtane.Controllers
|
||||
page.Icon = parent.Icon;
|
||||
page.PermissionList = new List<Permission>()
|
||||
{
|
||||
new Permission(PermissionNames.View, int.Parse(userid), true),
|
||||
new Permission(PermissionNames.View, SharedConverter.ParseInteger(userid), true),
|
||||
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
||||
new Permission(PermissionNames.Edit, int.Parse(userid), true)
|
||||
new Permission(PermissionNames.Edit, SharedConverter.ParseInteger(userid), true)
|
||||
};
|
||||
page.IsPersonalizable = false;
|
||||
page.UserId = int.Parse(userid);
|
||||
page.UserId = SharedConverter.ParseInteger(userid);
|
||||
page = _pages.AddPage(page);
|
||||
|
||||
// copy modules
|
||||
@ -227,9 +227,9 @@ namespace Oqtane.Controllers
|
||||
module.AllPages = false;
|
||||
module.PermissionList = new List<Permission>()
|
||||
{
|
||||
new Permission(PermissionNames.View, int.Parse(userid), true),
|
||||
new Permission(PermissionNames.View, SharedConverter.ParseInteger(userid), true),
|
||||
new Permission(PermissionNames.View, RoleNames.Everyone, true),
|
||||
new Permission(PermissionNames.Edit, int.Parse(userid), true)
|
||||
new Permission(PermissionNames.Edit, SharedConverter.ParseInteger(userid), true)
|
||||
};
|
||||
module = _modules.AddModule(module);
|
||||
|
||||
|
||||
@ -362,7 +362,7 @@ namespace Oqtane.Controllers
|
||||
var secret = sitesettings.GetValue("JwtOptions:Secret", "");
|
||||
if (!string.IsNullOrEmpty(secret))
|
||||
{
|
||||
token = _jwtManager.GenerateToken(_tenantManager.GetAlias(), (ClaimsIdentity)User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), int.Parse(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
|
||||
token = _jwtManager.GenerateToken(_tenantManager.GetAlias(), (ClaimsIdentity)User.Identity, secret, sitesettings.GetValue("JwtOptions:Issuer", ""), sitesettings.GetValue("JwtOptions:Audience", ""), SharedConverter.ParseInteger(sitesettings.GetValue("JwtOptions:Lifetime", "20")));
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
@ -24,7 +24,7 @@ namespace Oqtane.Extensions
|
||||
{
|
||||
if (claimsPrincipal.HasClaim(item => item.Type == ClaimTypes.NameIdentifier))
|
||||
{
|
||||
return int.Parse(claimsPrincipal.Claims.First(item => item.Type == ClaimTypes.NameIdentifier).Value);
|
||||
return SharedConverter.ParseInteger(claimsPrincipal.Claims.First(item => item.Type == ClaimTypes.NameIdentifier).Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -55,7 +55,7 @@ namespace Oqtane.Extensions
|
||||
var sitekey = SiteKey(claimsPrincipal);
|
||||
if (!string.IsNullOrEmpty(sitekey) && sitekey.Contains(":"))
|
||||
{
|
||||
return int.Parse(sitekey.Split(':')[0]);
|
||||
return SharedConverter.ParseInteger(sitekey.Split(':')[0]);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@ -65,7 +65,7 @@ namespace Oqtane.Extensions
|
||||
var sitekey = SiteKey(claimsPrincipal);
|
||||
if (!string.IsNullOrEmpty(sitekey) && sitekey.Contains(":"))
|
||||
{
|
||||
return int.Parse(sitekey.Split(':')[1]);
|
||||
return SharedConverter.ParseInteger(sitekey.Split(':')[1]);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Oqtane.Models;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using System;
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Extensions
|
||||
{
|
||||
@ -13,15 +14,15 @@ namespace Oqtane.Extensions
|
||||
builder.AddSiteOptions<IdentityOptions>((options, alias, sitesettings) =>
|
||||
{
|
||||
// password options
|
||||
options.Password.RequiredLength = int.Parse(sitesettings.GetValue("IdentityOptions:Password:RequiredLength", options.Password.RequiredLength.ToString()));
|
||||
options.Password.RequiredUniqueChars = int.Parse(sitesettings.GetValue("IdentityOptions:Password:RequiredUniqueChars", options.Password.RequiredUniqueChars.ToString()));
|
||||
options.Password.RequiredLength = SharedConverter.ParseInteger(sitesettings.GetValue("IdentityOptions:Password:RequiredLength", options.Password.RequiredLength.ToString()));
|
||||
options.Password.RequiredUniqueChars = SharedConverter.ParseInteger(sitesettings.GetValue("IdentityOptions:Password:RequiredUniqueChars", options.Password.RequiredUniqueChars.ToString()));
|
||||
options.Password.RequireDigit = bool.Parse(sitesettings.GetValue("IdentityOptions:Password:RequireDigit", options.Password.RequireDigit.ToString()));
|
||||
options.Password.RequireUppercase = bool.Parse(sitesettings.GetValue("IdentityOptions:Password:RequireUppercase", options.Password.RequireUppercase.ToString()));
|
||||
options.Password.RequireLowercase = bool.Parse(sitesettings.GetValue("IdentityOptions:Password:RequireLowercase", options.Password.RequireLowercase.ToString()));
|
||||
options.Password.RequireNonAlphanumeric = bool.Parse(sitesettings.GetValue("IdentityOptions:Password:RequireNonAlphanumeric", options.Password.RequireNonAlphanumeric.ToString()));
|
||||
|
||||
// lockout options
|
||||
options.Lockout.MaxFailedAccessAttempts = int.Parse(sitesettings.GetValue("IdentityOptions:Lockout:MaxFailedAccessAttempts", options.Lockout.MaxFailedAccessAttempts.ToString()));
|
||||
options.Lockout.MaxFailedAccessAttempts = SharedConverter.ParseInteger(sitesettings.GetValue("IdentityOptions:Lockout:MaxFailedAccessAttempts", options.Lockout.MaxFailedAccessAttempts.ToString()));
|
||||
options.Lockout.DefaultLockoutTimeSpan = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow) + TimeSpan.Parse(sitesettings.GetValue("IdentityOptions:Lockout:DefaultLockoutTimeSpan", options.Lockout.DefaultLockoutTimeSpan.ToString()));
|
||||
options.Lockout.AllowedForNewUsers = options.Lockout.MaxFailedAccessAttempts > 0;
|
||||
});
|
||||
|
||||
@ -55,7 +55,7 @@ namespace Oqtane.Infrastructure
|
||||
DeliveryMethod = SmtpDeliveryMethod.Network,
|
||||
UseDefaultCredentials = false,
|
||||
Host = settings["SMTPHost"],
|
||||
Port = int.Parse(settings["SMTPPort"]),
|
||||
Port = SharedConverter.ParseInteger(settings["SMTPPort"]),
|
||||
EnableSsl = bool.Parse(settings["SMTPSSL"])
|
||||
};
|
||||
if (settings["SMTPUsername"] != "" && settings["SMTPPassword"] != "")
|
||||
|
||||
@ -50,7 +50,7 @@ namespace Oqtane.Infrastructure
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("LogRetention") && !string.IsNullOrEmpty(settings["LogRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["LogRetention"]);
|
||||
retention = SharedConverter.ParseInteger(settings["LogRetention"]);
|
||||
}
|
||||
try
|
||||
{
|
||||
@ -68,7 +68,7 @@ namespace Oqtane.Infrastructure
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("VisitorRetention") && !string.IsNullOrEmpty(settings["VisitorRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["VisitorRetention"]);
|
||||
retention = SharedConverter.ParseInteger(settings["VisitorRetention"]);
|
||||
}
|
||||
try
|
||||
{
|
||||
@ -85,7 +85,7 @@ namespace Oqtane.Infrastructure
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("NotificationRetention") && !string.IsNullOrEmpty(settings["NotificationRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["NotificationRetention"]);
|
||||
retention = SharedConverter.ParseInteger(settings["NotificationRetention"]);
|
||||
}
|
||||
try
|
||||
{
|
||||
@ -101,7 +101,7 @@ namespace Oqtane.Infrastructure
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("UrlMappingRetention") && !string.IsNullOrEmpty(settings["UrlMappingRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["UrlMappingRetention"]);
|
||||
retention = SharedConverter.ParseInteger(settings["UrlMappingRetention"]);
|
||||
}
|
||||
try
|
||||
{
|
||||
|
||||
@ -59,7 +59,7 @@ namespace Oqtane.Infrastructure
|
||||
if (userid != null && username != null)
|
||||
{
|
||||
var _users = context.RequestServices.GetService(typeof(IUserManager)) as IUserManager;
|
||||
var user = _users.GetUser(int.Parse(userid), alias.SiteId); // cached
|
||||
var user = _users.GetUser(SharedConverter.ParseInteger(userid), alias.SiteId); // cached
|
||||
if (user != null && !user.IsDeleted)
|
||||
{
|
||||
var claimsidentity = UserSecurity.CreateClaimsIdentity(alias, user);
|
||||
|
||||
@ -158,7 +158,7 @@ namespace Oqtane.Providers
|
||||
var minimumWordLength = MinimumWordLength;
|
||||
if (siteSettings.ContainsKey(SearchMinimumWordLengthSetting) && !string.IsNullOrEmpty(siteSettings[SearchMinimumWordLengthSetting]))
|
||||
{
|
||||
minimumWordLength = int.Parse(siteSettings[SearchMinimumWordLengthSetting]);
|
||||
minimumWordLength = SharedConverter.ParseInteger(siteSettings[SearchMinimumWordLengthSetting]);
|
||||
}
|
||||
|
||||
// analyze the search content and save the index words
|
||||
|
||||
@ -36,7 +36,7 @@ namespace Oqtane.Services
|
||||
if (!Enum.TryParse(position, true, out AnchorPositionMode _)) position = "center";
|
||||
if (!Color.TryParseHex("#" + background, out _)) background = "transparent";
|
||||
if (!int.TryParse(rotate, out _)) rotate = "0";
|
||||
rotate = (int.Parse(rotate) < 0 || int.Parse(rotate) > 360) ? "0" : rotate;
|
||||
rotate = (SharedConverter.ParseInteger(rotate) < 0 || SharedConverter.ParseInteger(rotate) > 360) ? "0" : rotate;
|
||||
if (!_formats.Contains(format)) format = "png";
|
||||
|
||||
using (var stream = new FileStream(filepath, FileMode.Open, FileAccess.Read))
|
||||
|
||||
@ -106,7 +106,7 @@ namespace Oqtane.Services
|
||||
if (permission.Contains(":")) // permission
|
||||
{
|
||||
var entityName = permission.Split(":")[0];
|
||||
var entityId = int.Parse(permission.Split(":")[1]);
|
||||
var entityId = SharedConverter.ParseInteger(permission.Split(":")[1]);
|
||||
if (!_userPermissions.IsAuthorized(_accessor.HttpContext.User, searchQuery.SiteId, entityName, entityId, PermissionNames.View))
|
||||
{
|
||||
visible = false;
|
||||
|
||||
Reference in New Issue
Block a user