feat(auth): OIDC login UI + binding management + OIDC-only mode
- useAuthConfig fetches public /auth/config; LoginPage hides the password form when oidc_only and shows an SSO button when enabled. - /oidc/callback route applies the returned JWT (sign-in) or shows the link result; oidc_error surfaced on LoginPage. - UsersPage: hides password fields in OIDC-only mode; admin OIDC bind/unbind UI per user. Sidebar self-service "Link OIDC account" (non-OIDC_ONLY). - Dockerfile ARG/ENV HARBORFORGE_OIDC_ONLY. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,7 @@ import UsersPage from '@/pages/UsersPage'
|
||||
import CalendarPage from '@/pages/CalendarPage'
|
||||
import SupportDetailPage from '@/pages/SupportDetailPage'
|
||||
import MeetingDetailPage from '@/pages/MeetingDetailPage'
|
||||
import OidcCallbackPage from '@/pages/OidcCallbackPage'
|
||||
import axios from 'axios'
|
||||
|
||||
const getStoredWizardPort = (): number | null => {
|
||||
@@ -35,7 +36,7 @@ type AppState = 'checking' | 'setup' | 'ready'
|
||||
|
||||
export default function App() {
|
||||
const [appState, setAppState] = useState<AppState>('checking')
|
||||
const { user, loading, login, logout } = useAuth()
|
||||
const { user, loading, login, loginWithToken, logout } = useAuth()
|
||||
|
||||
useEffect(() => {
|
||||
checkInitialized()
|
||||
@@ -100,6 +101,7 @@ export default function App() {
|
||||
<Route path="/users" element={<UsersPage />} />
|
||||
<Route path="/monitor" element={<MonitorPage />} />
|
||||
<Route path="/login" element={<LoginPage onLogin={login} />} />
|
||||
<Route path="/oidc/callback" element={<OidcCallbackPage onToken={loginWithToken} />} />
|
||||
<Route path="*" element={<Navigate to="/monitor" />} />
|
||||
</Routes>
|
||||
</main>
|
||||
@@ -133,6 +135,7 @@ export default function App() {
|
||||
<Route path="/roles" element={<RoleEditorPage />} />
|
||||
<Route path="/users" element={<UsersPage />} />
|
||||
<Route path="/monitor" element={<MonitorPage />} />
|
||||
<Route path="/oidc/callback" element={<OidcCallbackPage onToken={loginWithToken} />} />
|
||||
<Route path="*" element={<Navigate to="/" />} />
|
||||
</Routes>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user