1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-05 05:05:17 +02:00

refactor: Update API endpoint paths from "_allauth" to "auth" for consistency

This commit is contained in:
Sean Morley 2025-02-23 17:04:20 -05:00
parent d5311bb71e
commit b1068d27b0
16 changed files with 56 additions and 202 deletions

View file

@ -37,7 +37,7 @@
}
async function fetchSetupInfo() {
const res = await fetch('/_allauth/browser/v1/account/authenticators/totp', {
const res = await fetch('/auth/browser/v1/account/authenticators/totp', {
method: 'GET'
});
const data = await res.json();
@ -53,7 +53,7 @@
}
async function sendTotp() {
const res = await fetch('/_allauth/browser/v1/account/authenticators/totp', {
const res = await fetch('/auth/browser/v1/account/authenticators/totp', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
@ -78,7 +78,7 @@
async function getRecoveryCodes() {
console.log('getting recovery codes');
const res = await fetch('/_allauth/browser/v1/account/authenticators/recovery-codes', {
const res = await fetch('/auth/browser/v1/account/authenticators/recovery-codes', {
method: 'GET'
});
if (res.ok) {

View file

@ -41,7 +41,7 @@ export const actions: Actions = {
return;
}
const res = await fetch(`${serverEndpoint}/_allauth/browser/v1/auth/session`, {
const res = await fetch(`${serverEndpoint}/auth/browser/v1/auth/session`, {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',

View file

@ -1,101 +0,0 @@
const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL'];
const endpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
import { fetchCSRFToken } from '$lib/index.server';
import { json } from '@sveltejs/kit';
/** @type {import('./$types').RequestHandler} */
export async function GET(event) {
const { url, params, request, fetch, cookies } = event;
const searchParam = url.search ? `${url.search}&format=json` : '?format=json';
return handleRequest(url, params, request, fetch, cookies, searchParam);
}
/** @type {import('./$types').RequestHandler} */
export async function POST({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
export async function PATCH({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
export async function PUT({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
export async function DELETE({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
async function handleRequest(
url: any,
params: any,
request: any,
fetch: any,
cookies: any,
searchParam: string,
requreTrailingSlash: boolean | undefined = false
) {
const path = params.path;
let targetUrl = `${endpoint}/_allauth/${path}`;
// Ensure the path ends with a trailing slash
if (requreTrailingSlash && !targetUrl.endsWith('/')) {
targetUrl += '/';
}
// Append query parameters to the path correctly
targetUrl += searchParam; // This will add ?format=json or &format=json to the URL
const headers = new Headers(request.headers);
// Delete existing csrf cookie by setting an expired date
cookies.delete('csrftoken', { path: '/' });
// Generate a new csrf token (using your existing fetchCSRFToken function)
const csrfToken = await fetchCSRFToken();
if (!csrfToken) {
return json({ error: 'CSRF token is missing or invalid' }, { status: 400 });
}
// Set the new csrf token in both headers and cookies
const cookieHeader = `csrftoken=${csrfToken}; Path=/; HttpOnly; SameSite=Lax`;
try {
const response = await fetch(targetUrl, {
method: request.method,
headers: {
...Object.fromEntries(headers),
'X-CSRFToken': csrfToken,
Cookie: cookieHeader
},
body:
request.method !== 'GET' && request.method !== 'HEAD' ? await request.text() : undefined,
credentials: 'include' // This line ensures cookies are sent with the request
});
if (response.status === 204) {
return new Response(null, {
status: 204,
headers: response.headers
});
}
const responseData = await response.text();
// Create a new Headers object without the 'set-cookie' header
const cleanHeaders = new Headers(response.headers);
cleanHeaders.delete('set-cookie');
return new Response(responseData, {
status: response.status,
headers: cleanHeaders
});
} catch (error) {
console.error('Error forwarding request:', error);
return json({ error: 'Internal Server Error' }, { status: 500 });
}
}

View file

@ -12,8 +12,8 @@ export async function GET(event) {
/** @type {import('./$types').RequestHandler} */
export async function POST({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}&format=json` : '?format=json';
return handleRequest(url, params, request, fetch, cookies, searchParam, true);
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
export async function PATCH({ url, params, request, fetch, cookies }) {
@ -27,8 +27,8 @@ export async function PUT({ url, params, request, fetch, cookies }) {
}
export async function DELETE({ url, params, request, fetch, cookies }) {
const searchParam = url.search ? `${url.search}&format=json` : '?format=json';
return handleRequest(url, params, request, fetch, cookies, searchParam, true);
const searchParam = url.search ? `${url.search}` : '';
return handleRequest(url, params, request, fetch, cookies, searchParam, false);
}
async function handleRequest(

View file

@ -42,7 +42,7 @@ export const actions: Actions = {
const csrfToken = await fetchCSRFToken();
// Initial login attempt
const loginFetch = await event.fetch(`${serverEndpoint}/_allauth/browser/v1/auth/login`, {
const loginFetch = await event.fetch(`${serverEndpoint}/auth/browser/v1/auth/login`, {
method: 'POST',
headers: {
'X-CSRFToken': csrfToken,
@ -69,7 +69,7 @@ export const actions: Actions = {
// Attempt MFA authentication
const sessionId = extractSessionId(loginFetch.headers.get('Set-Cookie'));
const mfaLoginFetch = await event.fetch(
`${serverEndpoint}/_allauth/browser/v1/auth/2fa/authenticate`,
`${serverEndpoint}/auth/browser/v1/auth/2fa/authenticate`,
{
method: 'POST',
headers: {

View file

@ -31,7 +31,7 @@ export const load: PageServerLoad = async (event) => {
});
let user = (await res.json()) as User;
let emailFetch = await fetch(`${endpoint}/_allauth/browser/v1/account/email`, {
let emailFetch = await fetch(`${endpoint}/auth/browser/v1/account/email`, {
headers: {
Cookie: `sessionid=${sessionId}`
}
@ -45,14 +45,11 @@ export const load: PageServerLoad = async (event) => {
return redirect(302, '/');
}
let mfaAuthenticatorFetch = await fetch(
`${endpoint}/_allauth/browser/v1/account/authenticators`,
{
headers: {
Cookie: `sessionid=${sessionId}`
}
let mfaAuthenticatorFetch = await fetch(`${endpoint}/auth/browser/v1/account/authenticators`, {
headers: {
Cookie: `sessionid=${sessionId}`
}
);
});
let mfaAuthenticatorResponse = (await mfaAuthenticatorFetch.json()) as MFAAuthenticatorResponse;
let authenticators = (mfaAuthenticatorResponse.data.length > 0) as boolean;
@ -208,7 +205,7 @@ export const actions: Actions = {
let csrfToken = await fetchCSRFToken();
if (current_password) {
let res = await fetch(`${endpoint}/_allauth/browser/v1/account/password/change`, {
let res = await fetch(`${endpoint}/auth/browser/v1/account/password/change`, {
method: 'POST',
headers: {
Referer: event.url.origin, // Include Referer header
@ -226,7 +223,7 @@ export const actions: Actions = {
}
return { success: true };
} else {
let res = await fetch(`${endpoint}/_allauth/browser/v1/account/password/change`, {
let res = await fetch(`${endpoint}/auth/browser/v1/account/password/change`, {
method: 'POST',
headers: {
Referer: event.url.origin, // Include Referer header

View file

@ -72,7 +72,7 @@
}
async function removeEmail(email: { email: any; verified?: boolean; primary?: boolean }) {
let res = await fetch('/_allauth/browser/v1/account/email/', {
let res = await fetch('/auth/browser/v1/account/email', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json'
@ -88,7 +88,7 @@
}
async function verifyEmail(email: { email: any; verified?: boolean; primary?: boolean }) {
let res = await fetch('/_allauth/browser/v1/account/email/', {
let res = await fetch('/auth/browser/v1/account/email/', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
@ -103,7 +103,7 @@
}
async function addEmail() {
let res = await fetch('/_allauth/browser/v1/account/email/', {
let res = await fetch('/auth/browser/v1/account/email/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
@ -122,7 +122,7 @@
}
async function primaryEmail(email: { email: any; verified?: boolean; primary?: boolean }) {
let res = await fetch('/_allauth/browser/v1/account/email/', {
let res = await fetch('/auth/browser/v1/account/email/', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
@ -194,7 +194,7 @@
}
async function disableMfa() {
const res = await fetch('/_allauth/browser/v1/account/authenticators/totp', {
const res = await fetch('/auth/browser/v1/account/authenticators/totp', {
method: 'DELETE'
});
if (res.ok) {

View file

@ -51,7 +51,7 @@ export const actions: Actions = {
const tokenPromise = await csrfTokenFetch.json();
const csrfToken = tokenPromise.csrfToken;
const loginFetch = await event.fetch(`${serverEndpoint}/_allauth/browser/v1/auth/signup`, {
const loginFetch = await event.fetch(`${serverEndpoint}/auth/browser/v1/auth/signup`, {
method: 'POST',
headers: {
'X-CSRFToken': csrfToken,

View file

@ -16,7 +16,7 @@ export const actions: Actions = {
let csrfToken = await fetchCSRFToken();
let res = await fetch(`${endpoint}/_allauth/browser/v1/auth/password/request`, {
let res = await fetch(`${endpoint}/auth/browser/v1/auth/password/request`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',

View file

@ -29,20 +29,17 @@ export const actions: Actions = {
const serverEndpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
const csrfToken = await fetchCSRFToken();
const response = await event.fetch(
`${serverEndpoint}/_allauth/browser/v1/auth/password/reset`,
{
headers: {
'Content-Type': 'application/json',
Cookie: `csrftoken=${csrfToken}`,
'X-CSRFToken': csrfToken,
Referer: event.url.origin // Include Referer header
},
method: 'POST',
credentials: 'include',
body: JSON.stringify({ key: key, password: password })
}
);
const response = await event.fetch(`${serverEndpoint}/auth/browser/v1/auth/password/reset`, {
headers: {
'Content-Type': 'application/json',
Cookie: `csrftoken=${csrfToken}`,
'X-CSRFToken': csrfToken,
Referer: event.url.origin // Include Referer header
},
method: 'POST',
credentials: 'include',
body: JSON.stringify({ key: key, password: password })
});
if (response.status !== 401) {
const error_message = await response.json();

View file

@ -11,7 +11,7 @@ export const load = (async (event) => {
const serverEndpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
const csrfToken = await fetchCSRFToken();
let verifyFetch = await event.fetch(`${serverEndpoint}/_allauth/browser/v1/auth/email/verify`, {
let verifyFetch = await event.fetch(`${serverEndpoint}/auth/browser/v1/auth/email/verify`, {
headers: {
Cookie: `csrftoken=${csrfToken}`,
'X-CSRFToken': csrfToken