mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-06 19:08:59 -05:00
[PR #24240] [CLOSED] fix(auth): remove pending-verification gate for Clerk-authenticated users #66416
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/24240
Author: @Schravenralph
Created: 4/29/2026
Status: ❌ Closed
Base:
main← Head:fix/clerk-trust-no-pending-gate📝 Commits (10+)
183b35echore: set up RM fork with upstream remote and gitignore5558911feat: add RM Docker Compose with PostgreSQL, Ollama, and Clerk OIDC config992f641feat: add Ruimtemeesters brand colors to Tailwind config2902ebffeat: apply Ruimtemeesters brand theme CSS overrides9e145aafeat: replace logos, favicon, and app name with Ruimtemeesters brandingec30c8ffeat: customize welcome page with RM branding and Dutch prompt suggestionsbb9f5f6feat: add Clerk shared cookie SSO middleware for seamless authb65847efeat: auto-redirect to Clerk OIDC when login form is disabled6c3600afix: move CSS import to end of file and prevent OIDC redirect loopc38504dMerge Phase A1+A2: Fork, brand, and Clerk SSO📊 Changes
175 files changed (+16925 additions, -147 deletions)
View changed files
➕
.claude/skills/bopa/SKILL.md(+84 -0)➕
.env.rm.example(+99 -0)➕
.githooks/no-public-bind-check.sh(+81 -0)➕
.githooks/pre-commit(+13 -0)📝
.gitignore(+5 -0)📝
backend/open_webui/config.py(+12 -15)📝
backend/open_webui/main.py(+53 -29)➕
backend/open_webui/middleware/__init__.py(+0 -0)➕
backend/open_webui/middleware/clerk_sso.py(+83 -0)➕
backend/open_webui/test/util/test_mcp_client.py(+42 -0)➕
backend/open_webui/utils/clerk_sso.py(+199 -0)➕
backend/open_webui/utils/clerk_trust_fixes.py(+56 -0)📝
backend/open_webui/utils/mcp/client.py(+20 -13)📝
backend/open_webui/utils/oauth.py(+4 -3)➕
backend/open_webui/utils/token_forwarding.py(+65 -0)➕
cypress/e2e/brand-pass-2.cy.ts(+117 -0)➕
docker-compose.rm.yaml(+150 -0)📝
docs/SECURITY.md(+1 -2)➕
docs/superpowers/plans/2026-04-03-full-stack-review-debug-test.md(+1374 -0)➕
docs/superpowers/specs/2026-04-03-full-stack-review-debug-test-design.md(+260 -0)...and 80 more files
📄 Description
Summary
DEFAULT_USER_ROLEdefaulted topending, so RM colleagues coming through the Clerk OIDC flow landed behind an admin-approval overlay even though Clerk already authenticated them. This PR aligns the chatbot with the projectbeheer trust model: a verified Clerk token = the user is in.DEFAULT_USER_ROLE=userindocker-compose.rm.yaml+.env.rm.example.backend/open_webui/utils/clerk_trust_fixes.py::apply_clerk_trust_fixes()called from the lifespan startup. Two boot-time fixes, both gated on envDEFAULT_USER_ROLE != 'pending'so operators can still opt back into the approval gate:PersistentConfig(first boot caches the default in theconfigtable; env alone doesn't take effect on existing deployments).UPDATE user SET role=<env_role> WHERE role='pending'— unsticks colleagues stranded before this fix on the next chatbot restart.Test plan
Overriding persisted DEFAULT_USER_ROLE='pending' with env value 'user'andPromoted N pending user(s) to role='user'(N may be 0 if no one is currently stuck).chatbot.datameesters.nl. They should land directly in the chat UI — no pending-verification overlay.DEFAULT_USER_ROLE=pendingexplicitly still routes new users through the approval gate.🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.