Pulse/internal/api
rcourtman c664204b59 feat: add OIDC logout URL support and improve UX
Enhancements for OIDC authentication based on user feedback from issue #327:

1. Add OIDC logout URL support
   - New OIDC_LOGOUT_URL environment variable
   - UI field in OIDC settings panel for logout URL configuration
   - Properly redirects to IdP logout endpoint (e.g., Authentik end-session)
   - Stored in config and returned via security status API

2. Fix redirect URL help text in UI
   - Handle empty defaultRedirect string properly
   - Improved help text when PUBLIC_URL is not set
   - Clarify when auto-detection vs manual config is needed

3. Documentation improvements
   - Add note about using https:// in PUBLIC_URL/OIDC_REDIRECT_URL when behind TLS proxy
   - Document OIDC_LOGOUT_URL environment variable
   - Clarify X-Forwarded-Proto header behavior in OIDC docs
   - Add better guidance for Authentik users on HTTPS setup

4. Frontend improvements
   - Add HS256 signature algorithm error message in Login component
   - Display OIDC logout URL when available

These changes address the remaining OIDC UX issues reported by users,
particularly around logout functionality and reverse proxy configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 10:59:22 +00:00
..
alerts.go fix: improve alert system robustness and security 2025-09-30 15:35:39 +00:00
auth.go fix: resolve OIDC authentication issues with DISABLE_AUTH and improve UX 2025-10-01 10:53:19 +00:00
config_handlers.go feat: add SSH key removal option to Quick Setup and fix node deletion 2025-10-01 10:25:56 +00:00
csrf_store.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
demo_middleware.go fix CI errors: remove unused imports and format Go code 2025-09-30 19:59:55 +00:00
diagnostics.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
DO_NOT_EDIT_FRONTEND_HERE.md enhance: improve mock data realism and alert system 2025-09-02 21:11:01 +00:00
frontend_embed.go feat: add OIDC single sign-on 2025-09-29 10:22:27 +00:00
guest_metadata.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
middleware.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
notifications.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
oidc_handlers.go feat: add OIDC logout URL support and improve UX 2025-10-01 10:59:22 +00:00
oidc_service.go improve: add comprehensive debug logging for OIDC troubleshooting 2025-09-30 18:45:30 +00:00
rate_limit_config.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
ratelimit.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
README.md enhance: improve mock data realism and alert system 2025-09-02 21:11:01 +00:00
recovery_tokens.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
router.go feat: add OIDC logout URL support and improve UX 2025-10-01 10:59:22 +00:00
security.go fix: resolve OIDC authentication issues with DISABLE_AUTH and improve UX 2025-10-01 10:53:19 +00:00
security_oidc.go feat: add OIDC logout URL support and improve UX 2025-10-01 10:59:22 +00:00
security_setup_fix.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
session_store.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
settings.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
system_settings.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
types.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
updates.go chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00

Internal API Package

This directory contains the API server implementation for Pulse.

Important Note About frontend-modern/

The frontend-modern/ subdirectory that appears here is:

  • AUTO-GENERATED during builds
  • NOT the source code - just a build artifact
  • IN .gitignore - never committed
  • REQUIRED BY GO - The embed directive needs it here

Frontend Development Location

👉 Edit frontend files at: /opt/pulse/frontend-modern/src/

Why This Structure?

Go's //go:embed directive has limitations:

  1. Cannot use ../ paths to access parent directories
  2. Cannot follow symbolic links
  3. Must embed files within the Go module

This is a known Go limitation and our structure works around it.