Added Layout and UserProfile

This commit is contained in:
2025-11-10 21:19:38 +01:00
parent a547b2b882
commit d302261d07
12 changed files with 249 additions and 87 deletions

View File

@@ -32,6 +32,7 @@ def get_asset_content(filename):
def create_app(daisyui: Optional[bool] = True,
protect_routes: Optional[bool] = True,
mount_auth_app: Optional[bool] = False,
base_url: Optional[str] = None,
**kwargs) -> Any:
"""
Creates and configures a FastHtml application with optional support for daisyUI themes and
@@ -39,16 +40,11 @@ def create_app(daisyui: Optional[bool] = True,
:param daisyui: Flag to enable or disable inclusion of daisyUI-related assets for styling.
Defaults to False.
:type daisyui: Optional[bool]
:param protect_routes: Flag to enable or disable routes protection based on authentication.
Defaults to True.
:type protect_routes: Optional[bool]
:param mount_auth_app: Flag to enable or disable mounting of authentication routes.
Defaults to False.
:type mount_auth_app: Optional[bool]
:param base_url: Url to use for the application (used by the auth APIs)
:param kwargs: Arbitrary keyword arguments forwarded to the application initialization logic.
:return: A tuple containing the FastHtml application instance and the associated router.
@@ -70,11 +66,12 @@ def create_app(daisyui: Optional[bool] = True,
app, rt = fasthtml.fastapp.fast_app(before=beforeware, hdrs=tuple(hdrs), **kwargs)
# remove the global static files routes
static_route_exts_get = app.routes.pop(0)
original_routes = app.routes[:]
app.routes.clear()
# Serve assets
@app.get("/myfasthtml/{filename:path}.{ext:static}")
def serve_asset(filename: str, ext: str):
def serve_assets(filename: str, ext: str):
path = filename + "." + ext
try:
content = get_asset_content(path)
@@ -89,13 +86,14 @@ def create_app(daisyui: Optional[bool] = True,
return Response(f"Asset not found: {path}", status_code=404)
# and put it back after the myfasthtml static files routes
app.routes.append(static_route_exts_get)
for r in original_routes:
app.routes.append(r)
# route the commands and the bindings
app.mount("/myfasthtml", utils_app)
if mount_auth_app:
# Setup authentication routes
setup_auth_routes(app, rt)
setup_auth_routes(app, rt, base_url=base_url)
return app, rt