Daniel Covington
fabed40906
fix: deduplicate OIDC callback sequence to prevent StrictMode race
React StrictMode's double-invocation of useEffect caused the first run to
remove oidcStateStorageKey from sessionStorage before the async code exchange
began. The second run would see the missing state, throw, and display
"Authentication failed" — while the first run completed in the background
(storing tokens and replacing the URL), making a page refresh appear to work.
Introduces a module-scope Promise (pendingCallbackSequence) that covers the
full callback sequence: token exchange, session fetch, and URL navigation. The
second effect run shares the same Promise and awaits its result, so no re-
validation or re-fetching occurs, and only the non-cancelled run sets state.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
před 3 dny
Daniel Covington
eaeb0a4284
Merge branch 'main' of https://onefortheroadgit.sytes.net/dcovington/Campaign_Tracker
před 3 dny
Daniel Covington
6ec1b34821
Implement Keycloak OIDC auth flow
- Add JWT bearer auth, session endpoint, and auth audit capture
- Add server-side Keycloak token exchange and refresh endpoints
- Load Keycloak client secret from ignored .env file
- Configure Canopy Keycloak realm, CORS, and Vite API proxy
- Add frontend protected auth callback, token storage, and refresh handling
- Cover backend and frontend auth behavior with tests
před 3 dny
nano
a2b0ec7974
Update README client run instructions
před 3 dny
nano
fbdc232546
Merge branch 1.2 into main (campaign-tracker-client/src/workspace/workspaceContracts.ts)
před 3 dny
nano
44f392e623
Merge branch 1.2 into main (campaign-tracker-client/src/workspace/workspaceContracts.test.ts)
před 3 dny
nano
355e0294df
Merge branch 1.2 into main (campaign-tracker-client/src/workspace/WorkspaceShell.tsx)
před 3 dny
nano
049996c60f
Merge branch 1.2 into main (add WorkspaceShell.css)
před 3 dny
nano
6bc8c05a44
Merge branch 1.2 into main (campaign-tracker-client/src/main.tsx)
před 3 dny
nano
cb4921128b
Merge branch 1.2 into main (campaign-tracker-client/src/index.css)
před 3 dny
nano
20ab8242a9
Merge branch 1.2 into main (campaign-tracker-client/src/App.tsx)
před 3 dny
nano
de2715611c
Merge branch 1.2 into main (campaign-tracker-client/src/App.css)
před 3 dny
nano
d1e63b77ea
Merge branch 1.2 into main (campaign-tracker-client/package.json)
před 3 dny
nano
57f1dd0b9a
Merge branch 1.2 into main (_bmad-output/implementation-artifacts/sprint-status.yaml)
před 3 dny
nano
ab640277f6
Merge branch 1.2 into main (_bmad-output/implementation-artifacts/1-2-workspace-shell-ant-design-foundation.md)
před 3 dny
nano
aa3915dca1
Merge branch 1.2 into main (_bmad-output/implementation-artifacts/1-1-project-initialization-solution-scaffold.md)
před 3 dny
nano
bafdae8fdf
Delete file for merge branch 1.2 into main (Campaign_Tracker.Server/WeatherForecast.cs)
před 3 dny
nano
30bcef0044
Delete file for merge branch 1.2 into main (Campaign_Tracker.Server/Controllers/WeatherForecastController.cs)
před 3 dny
nano
ddbdaf2182
Merge branch 1.2 into main
před 3 dny
nano
48428d2ed5
Fix Story 1.1 scaffold docs (.gitignore)
před 3 dny
nano
38a765ddf5
Fix Story 1.1 scaffold docs (README.md)
před 3 dny
Daniel Covington
f73d372f37
This Code is for Issues 1-1
před 3 dny
Daniel Covington
2484a48e28
init
před 4 dny