From dae23a90b52bb31d8cdf047f41ae01b9bf41defa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=40=E5=88=98=E7=BE=A1=E9=B1=BC?= Date: Thu, 24 Sep 2026 06:15:46 +0800 Subject: [PATCH] feat(auth): add OIDC-only member authentication (#686) * feat(auth): add OIDC member authentication * docs(auth): document OIDC member login * fix(auth): address OAuth review feedback * refactor(auth): move OAuth flow into member provider --- client/src/components/avatar.vue | 33 +- client/src/components/chat.vue | 7 +- client/src/components/connect.vue | 70 ++- client/src/components/context.vue | 7 +- client/src/components/members.vue | 4 +- client/src/neko/types.ts | 1 + server/cmd/serve.go | 3 + server/internal/api/oauth.go | 136 ++++++ server/internal/api/oauth_test.go | 248 ++++++++++ server/internal/api/router.go | 18 + server/internal/api/session.go | 17 +- server/internal/config/member.go | 9 + server/internal/http/legacy/handler.go | 9 +- server/internal/http/legacy/session.go | 39 +- server/internal/http/legacy/session_test.go | 63 +++ server/internal/http/legacy/types/types.go | 9 +- server/internal/http/legacy/wstoclient.go | 22 +- .../internal/http/legacy/wstoclient_test.go | 20 + server/internal/http/manager.go | 50 +- server/internal/http/manager_test.go | 69 +++ server/internal/member/manager.go | 6 +- server/internal/member/oauth/config.go | 130 ++++++ server/internal/member/oauth/provider.go | 428 ++++++++++++++++++ server/internal/session/auth.go | 11 +- server/openapi.yaml | 104 +++++ server/pkg/types/api.go | 3 + server/pkg/types/member.go | 3 +- webpage/docs/configuration/authentication.md | 59 +++ 28 files changed, 1517 insertions(+), 61 deletions(-) create mode 100644 server/internal/api/oauth.go create mode 100644 server/internal/api/oauth_test.go create mode 100644 server/internal/http/legacy/session_test.go create mode 100644 server/internal/http/legacy/wstoclient_test.go create mode 100644 server/internal/http/manager_test.go create mode 100644 server/internal/member/oauth/config.go create mode 100644 server/internal/member/oauth/provider.go diff --git a/client/src/components/avatar.vue b/client/src/components/avatar.vue index abe7c115..90e21d6d 100644 --- a/client/src/components/avatar.vue +++ b/client/src/components/avatar.vue @@ -12,7 +12,8 @@ backgroundColor: Background(seed), }" > - {{ seed.substring(0, 2).toUpperCase() }} + + @@ -25,19 +26,47 @@ display: inline-block; overflow: hidden; border-radius: 50%; + + img { + width: 100%; + height: 100%; + display: block; + object-fit: cover; + } }