diff --git a/app/api/v1/admin/__init__.py b/app/api/v1/admin/__init__.py index 2d261c8a..13459252 100644 --- a/app/api/v1/admin/__init__.py +++ b/app/api/v1/admin/__init__.py @@ -28,8 +28,10 @@ from . import ( audit, auth, code_quality, + companies, content_pages, dashboard, + logs, marketplace, monitoring, notifications, @@ -53,9 +55,12 @@ router.include_router(auth.router, tags=["admin-auth"]) # ============================================================================ -# Vendor Management +# Company & Vendor Management # ============================================================================ +# Include company management endpoints +router.include_router(companies.router, tags=["admin-companies"]) + # Include vendor management endpoints router.include_router(vendors.router, tags=["admin-vendors"]) @@ -111,6 +116,9 @@ router.include_router(settings.router, tags=["admin-settings"]) # Include notifications and alerts endpoints router.include_router(notifications.router, tags=["admin-notifications"]) +# Include log management endpoints +router.include_router(logs.router, tags=["admin-logs"]) + # ============================================================================ # Code Quality & Architecture diff --git a/app/routes/admin_pages.py b/app/routes/admin_pages.py index 45169c9c..31368aac 100644 --- a/app/routes/admin_pages.py +++ b/app/routes/admin_pages.py @@ -17,6 +17,7 @@ Routes: - GET /vendors/{vendor_code} → Vendor details (auth required) - GET /vendors/{vendor_code}/edit → Edit vendor form (auth required) - GET /vendors/{vendor_code}/domains → Vendor domains management (auth required) +- GET /vendor-themes → Vendor themes selection page (auth required) - GET /vendors/{vendor_code}/theme → Vendor theme editor (auth required) - GET /users → User management page (auth required) - GET /imports → Import history page (auth required) @@ -109,6 +110,48 @@ async def admin_dashboard_page( ) +# ============================================================================ +# COMPANY MANAGEMENT ROUTES +# ============================================================================ + + +@router.get("/companies", response_class=HTMLResponse, include_in_schema=False) +async def admin_companies_list_page( + request: Request, + current_user: User = Depends(get_current_admin_from_cookie_or_header), + db: Session = Depends(get_db), +): + """ + Render companies management page. + Shows list of all companies with stats. + """ + return templates.TemplateResponse( + "admin/companies.html", + { + "request": request, + "user": current_user, + }, + ) + + +@router.get("/companies/create", response_class=HTMLResponse, include_in_schema=False) +async def admin_company_create_page( + request: Request, + current_user: User = Depends(get_current_admin_from_cookie_or_header), + db: Session = Depends(get_db), +): + """ + Render company creation form. + """ + return templates.TemplateResponse( + "admin/company-create.html", + { + "request": request, + "user": current_user, + }, + ) + + # ============================================================================ # VENDOR MANAGEMENT ROUTES # ============================================================================ @@ -231,6 +274,25 @@ async def admin_vendor_domains_page( # ============================================================================ +@router.get("/vendor-themes", response_class=HTMLResponse, include_in_schema=False) +async def admin_vendor_themes_page( + request: Request, + current_user: User = Depends(get_current_admin_from_cookie_or_header), + db: Session = Depends(get_db), +): + """ + Render vendor themes selection page. + Allows admins to select a vendor to customize their theme. + """ + return templates.TemplateResponse( + "admin/vendor-themes.html", + { + "request": request, + "user": current_user, + }, + ) + + @router.get( "/vendors/{vendor_code}/theme", response_class=HTMLResponse, include_in_schema=False ) @@ -302,6 +364,25 @@ async def admin_imports_page( ) +@router.get("/marketplace", response_class=HTMLResponse, include_in_schema=False) +async def admin_marketplace_page( + request: Request, + current_user: User = Depends(get_current_admin_from_cookie_or_header), + db: Session = Depends(get_db), +): + """ + Render marketplace import management page. + Allows admins to import products for any vendor and monitor all imports. + """ + return templates.TemplateResponse( + "admin/marketplace.html", + { + "request": request, + "user": current_user, + }, + ) + + # ============================================================================ # SETTINGS ROUTES # ============================================================================ @@ -326,6 +407,25 @@ async def admin_settings_page( ) +@router.get("/logs", response_class=HTMLResponse, include_in_schema=False) +async def admin_logs_page( + request: Request, + current_user: User = Depends(get_current_admin_from_cookie_or_header), + db: Session = Depends(get_db), +): + """ + Render admin logs viewer page. + View database and file logs with filtering and search. + """ + return templates.TemplateResponse( + "admin/logs.html", + { + "request": request, + "user": current_user, + }, + ) + + # ============================================================================ # CONTENT MANAGEMENT SYSTEM (CMS) ROUTES # ============================================================================ diff --git a/app/templates/admin/companies.html b/app/templates/admin/companies.html new file mode 100644 index 00000000..9ce0f956 --- /dev/null +++ b/app/templates/admin/companies.html @@ -0,0 +1,272 @@ +{# app/templates/admin/companies.html #} +{% extends "admin/base.html" %} + +{% block title %}Companies{% endblock %} + +{% block alpine_data %}adminCompanies(){% endblock %} + +{% block content %} + +
Loading companies...
+Error loading companies
+ ++ Total Companies +
++ 0 +
++ Verified +
++ 0 +
++ Active +
++ 0 +
++ Total Vendors +
++ 0 +
+| Company | +Owner | +Vendors | +Status | +Created | +Actions | +
|---|---|---|---|---|---|
|
+
+
+
+ No companies found +Create your first company to get started + |
+ |||||
|
+
+
+
+
+
+
+
+ |
+
+
+ + + | + + ++ + 0 + + | + + +
+
+
+
+
+
+
+ Verified
+
+
+ |
+
+
+ + + + |
+
+
+
+
+
+
+
+ |
+
+ Create a company account with an owner user +
+Company Created Successfully!
+Owner Login Credentials (Save these!):
+⚠️ The password will only be shown once. Please save it now!
+Error Creating Company
+ ++ Platform Monitoring +
++ Platform Monitoring +
+