payload-authjs
Version:
A Payload CMS 3 plugin for Auth.js 5
29 lines (28 loc) • 1.2 kB
JavaScript
import { revalidateTag } from "next/cache";
import { cookies } from "next/headers";
import { getAuthjsInstance } from "../../../authjs/getAuthjsInstance";
import { AUTHJS_STRATEGY_NAME } from "../../../constants";
/**
* Add logout hook to destroy the authjs session
*
* @see https://payloadcms.com/docs/hooks/collections#afterlogout
* @see https://github.com/payloadcms/payload/blob/main/packages/payload/src/auth/operations/logout.ts
*/ export const logoutHook = async ({ req, collection })=>{
// Check if user is authenticated using the authjs strategy
if (req.user?._strategy !== AUTHJS_STRATEGY_NAME) {
return;
}
const { signOut } = getAuthjsInstance(req.payload, collection.slug);
// Sign out and generate expired cookies using authjs
const { cookies: authJsCookies } = await signOut({
redirect: false
});
// Destroy the authjs session cookies
const requestCookies = await cookies();
for (const cookie of authJsCookies){
requestCookies.set(cookie.name, cookie.value, cookie.options);
}
// Revalidate the cache for the payload session
revalidateTag("payload-session", "minutes");
};
//# sourceMappingURL=logout.js.map