but this is giving me an infinite loop. Even if I make it a server component it still gives me infinite loops.
You are getting an infinite loop because you need to check for the pathname.
if (!user && pathname !== '/login') {
redirect('/login');
}