From 116d570f05de4c53e729416de3d6952219971e61 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Wed, 16 Jan 2019 12:57:07 +0100 Subject: [PATCH] Fix github login. --- .../Controllers/Error/ErrorController.cs | 42 +- .../Controllers/Error/ErrorViewModel.cs | 16 + src/Squidex/Areas/IdentityServer/Startup.cs | 6 +- .../Views/Account/AccessDenied.cshtml | 1 + .../Views/Account/Consent.cshtml | 123 +++--- .../IdentityServer/Views/Account/Login.cshtml | 147 ++++--- .../Views/Account/LogoutCompleted.cshtml | 1 + .../IdentityServer/Views/Error/Error.cshtml | 18 +- .../Views/Profile/Profile.cshtml | 359 +++++++++--------- .../Areas/IdentityServer/Views/_Layout.cshtml | 10 +- .../Config/Authentication/GithubHandler.cs | 11 + 11 files changed, 401 insertions(+), 333 deletions(-) create mode 100644 src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorViewModel.cs diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs index 4dca1ec9d..7ada38154 100644 --- a/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs +++ b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorController.cs @@ -5,16 +5,54 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System.Threading.Tasks; +using IdentityServer4.Models; +using IdentityServer4.Services; +using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Mvc; +using Squidex.Infrastructure; namespace Squidex.Areas.IdentityServer.Controllers.Error { public sealed class ErrorController : IdentityServerController { + private readonly IIdentityServerInteractionService interaction; + + public ErrorController(IIdentityServerInteractionService interaction) + { + this.interaction = interaction; + } + [Route("error/")] - public IActionResult Error() + public async Task Error(string errorId = null) { - return View(); + var vm = new ErrorViewModel(); + + if (!string.IsNullOrWhiteSpace(errorId)) + { + var message = await interaction.GetErrorContextAsync(errorId); + + if (message != null) + { + vm.Error = message; + } + } + + if (vm.Error == null) + { + var error = HttpContext.Features.Get()?.Error; + + if (error is DomainException exception) + { + vm.Error = new ErrorMessage { ErrorDescription = exception.Message }; + } + else if (error?.InnerException is DomainException exception2) + { + vm.Error = new ErrorMessage { ErrorDescription = exception2.Message }; + } + } + + return View("Error", vm); } } } diff --git a/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorViewModel.cs b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorViewModel.cs new file mode 100644 index 000000000..2251d3c1f --- /dev/null +++ b/src/Squidex/Areas/IdentityServer/Controllers/Error/ErrorViewModel.cs @@ -0,0 +1,16 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using IdentityServer4.Models; + +namespace Squidex.Areas.IdentityServer.Controllers.Error +{ + public class ErrorViewModel + { + public ErrorMessage Error { get; set; } + } +} diff --git a/src/Squidex/Areas/IdentityServer/Startup.cs b/src/Squidex/Areas/IdentityServer/Startup.cs index edb3ba91b..632a7cbab 100644 --- a/src/Squidex/Areas/IdentityServer/Startup.cs +++ b/src/Squidex/Areas/IdentityServer/Startup.cs @@ -23,9 +23,7 @@ namespace Squidex.Areas.IdentityServer app.Map(Constants.IdentityServerPrefix, identityApp => { - identityApp.UseMyIdentityServer(); - - if (environment.IsDevelopment()) + if (!environment.IsDevelopment()) { identityApp.UseDeveloperExceptionPage(); } @@ -34,6 +32,8 @@ namespace Squidex.Areas.IdentityServer identityApp.UseExceptionHandler("/error"); } + identityApp.UseMyIdentityServer(); + identityApp.UseStaticFiles(); identityApp.UseMvc(); }); diff --git a/src/Squidex/Areas/IdentityServer/Views/Account/AccessDenied.cshtml b/src/Squidex/Areas/IdentityServer/Views/Account/AccessDenied.cshtml index 4a0b1b2dd..c83ce4065 100644 --- a/src/Squidex/Areas/IdentityServer/Views/Account/AccessDenied.cshtml +++ b/src/Squidex/Areas/IdentityServer/Views/Account/AccessDenied.cshtml @@ -1,4 +1,5 @@ @{ + ViewBag.Theme = "white"; ViewBag.Title = "Account locked"; } diff --git a/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml b/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml index 82e9e0613..472546230 100644 --- a/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml +++ b/src/Squidex/Areas/IdentityServer/Views/Account/Consent.cshtml @@ -1,7 +1,8 @@ @model Squidex.Areas.IdentityServer.Controllers.Account.ConsentVM @{ - ViewBag.Theme = "white"; + ViewBag.Class = "profile-lg"; + ViewBag.Title = "Consent"; } @@ -13,85 +14,81 @@ }
-
- - -

We need your consent

+

We need your consent

-