Skip to content

Commit

Permalink
Fix for frontend subroutes not being served
Browse files Browse the repository at this point in the history
[backend] created constant for frontend path
[backend] add new constant to routes path logic
[backend] adjusted fallback routes for frontend
[backend] added fallback routes for api/v1 and user_images
[frontend] fixed avatar component based on new route logic for user_images
  • Loading branch information
joaovitoriasilva committed Jan 13, 2025
1 parent 8c5379a commit ad8a4ae
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 55 deletions.
1 change: 1 addition & 0 deletions backend/app/core/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
LICENSE_IDENTIFIER = "AGPL-3.0-or-later"
LICENSE_URL = "https://spdx.org/licenses/AGPL-3.0-or-later.html"
ROOT_PATH = "/api/v1"
FRONTEND_DIR = "/app/frontend/dist"


def check_required_env_vars():
Expand Down
68 changes: 21 additions & 47 deletions backend/app/core/router.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from fastapi import APIRouter
from fastapi import APIRouter, HTTPException, status

import core.config as core_config
import core.utils as core_utils
Expand All @@ -7,46 +7,6 @@
router = APIRouter()


@router.get("/login", include_in_schema=False)
async def read_index_login():
return core_utils.return_frontend_index()


@router.get("/activity/{activity_id}", include_in_schema=False)
async def read_index_activity():
return core_utils.return_frontend_index()


@router.get("/gears", include_in_schema=False)
async def read_index_gears():
return core_utils.return_frontend_index()


@router.get("/gear/{gear_id}", include_in_schema=False)
async def read_index_gear():
return core_utils.return_frontend_index()


@router.get("/health", include_in_schema=False)
async def read_index_health():
return core_utils.return_frontend_index()


@router.get("/user/{user_id}", include_in_schema=False)
async def read_index_user():
return core_utils.return_frontend_index()


@router.get("/settings", include_in_schema=False)
async def read_index_settings():
return core_utils.return_frontend_index()


@router.get("/strava/callback", include_in_schema=False)
async def read_index_strava_callback():
return core_utils.return_frontend_index()


@router.get(
core_config.ROOT_PATH + "/about",
)
Expand All @@ -64,9 +24,23 @@ async def about():

@router.get("/api/v1/{catchall:path}", include_in_schema=False)
def api_not_found():
return core_utils.return_frontend_index()


@router.get("/{catchall:path}", include_in_schema=False)
def api_not_found():
return core_utils.return_frontend_index()
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="API endpoint not found",
)


@router.get("/user_images/{user_img}", include_in_schema=False)
def user_img_return(
user_img: str,
):
return core_utils.return_user_img_path(user_img)


@router.get("/{path:path}", include_in_schema=False)
def frontend_not_found(
path: str,
):
if "." in path.split("/")[-1]:
return core_utils.return_frontend_index(path)
return core_utils.return_frontend_index("index.html")
10 changes: 7 additions & 3 deletions backend/app/core/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from fastapi.responses import RedirectResponse
from fastapi.responses import FileResponse

def return_frontend_index():
return RedirectResponse(url="/index.html")
def return_frontend_index(path: str):
return FileResponse("/app/frontend/dist/" + path)


def return_user_img_path(user_img: str):
return FileResponse("/app/backend/user_images/" + user_img)
6 changes: 2 additions & 4 deletions backend/app/main.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import os

from fastapi import FastAPI, HTTPException
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from fastapi import Request

from alembic.config import Config
from alembic import command
Expand Down Expand Up @@ -99,7 +97,7 @@ def create_app() -> FastAPI:
# Add a route to serve the user images
app.mount("/user_images", StaticFiles(directory="user_images"), name="user_images")
app.mount(
"/", StaticFiles(directory="/app/frontend/dist", html=True), name="frontend"
"/", StaticFiles(directory=core_config.FRONTEND_DIR, html=True), name="frontend"
)

return app
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/src/components/Users/UserAvatarComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default {
emits: ['userDeleted'],
setup(props) {
const altText = ref('User Avatar');
const userPhotoUrl = ref(`${import.meta.env.VITE_ENDURAIN_HOST}/api/v1/${props.user.photo_path}`);
const userPhotoUrl = ref(`${import.meta.env.VITE_ENDURAIN_HOST}/${props.user.photo_path}`);
const alignTopValue = ref(props.alignTop);
return {
Expand Down

0 comments on commit ad8a4ae

Please sign in to comment.