diff --git a/src/Blogifier.Admin/Pages/Account/Login.razor.cs b/src/Blogifier.Admin/Pages/Account/Login.razor.cs index 657e65761..4d9ae4c2b 100644 --- a/src/Blogifier.Admin/Pages/Account/Login.razor.cs +++ b/src/Blogifier.Admin/Pages/Account/Login.razor.cs @@ -1,5 +1,6 @@ using Blogifier.Shared; using Microsoft.AspNetCore.WebUtilities; +using System; using System.Linq; using System.Net.Http.Json; using System.Threading.Tasks; @@ -11,18 +12,18 @@ public partial class Login public bool showError = false; public LoginModel model = new LoginModel { Email = "", Password = "" }; - public async Task LoginUser() + public async Task LoginUser() { - var returnUrl = "admin/"; - var uri = _navigationManager.ToAbsoluteUri(_navigationManager.Uri); + var returnUrl = "admin/"; + var uri = _navigationManager.ToAbsoluteUri(_navigationManager.Uri); - if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("returnUrl", out var param)) - returnUrl = param.First(); - - if(returnUrl.StartsWith("http")) + if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("returnUrl", out var param)) + returnUrl = param.First(); + + if(!IsLocalUrl(returnUrl)) returnUrl = "admin/"; - var result = await Http.PostAsJsonAsync("api/author/login", model); + var result = await Http.PostAsJsonAsync("api/author/login", model); if (result.IsSuccessStatusCode) { @@ -35,5 +36,14 @@ public async Task LoginUser() StateHasChanged(); } } + + static bool IsLocalUrl(string url) + { + if(url.Contains("//")) + return false; + + Uri result; + return Uri.TryCreate(url, UriKind.Relative, out result); + } } } diff --git a/src/Blogifier.Admin/Pages/Blog/PostsView.razor b/src/Blogifier.Admin/Pages/Blog/PostsView.razor index 92e316a80..ea7167d36 100644 --- a/src/Blogifier.Admin/Pages/Blog/PostsView.razor +++ b/src/Blogifier.Admin/Pages/Blog/PostsView.razor @@ -81,26 +81,27 @@ @if (Posts != null && Posts.Count > 0) { - + + + + + + + + + + + + } else {