diff --git a/frontend/src/components/blog/comments/Comments.tsx b/frontend/src/components/blog/comments/Comments.tsx
index 5e12b68..7135665 100644
--- a/frontend/src/components/blog/comments/Comments.tsx
+++ b/frontend/src/components/blog/comments/Comments.tsx
@@ -14,10 +14,8 @@ interface CommentsProps {
}
export default function Comments(props: CommentsProps) {
- console.log('[Comments] SSR isAuthorized:', props.isAuthorized);
const [isAuthenticated, setIsAuthenticated] = createSignal(props.isAuthorized ?? false);
- console.log('[Comments] Initial isAuthenticated:', isAuthenticated());
-const [currentUser, setCurrentUser] = createSignal<{
+ const [currentUser, setCurrentUser] = createSignal<{
id: string;
name: string;
email: string;
@@ -305,11 +303,6 @@ const [currentUser, setCurrentUser] = createSignal<{
)}
- {/* DEBUG */}
-
- SSR isAuthorized: {String(props.isAuthorized)} | client isAuth: {String(isAuthenticated())}
-
-
{isLoading() ? (
diff --git a/frontend/src/lib/pb.ts b/frontend/src/lib/pb.ts
index d898212..8f364bc 100644
--- a/frontend/src/lib/pb.ts
+++ b/frontend/src/lib/pb.ts
@@ -5,25 +5,6 @@ const PB_URL = import.meta.env.PB_POCKETBASE_URL || 'http://127.0.0.1:8090';
export const pb = new PocketBase(PB_URL);
-if (typeof window !== 'undefined') {
- const token = localStorage.getItem('auth_token');
- const userStr = localStorage.getItem('user');
-
- // Инициализируем куку из localStorage если её нет
- if (token && !document.cookie.includes('pb_auth')) {
- document.cookie = `pb_auth=${token}; path=/; max-age=${7 * 24 * 60 * 60}; SameSite=Lax`;
- }
-
- if (token && userStr) {
- try {
- const user = JSON.parse(userStr);
- pb.authStore.save(token, user);
- } catch (e) {
- console.error('Failed to restore auth:', e);
- }
- }
-}
-
export interface PostVotes {
id: string;
post_id: string;
diff --git a/frontend/src/pages/api/auth/sign-out.ts b/frontend/src/pages/api/auth/sign-out.ts
index 3552495..18de29e 100644
--- a/frontend/src/pages/api/auth/sign-out.ts
+++ b/frontend/src/pages/api/auth/sign-out.ts
@@ -1,10 +1,19 @@
import type { APIRoute } from 'astro';
export const POST: APIRoute = async ({ cookies }) => {
+ // Удаляем куку на сервере
cookies.delete('pb_auth', { path: '/' });
+ // Возвращаем заголовок для удаления куки на клиенте
return new Response(JSON.stringify({
success: true,
message: 'Вы успешно вышли из аккаунта'
- }), { status: 200 });
+ }), {
+ status: 200,
+ headers: {
+ 'Content-Type': 'application/json',
+ // Принудительно удаляем куку на клиенте
+ 'Set-Cookie': 'pb_auth=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT',
+ }
+ });
};
\ No newline at end of file
diff --git a/frontend/src/pages/blog/[slug].astro b/frontend/src/pages/blog/[slug].astro
index 1774a3c..bfe20ac 100644
--- a/frontend/src/pages/blog/[slug].astro
+++ b/frontend/src/pages/blog/[slug].astro
@@ -23,15 +23,17 @@ if (!post) {
return Astro.redirect('/blog');
}
-// SSR проверка авторизации
+// SSR проверка авторизации - используем реальную проверку через API
let isAuthorized = false;
const pbAuthCookie = Astro.cookies.get('pb_auth')?.value;
+console.log('[SSR] Cookie exists:', !!pbAuthCookie);
+
if (pbAuthCookie && PB_POCKETBASE_URL && PB_POCKETBASE_URL.startsWith('http')) {
try {
const token = pbAuthCookie.trim();
- const controller = new AbortController();
- const timeoutId = setTimeout(() => controller.abort(), 5000);
+
+ console.log('[SSR] Token preview:', token.substring(0, 20) + '...');
const response = await fetch(`${PB_POCKETBASE_URL}/api/collections/users/auth-refresh`, {
method: 'POST',
@@ -39,18 +41,20 @@ if (pbAuthCookie && PB_POCKETBASE_URL && PB_POCKETBASE_URL.startsWith('http')) {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
- signal: controller.signal,
});
- clearTimeout(timeoutId);
+ console.log('[SSR] PB response:', response.status);
if (response.ok) {
+ const data = await response.json();
+ console.log('[SSR] Auth valid, user:', data.record?.email);
isAuthorized = true;
} else {
+ console.log('[SSR] Auth invalid, deleting cookie');
Astro.cookies.delete('pb_auth', { path: '/' });
}
} catch (e) {
- console.error('[SSR Auth] Error:', e);
+ console.error('[SSR] Error:', e.message);
}
}