This commit is contained in:
lumijiez
2025-06-09 00:45:42 +03:00
parent ab9b80b74f
commit a695e1cce6
19 changed files with 464 additions and 173 deletions

View File

@@ -5,22 +5,20 @@ import {useEffect, useState} from "react";
export default function Home() {
const { user, error, isLoading } = useUser();
const [accessToken, setAccessToken] = useState(null);
useEffect(() => {
const fetchAccessToken = async () => {
if (user) {
try {
const response = await fetch('/auth/access-token');
const v = await fetch('/token');
if (response.ok) {
const tokenData = await response.text();
setAccessToken(tokenData);
} else {
setAccessToken('Token not available');
}
} catch (error) {
setAccessToken('Error fetching token');
console.error("Error fetching token");
}
} else {
try {
const resp = await fetch('/untoken');
} catch (e) {
console.error('Error in /api/untoken:', e);
}
}
};
@@ -28,10 +26,6 @@ export default function Home() {
fetchAccessToken().then(r => console.log(r));
}, [user]);
async function checkValidity() {
const check = await fetch('https://impr.ink/api/api/User', {method: 'POST'});
}
if (isLoading) {
return (
<div className="min-h-screen bg-gradient-to-br from-purple-900 via-blue-900 to-indigo-900 flex items-center justify-center">
@@ -147,15 +141,6 @@ export default function Home() {
</div>
</div>
)}
<div>
<label
className="text-purple-300 text-xs font-semibold uppercase tracking-wider">Access
Token</label>
<div
className="text-white/80 text-xs mt-1 p-2 bg-black/30 rounded-lg border border-white/10 font-mono break-all max-h-24 overflow-auto">
{accessToken}
</div>
</div>
</div>
<div>

View File

@@ -1,34 +1,30 @@
import { cookies } from 'next/headers';
import {cookies, headers} from 'next/headers';
import { NextResponse } from 'next/server';
import {auth0} from "@/lib/auth0";
import api from "@/lib/api";
export async function GET() {
try {
const session = await auth0.getSession();
const accessToken = session.tokenSet.accessToken;
if (!accessToken) {
return NextResponse.json({ error: 'No access token found' }, { status: 401 });
}
const token = (await auth0.getSession()).tokenSet.accessToken;
const response = NextResponse.json({ message: 'Access token set in cookie' });
if (!token) { return NextResponse.json({ error: 'No access token found' }, { status: 401 }); }
const cookieDomain = process.env.COOKIE_DOMAIN || undefined;
const cookieStore = await cookies();
cookieStore.set({
name: 'access_token',
value: accessToken,
(await cookies()).set('access_token', token, {
httpOnly: true,
secure: true,
sameSite: 'strict',
path: '/',
domain: cookieDomain,
domain: process.env.COOKIE_DOMAIN,
maxAge: 3600,
});
return response;
await api.post('/users/sync', {}, {
headers: { Cookie: `access_token=${token}` }
});
NextResponse.json({ message: 'Access token set in cookie' });
} catch (error) {
console.error('Error in /api/set-token:', error);
console.error('Error in /api/token:', error);
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
}
}

View File

@@ -0,0 +1,22 @@
import {cookies} from 'next/headers';
import {NextResponse} from 'next/server';
export async function GET() {
try {
(await cookies()).set({
name: 'access_token',
value: '',
httpOnly: true,
secure: true,
sameSite: 'strict',
path: '/',
domain: process.env.COOKIE_DOMAIN,
maxAge: -1,
});
return NextResponse.json({message: 'Deleted access token'});
} catch (error) {
console.error('Error in /api/untoken:', error);
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
}
}

8
webui/src/lib/api.js Normal file
View File

@@ -0,0 +1,8 @@
import axios from "axios";
const api = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_URL,
withCredentials: true,
});
export default api;