From 59bcc2e22593beac4d20d8e356fe2015397af76d Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 14:23:01 +0200 Subject: [PATCH 1/8] Weird svelte:element hack to avoid SSR-bug --- frontend/src/routes/(authenticated)/admin/+page.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/routes/(authenticated)/admin/+page.svelte b/frontend/src/routes/(authenticated)/admin/+page.svelte index f01d5f5fe..43155bef6 100644 --- a/frontend/src/routes/(authenticated)/admin/+page.svelte +++ b/frontend/src/routes/(authenticated)/admin/+page.svelte @@ -24,6 +24,7 @@ import { createGuestUserByAdmin, type LexAuthUser } from '$lib/user'; import CreateUserModal from '$lib/components/Users/CreateUserModal.svelte'; import type { Confidentiality } from '$lib/components/Projects'; + import { browser } from '$app/environment'; export let data: PageData; $: projects = data.projects; @@ -132,13 +133,14 @@ - +
From 829eab6ce0d4c50712a0cdf77b3ae41cd7953c2e Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 14:23:30 +0200 Subject: [PATCH 2/8] Use standard null display value for login column --- frontend/src/routes/(authenticated)/admin/+page.svelte | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/src/routes/(authenticated)/admin/+page.svelte b/frontend/src/routes/(authenticated)/admin/+page.svelte index 43155bef6..8ce9dd06e 100644 --- a/frontend/src/routes/(authenticated)/admin/+page.svelte +++ b/frontend/src/routes/(authenticated)/admin/+page.svelte @@ -201,6 +201,8 @@ {#if user.username} {user.username} + {:else} + – {/if} From 2b70624e27588c077c5bf1eb4843616c97f85266 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 14:23:46 +0200 Subject: [PATCH 3/8] Fix indentation --- frontend/src/routes/(authenticated)/admin/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/(authenticated)/admin/+page.svelte b/frontend/src/routes/(authenticated)/admin/+page.svelte index 8ce9dd06e..59df52d22 100644 --- a/frontend/src/routes/(authenticated)/admin/+page.svelte +++ b/frontend/src/routes/(authenticated)/admin/+page.svelte @@ -115,7 +115,7 @@
- +
From f35351681abc8b29a738e392dc62f5122e232760 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 14:24:34 +0200 Subject: [PATCH 4/8] Open Viewer in a new tab --- .../routes/(authenticated)/project/[project_code]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte b/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte index 6e9b6df43..deefdcc76 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte +++ b/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte @@ -235,7 +235,7 @@ {#if project.type === ProjectType.FlEx && $isDev} {#if project.isLanguageForgeProject} - + {$t('project_page.open_with_viewer')} From f8e363c76c45d3dd5f1076ec9c5a4544ba866e3c Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 14:28:13 +0200 Subject: [PATCH 5/8] Fix using empty hash as querySelector --- frontend/viewer/src/WebComponent.svelte | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/viewer/src/WebComponent.svelte b/frontend/viewer/src/WebComponent.svelte index 23c112b4b..44a05a6ca 100644 --- a/frontend/viewer/src/WebComponent.svelte +++ b/frontend/viewer/src/WebComponent.svelte @@ -13,6 +13,8 @@ const abortController = new AbortController(); window.addEventListener('popstate', () => { + if (!location.hash) return; + const hashTarget = shadowRoot.querySelector(location.hash); if (hashTarget) { hashTarget.scrollIntoView({ From ab43988618ffea3aafdbafe1b50ddb71455d642b Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 15:57:35 +0200 Subject: [PATCH 6/8] Fix notifications getting mixed up. --- frontend/src/lib/notify/Notify.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/lib/notify/Notify.svelte b/frontend/src/lib/notify/Notify.svelte index 1d0bd4ca7..6d3f8a064 100644 --- a/frontend/src/lib/notify/Notify.svelte +++ b/frontend/src/lib/notify/Notify.svelte @@ -14,7 +14,7 @@ {$t('notify.close_all')}
{/if} - {#each $notifications as note} + {#each $notifications as note (note)}
{note.message} From d15d01af3c0cc5324b6c3536004f9462422f8e11 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Wed, 29 May 2024 16:20:15 +0200 Subject: [PATCH 7/8] Fix warning alert link contrast --- frontend/src/lib/app.postcss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/lib/app.postcss b/frontend/src/lib/app.postcss index 7d170db1f..ee5ff9963 100644 --- a/frontend/src/lib/app.postcss +++ b/frontend/src/lib/app.postcss @@ -10,6 +10,7 @@ @media (prefers-color-scheme: dark) { :root { --alert-link-color: #4dd0ff; + --alert-warning-link-color: #1537e9; } } } @@ -167,6 +168,10 @@ input[readonly]:focus { color: var(--alert-link-color, #0024b9); } +.alert-warning a:not(.btn) { + color: var(--alert-warning-link-color, var(--alert-link-color, #0024b9)); +} + .collapse input:hover ~ .collapse-title { @apply opacity-70 transition-opacity; } From 8c03571de1c65219bed2ff8bc143624466aa11d2 Mon Sep 17 00:00:00 2001 From: Kevin Hahn Date: Wed, 29 May 2024 09:17:10 -0600 Subject: [PATCH 8/8] fix a number of auth tests failing due to cooke challenge not returning a 401, now it always returns a 401 unless it's for oauth --- backend/LexBoxApi/Auth/AuthKernel.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/backend/LexBoxApi/Auth/AuthKernel.cs b/backend/LexBoxApi/Auth/AuthKernel.cs index 38fae368b..69065a040 100644 --- a/backend/LexBoxApi/Auth/AuthKernel.cs +++ b/backend/LexBoxApi/Auth/AuthKernel.cs @@ -87,9 +87,11 @@ public static void AddLexBoxAuth(IServiceCollection services, context.Request.Headers.Authorization.ToString().StartsWith("Bearer") && context.RequestServices.GetService>()?.Value.Enable == true) { + //todo this breaks CanUseBearerAuth test //fow now this will use oauth return OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme; } + if (context.Request.IsJwtRequest()) { return JwtBearerDefaults.AuthenticationScheme; @@ -100,6 +102,7 @@ public static void AddLexBoxAuth(IServiceCollection services, { return CookieAuthenticationDefaults.AuthenticationScheme; } + if (context.Request.IsJwtOverBasicAuth(out var jwt)) { context.Features.Set(new JwtOverBasicAuthFeature(jwt)); @@ -114,8 +117,23 @@ public static void AddLexBoxAuth(IServiceCollection services, configuration.Bind("Authentication:Cookie", options); options.LoginPath = "/login"; options.Cookie.Name = AuthCookieName; - // options.ForwardChallenge = JwtBearerDefaults.AuthenticationScheme; options.ForwardForbid = JwtBearerDefaults.AuthenticationScheme; + options.Events = new() + { + OnRedirectToLogin = context => + { + if (context.Request.Path.StartsWithSegments("/api/oauth") && + context.Response.StatusCode == StatusCodes.Status200OK) + { + context.Response.Redirect(context.RedirectUri); + } + else + { + context.Response.StatusCode = StatusCodes.Status401Unauthorized; + } + return Task.CompletedTask; + } + }; }) .AddJwtBearer(options => { @@ -157,6 +175,7 @@ public static void AddLexBoxAuth(IServiceCollection services, googleOptions.ClientId = googleConfig.ClientId; googleOptions.ClientSecret = googleConfig.ClientSecret; } + googleOptions.CallbackPath = "/api/login/signin-google"; googleOptions.Events.OnTicketReceived = async context => {