From 033343e684ccc05656c5ad22dcc58bc38769abef Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Fri, 29 Mar 2024 13:13:23 +0100 Subject: [PATCH] adds oauth support --- db/main.go | 9 +-- web/src/css/components.css | 5 ++ .../summit_log/summit_log_card.svelte | 10 +-- web/src/lib/i18n/locales/de.json | 1 + web/src/lib/i18n/locales/en.json | 1 + web/src/lib/i18n/locales/fr.json | 1 + web/src/lib/i18n/locales/nl.json | 1 + web/src/lib/i18n/locales/pl.json | 1 + web/src/lib/i18n/locales/pt.json | 1 + web/src/lib/stores/user_store.ts | 33 ++++++++- web/src/lib/util/authorization_util.ts | 1 + web/src/routes/api/v1/auth/oauth/+server.ts | 55 ++++++++++++++ web/src/routes/login/+page.svelte | 38 +++++++++- web/src/routes/login/+page.ts | 9 +++ web/src/routes/login/redirect/+page.svelte | 72 +++++++++++++++++++ 15 files changed, 226 insertions(+), 12 deletions(-) create mode 100644 web/src/routes/api/v1/auth/oauth/+server.ts create mode 100644 web/src/routes/login/+page.ts create mode 100644 web/src/routes/login/redirect/+page.svelte diff --git a/db/main.go b/db/main.go index 2460edfe..6dc64024 100644 --- a/db/main.go +++ b/db/main.go @@ -31,8 +31,9 @@ func main() { APIKey: os.Getenv("MEILI_MASTER_KEY"), }) - app.OnRecordAfterCreateRequest("users").Add(func(e *core.RecordCreateEvent) error { - userId := e.Record.GetId() + app.OnModelAfterCreate("users").Add(func(e *core.ModelEvent) error { + record := e.Model.(*models.Record) + userId := record.GetId() searchRules := map[string]interface{}{ "cities500": map[string]string{}, @@ -44,9 +45,9 @@ func main() { if token, err := generateMeilisearchToken(searchRules, client); err != nil { return err } else { - e.Record.Set("token", token) + record.Set("token", token) - if err := app.Dao().SaveRecord(e.Record); err != nil { + if err := app.Dao().SaveRecord(record); err != nil { return err } } diff --git a/web/src/css/components.css b/web/src/css/components.css index 0784ce4f..8e028df5 100644 --- a/web/src/css/components.css +++ b/web/src/css/components.css @@ -87,6 +87,11 @@ animation: spinner 1.2s linear infinite; } +.spinner-dark:after { + border: 6px solid rgba(var(--primary)); + border-color: rgba(var(--primary)) transparent rgba(var(--primary)) transparent; +} + @keyframes spinner { 0% { transform: rotate(0deg); diff --git a/web/src/lib/components/summit_log/summit_log_card.svelte b/web/src/lib/components/summit_log/summit_log_card.svelte index be2c0258..47b153b6 100644 --- a/web/src/lib/components/summit_log/summit_log_card.svelte +++ b/web/src/lib/components/summit_log/summit_log_card.svelte @@ -1,6 +1,5 @@ @@ -59,7 +70,7 @@ {#if $theme == "light"} @@ -99,5 +110,28 @@ > {/if} + {#if authProviders.length} + + + {$_("or")} + + + + {#each authProviders as provider} + setProvider(provider)} + > + + Login with {provider.displayName} + + {/each} + + {/if} diff --git a/web/src/routes/login/+page.ts b/web/src/routes/login/+page.ts new file mode 100644 index 00000000..e8d788d0 --- /dev/null +++ b/web/src/routes/login/+page.ts @@ -0,0 +1,9 @@ +import { users_auth_methods } from "$lib/stores/user_store"; +import { type Load } from "@sveltejs/kit"; + +export const load: Load = async ({ fetch }) => { + + const authMethods = await users_auth_methods(fetch) + + return { authMethods: authMethods } +}; \ No newline at end of file diff --git a/web/src/routes/login/redirect/+page.svelte b/web/src/routes/login/redirect/+page.svelte new file mode 100644 index 00000000..18ba780b --- /dev/null +++ b/web/src/routes/login/redirect/+page.svelte @@ -0,0 +1,72 @@ + + + + {#if error} + + {error} + {errorDescription} + {#if errorURI} + More Info + {/if} + + {:else} + + + Authenticating... + + {/if} +
{errorDescription}
More Info