Refactor SaveAlias method and add URL protocol check

Restructured the SaveAlias method for improved readability and added a check to handle cases where the _aliasname contains a URL protocol (e.g., "://"). This ensures proper handling of different URL formats.
This commit is contained in:
Cody 2024-01-16 10:43:24 -08:00 committed by GitHub
parent 3cec9f7ee0
commit bfed0ed791
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -814,40 +814,52 @@
private async Task SaveAlias() private async Task SaveAlias()
{ {
if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
{ {
if (!string.IsNullOrEmpty(_aliasname)) if (!string.IsNullOrEmpty(_aliasname))
{ {
_aliasname = _aliasname.Replace("http://", "").Replace("https://", "");
var aliases = await AliasService.GetAliasesAsync(); var aliases = await AliasService.GetAliasesAsync();
var alias = aliases.Where(item => item.Name == _aliasname).FirstOrDefault();
bool unique = (alias == null || alias.AliasId == _aliasid); int protocolIndex = _aliasname.IndexOf("://", StringComparison.OrdinalIgnoreCase);
if (unique) if (protocolIndex != -1)
{ {
if (_aliasid == 0) _aliasname = _aliasname.Substring(protocolIndex + 3);
{ }
alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Site.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) };
await AliasService.AddAliasAsync(alias); var alias = aliases.FirstOrDefault(item => item.Name == _aliasname);
}
else bool unique = (alias == null || alias.AliasId == _aliasid);
{
alias = _aliases.Single(item => item.AliasId == _aliasid); if (unique)
alias.Name = _aliasname; {
alias.IsDefault = bool.Parse(_defaultalias); if (_aliasid == 0)
await AliasService.UpdateAliasAsync(alias); {
} alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Site.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) };
} await AliasService.AddAliasAsync(alias);
else // duplicate alias }
{ else
AddModuleMessage(Localizer["Message.Aliases.Taken"], MessageType.Warning); {
alias = _aliases.SingleOrDefault(item => item.AliasId == _aliasid);
if (alias != null)
{
alias.Name = _aliasname;
alias.IsDefault = bool.Parse(_defaultalias);
await AliasService.UpdateAliasAsync(alias);
}
}
await GetAliases();
_aliasid = -1;
_aliasname = "";
StateHasChanged();
}
else // Duplicate alias
{
AddModuleMessage(Localizer["Message.Aliases.Taken"], MessageType.Warning);
await ScrollToPageTop(); await ScrollToPageTop();
} }
} }
await GetAliases(); }
_aliasid = -1;
_aliasname = "";
StateHasChanged();
}
} }
private async Task CancelAlias() private async Task CancelAlias()