mirror of
https://github.com/vercel/commerce.git
synced 2025-05-13 05:07:51 +00:00
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
'use server';
|
|
|
|
import { CUSTOMER_API_URL, ORIGIN_URL, removeAllCookiesServerAction } from 'lib/shopify/auth';
|
|
import { redirect } from 'next/navigation';
|
|
import { cookies } from 'next/headers';
|
|
|
|
export async function doLogout() {
|
|
const origin = ORIGIN_URL;
|
|
const customerAccountApiUrl = CUSTOMER_API_URL;
|
|
let logoutUrl;
|
|
try {
|
|
const idToken = cookies().get('shop_id_token');
|
|
const idTokenValue = idToken?.value;
|
|
if (!idTokenValue) {
|
|
//you can also throw an error here with page and middleware
|
|
//throw new Error ("Error No Id Token")
|
|
//if there is no idToken, then sending to logout url will redirect shopify, so just
|
|
//redirect to login here and delete cookies (presumably they don't even exist)
|
|
logoutUrl = new URL(`${origin}/login`);
|
|
} else {
|
|
logoutUrl = new URL(
|
|
`${customerAccountApiUrl}/auth/logout?id_token_hint=${idTokenValue}&post_logout_redirect_uri=${origin}`
|
|
);
|
|
}
|
|
await removeAllCookiesServerAction();
|
|
} catch (e) {
|
|
console.log('Error', e);
|
|
//you can throw error here or return - return goes back to form b/c of state, throw will throw the error boundary
|
|
//throw new Error ("Error")
|
|
return 'Error logging out. Please try again';
|
|
}
|
|
|
|
redirect(`${logoutUrl}`); // Navigate to the new post page
|
|
}
|