hm_ai_qc_report_tool/modules/campaigns
nickviljoen 84326352b2 Phase 1: replace local username/password auth with Azure AD SSO
Lifted JWT-cookie auth pattern from the AI QC sibling project:
  core/auth/middleware.py validates Azure AD JWTs and stores them in
  an httpOnly cookie (hm_aiqc_auth_token). Tenant membership is
  enforced by JWTValidator's tid check, which is sufficient for the
  tenant-wide access policy chosen for this project.

  templates/login.html now drives an MSAL.js popup that POSTs the
  ID token to /auth/login. base.html exposes Azure config to all
  pages so the logout button can also clear the MSAL session.

  app.py's @before_request now checks the JWT cookie and exposes
  g.user; modules read user identity via core.auth.current_user_email
  so usage logs and created_by columns now record the signed-in
  user's email rather than a session value.

  Legacy username/password code removed: top-level auth_middleware.py,
  jwt_validator.py, deploy/generate_password.py.
2026-05-09 13:59:29 +02:00
..
templates/campaigns Pricing refs: Excel support, structured lookup, deterministic price match, video price check 2026-04-23 10:52:39 +02:00
__init__.py Add campaign presentation management and global pricing reference 2026-03-26 16:12:22 +02:00
blueprint.py Add campaign presentation management and global pricing reference 2026-03-26 16:12:22 +02:00
pricing_parser.py Pricing refs: Excel support, structured lookup, deterministic price match, video price check 2026-04-23 10:52:39 +02:00
routes.py Phase 1: replace local username/password auth with Azure AD SSO 2026-05-09 13:59:29 +02:00
services.py Add Excel (.xlsx) support for campaign media plans / price sheets 2026-03-26 18:54:59 +02:00