Add Identity service error controller to account module

pull/5085/head
liangshiwei 5 years ago
parent 92bedb38b4
commit 249e64c660

@ -0,0 +1,49 @@
using System.Threading.Tasks;
using IdentityServer4.Models;
using IdentityServer4.Services;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Views.Error;
using Volo.Abp.Http;
namespace Volo.Abp.Account.Web.Controllers
{
[Area("account")]
public class ErrorController : AbpController
{
private readonly IIdentityServerInteractionService _interaction;
private readonly IWebHostEnvironment _environment;
public ErrorController(
IIdentityServerInteractionService interaction,
IWebHostEnvironment environment)
{
_interaction = interaction;
_environment = environment;
}
public async Task<IActionResult> Index(string errorId)
{
var errorMessage = await _interaction.GetErrorContextAsync(errorId) ?? new ErrorMessage
{
Error = L["Error"]
};
if (!_environment.IsDevelopment())
{
// Only show in development
errorMessage.ErrorDescription = null;
}
// ReSharper disable once Mvc.ViewNotResolved
return View("~/Views/Error/Default.cshtml", new AbpErrorViewModel
{
ErrorInfo = new RemoteServiceErrorInfo(errorMessage.Error, errorMessage.ErrorDescription),
HttpStatusCode = 500
});
}
}
}

@ -1,24 +0,0 @@
@page
@using Localization.Resources.AbpUi
@using Microsoft.AspNetCore.Mvc.Localization
@model Volo.Abp.Account.Web.Pages.Account.ErrorModel
@inject IHtmlLocalizer<AbpUiResource> L
@{
var errorMessage = Model.ErrorMessage.Error;
var errorDetails = Model.ErrorMessage.ErrorDescription;
if (errorDetails.IsNullOrEmpty())
{
errorDetails = errorMessage;
errorMessage = L["Error"].Value + "!";
}
}
<h1>
@errorMessage
</h1>
<div>
<p>
@errorDetails
</p>
</div>

@ -1,40 +0,0 @@
using System.Threading.Tasks;
using IdentityServer4.Models;
using IdentityServer4.Services;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace Volo.Abp.Account.Web.Pages.Account
{
public class ErrorModel : AbpPageModel
{
public ErrorMessage ErrorMessage { get; set; }
private readonly IIdentityServerInteractionService _interaction;
private readonly IWebHostEnvironment _environment;
public ErrorModel(IIdentityServerInteractionService interaction, IWebHostEnvironment environment)
{
_interaction = interaction;
_environment = environment;
}
public async Task OnGet(string errorId)
{
ErrorMessage = await _interaction.GetErrorContextAsync(errorId) ?? new ErrorMessage
{
Error = L["Error"]
};
if (ErrorMessage != null)
{
if (!_environment.IsDevelopment())
{
// Only show in development
ErrorMessage.ErrorDescription = null;
}
}
}
}
}
Loading…
Cancel
Save