diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 3ad4d605..01a6bba3 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -812,41 +812,55 @@ } } - private async Task SaveAlias() - { - if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) - { - if (!string.IsNullOrEmpty(_aliasname)) - { - var aliases = await AliasService.GetAliasesAsync(); - var alias = aliases.Where(item => item.Name == _aliasname).FirstOrDefault(); - bool unique = (alias == null || alias.AliasId == _aliasid); - if (unique) - { - if (_aliasid == 0) - { - alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Site.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) }; - await AliasService.AddAliasAsync(alias); - } - else - { - alias = _aliases.Single(item => item.AliasId == _aliasid); - alias.Name = _aliasname; - alias.IsDefault = bool.Parse(_defaultalias); - await AliasService.UpdateAliasAsync(alias); - } - } - else // duplicate alias - { - AddModuleMessage(Localizer["Message.Aliases.Taken"], MessageType.Warning); - } - } - await GetAliases(); - _aliasid = -1; - _aliasname = ""; - StateHasChanged(); - } - } + private async Task SaveAlias() + { + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + if (!string.IsNullOrEmpty(_aliasname)) + { + var aliases = await AliasService.GetAliasesAsync(); + + int protocolIndex = _aliasname.IndexOf("://", StringComparison.OrdinalIgnoreCase); + if (protocolIndex != -1) + { + _aliasname = _aliasname.Substring(protocolIndex + 3); + } + + var alias = aliases.FirstOrDefault(item => item.Name == _aliasname); + + bool unique = (alias == null || alias.AliasId == _aliasid); + + if (unique) + { + if (_aliasid == 0) + { + alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Site.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) }; + await AliasService.AddAliasAsync(alias); + } + else + { + 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(); + } + } + } + } private async Task CancelAlias() {