fixes auth?

This commit is contained in:
2025-08-02 15:35:18 +02:00
parent 78dc7be703
commit b1deaee4e6
4 changed files with 36 additions and 7 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ export default function SignInCallback() {
useEffect(() => { useEffect(() => {
userManager.signinCallback(); userManager.signinCallback();
router.push("/"); router.push("/nominations");
}, []); }, []);
return <></>; return <></>;
+1 -3
View File
@@ -44,9 +44,7 @@ export default function Page() {
className="w-full rounded bg-blue-500 px-4 py-2 text-center font-bold text-white hover:bg-blue-400" className="w-full rounded bg-blue-500 px-4 py-2 text-center font-bold text-white hover:bg-blue-400"
onClick={() => void auth.signinRedirect()} onClick={() => void auth.signinRedirect()}
> >
<Link href="/nominations" className="w-full"> Inloggen
Inloggen
</Link>
</button> </button>
</div> </div>
)} )}
+18 -1
View File
@@ -1,7 +1,7 @@
"use client"; "use client";
import { useAuth } from "react-oidc-context"; import { useAuth } from "react-oidc-context";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { useRouter } from "next/navigation"; import { useRouter, usePathname } from "next/navigation";
import { Source_Sans_3, Nunito } from "next/font/google"; import { Source_Sans_3, Nunito } from "next/font/google";
const nunito = Nunito({ const nunito = Nunito({
@@ -11,6 +11,7 @@ const nunito = Nunito({
export default function AuthStatus() { export default function AuthStatus() {
const auth = useAuth(); const auth = useAuth();
const router = useRouter(); const router = useRouter();
const pathname = usePathname();
const [persistentAuthState, setPersistentAuthState] = useState<{ const [persistentAuthState, setPersistentAuthState] = useState<{
isAuthenticated: boolean; isAuthenticated: boolean;
user: any; user: any;
@@ -32,6 +33,22 @@ export default function AuthStatus() {
} }
}, [auth.isLoading, auth.isAuthenticated, auth.user, auth.error]); }, [auth.isLoading, auth.isAuthenticated, auth.user, auth.error]);
useEffect(() => {
// Redirect to / if user is definitely not logged in and not already on /
if (
persistentAuthState.hasInitialized &&
!persistentAuthState.isAuthenticated &&
pathname !== "/"
) {
router.push("/");
}
}, [
persistentAuthState.hasInitialized,
persistentAuthState.isAuthenticated,
pathname,
router,
]);
// Show loading only on first load, not on subsequent navigations // Show loading only on first load, not on subsequent navigations
if (!persistentAuthState.hasInitialized && auth.isLoading) { if (!persistentAuthState.hasInitialized && auth.isLoading) {
return ( return (
+16 -2
View File
@@ -11,13 +11,27 @@ const userConfig: AuthProviderProps = {
redirect_uri: REDIRECT_URI, redirect_uri: REDIRECT_URI,
response_type: "code", response_type: "code",
includeIdTokenInSilentRenew: true, includeIdTokenInSilentRenew: true,
automaticSilentRenew: false, //TODO: Dit moet dus denk ik wel gewoon aan? automaticSilentRenew: false, // We skippen automatic silent en doen het zelf hieronder.
scope: "openid profile email offline_access", //TODO: Iets met scopes. scope: "openid profile email offline_access", //TODO: Iets met scopes.
accessTokenExpiringNotificationTimeInSeconds: 5 * 60, //accessTokenExpiringNotificationTimeInSeconds: 1 * 60,
loadUserInfo: true, loadUserInfo: true,
post_logout_redirect_uri: ORIGIN_URI, post_logout_redirect_uri: ORIGIN_URI,
response_mode: "query", response_mode: "query",
revokeTokensOnSignout: true,
}; };
export const userManager = new UserManager(userConfig); export const userManager = new UserManager(userConfig);
// Some handling of token expiration.
// Hopefully this means login timeout issues are prevented somewhat.
userManager.events.addAccessTokenExpiring(() => {
console.warn("Access token expiring, silently renewing...");
userManager.signinSilent(); //TODO: uitzoeken bij welke callback dit trecht komt
});
userManager.events.addAccessTokenExpired(() => {
console.warn("Access token expired, redirecting to login...");
userManager.signinRedirect();
});
export const oidcConfig = { ...userConfig, userManager }; export const oidcConfig = { ...userConfig, userManager };