33d899c243
Root cause of "Google authentication failed": appsettings.Development.json had Auth:GoogleClientId set to the literal placeholder "CHANGE_ME_GOOGLE_CLIENT_ID" while the frontend's .env.development had a real (already-public, already-committed) client ID -- every Google ID token's audience check failed against the backend's placeholder. Fixed by setting the same real client ID on both sides (a client ID is a public identifier, not a secret, safe to commit -- unlike a client secret). Also enabled Auth:AllowRegistration in dev so the existing Google-first self-serve-signup path (auto-create on unmatched verified email, auto-link on matching verified email -- built during Wave 7) is actually exercisable locally. Wired the previously-missing Auth__MicrosoftClientId / NEXT_PUBLIC_MICROSOFT_CLIENT_ID into docker-compose.yml/.env.example (distinct from the existing MICROSOFT_CLIENT_ID used for Outlook mail linking) -- Microsoft sign-in was never deployable, a leftover gap from when it was built. Fixed a stale env-var name in the Microsoft setup hint copy (still said REACT_APP_*, predates the Next.js migration). Removed the per-user accent color picker entirely: it was purely client-side (localStorage + theme.ts), never touched the backend/DB. theme.ts now hardcodes a single ACCENT constant; themePrefs.ts drops get/set/clearAccentColor; App.tsx and SettingsView.tsx drop the accentColor prop threading. Dead accent-related i18n keys removed from both locales. Consolidated Settings' "Account" tab (duplicated GoogleAuthCard, which already lives on the Profile page) into Profile: moved AuthStatusCard and EmailProviderConnections there alongside the existing Google/ Microsoft auth cards, so identity/account-linking lives in one place. Settings drops from 5 tabs to 4 and its General tab uses a consistent SectionCard layout instead of ad-hoc per-card styling. Verified: dotnet build/test (177/177) and npm build/test (57/57) both green; confirmed live against a running dev server that /auth/config now reports googleEnabled with the corrected client ID, Settings has no accent controls, and Profile shows the consolidated auth section.
22 lines
564 B
TypeScript
22 lines
564 B
TypeScript
import { getAuthUserKey } from "./auth";
|
|
|
|
export type ThemeModePref = "system" | "light" | "dark";
|
|
|
|
export function getUserKeyFromToken(): string {
|
|
return getAuthUserKey();
|
|
}
|
|
|
|
function k(base: string) {
|
|
return `${base}:${getUserKeyFromToken()}`;
|
|
}
|
|
|
|
export function getThemeModePref(): ThemeModePref {
|
|
const raw = window.localStorage.getItem(k("themeMode"));
|
|
if (raw === "light" || raw === "dark" || raw === "system") return raw;
|
|
return "system";
|
|
}
|
|
|
|
export function setThemeModePref(v: ThemeModePref) {
|
|
window.localStorage.setItem(k("themeMode"), v);
|
|
}
|