devsecops-radar 0.3.6__tar.gz → 0.3.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. {devsecops_radar-0.3.6/devsecops_radar.egg-info → devsecops_radar-0.3.7}/PKG-INFO +1 -1
  2. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/auth.py +5 -4
  3. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7/devsecops_radar.egg-info}/PKG-INFO +1 -1
  4. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/pyproject.toml +1 -1
  5. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/LICENSE +0 -0
  6. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/MANIFEST.in +0 -0
  7. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/README.md +0 -0
  8. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/__init__.py +0 -0
  9. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/cli/__init__.py +0 -0
  10. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/cli/scanner.py +0 -0
  11. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/__init__.py +0 -0
  12. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/analyzer.py +0 -0
  13. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/attack_simulation.py +0 -0
  14. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/database.py +0 -0
  15. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/models.py +0 -0
  16. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/parser.py +0 -0
  17. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/rag.py +0 -0
  18. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/remediation.py +0 -0
  19. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/reporting.py +0 -0
  20. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/rule_fusion.py +0 -0
  21. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/sbom.py +0 -0
  22. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/settings.py +0 -0
  23. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/core/valuation.py +0 -0
  24. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/plugins/__init__.py +0 -0
  25. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/adapter.py +0 -0
  26. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/base.py +0 -0
  27. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/gitleaks.py +0 -0
  28. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/poutine.py +0 -0
  29. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/semgrep.py +0 -0
  30. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/trivy.py +0 -0
  31. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/scanners/zizmor.py +0 -0
  32. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/__init__.py +0 -0
  33. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/app.py +0 -0
  34. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/attack_paths/__init__.py +0 -0
  35. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/attack_paths/routes.py +0 -0
  36. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/dashboard/__init__.py +0 -0
  37. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/dashboard/routes.py +0 -0
  38. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/sentry/routes.py +0 -0
  39. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/static/css/bootstrap.min.css +0 -0
  40. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/static/css/style.css +0 -0
  41. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/static/js/bootstrap.bundle.min.js +0 -0
  42. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/static/js/chart.umd.min.js +0 -0
  43. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/static/js/dashboard.js +0 -0
  44. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/summary/__init__.py +0 -0
  45. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/summary/routes.py +0 -0
  46. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/templates/index.html +0 -0
  47. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/topology/__init__.py +0 -0
  48. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar/web/topology/routes.py +0 -0
  49. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar.egg-info/SOURCES.txt +0 -0
  50. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar.egg-info/dependency_links.txt +0 -0
  51. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar.egg-info/entry_points.txt +0 -0
  52. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar.egg-info/requires.txt +0 -0
  53. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/devsecops_radar.egg-info/top_level.txt +0 -0
  54. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/setup.cfg +0 -0
  55. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_analyzer.py +0 -0
  56. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_api.py +0 -0
  57. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_cli.py +0 -0
  58. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_database.py +0 -0
  59. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_rule_fusion.py +0 -0
  60. {devsecops_radar-0.3.6 → devsecops_radar-0.3.7}/tests/test_scanners.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devsecops-radar
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: Unified CI/CD Security Dashboard — Pipeline Sentinel
5
5
  Author-email: Mehrdoost <70381337+Mehrdoost@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import jwt
2
3
  import datetime
3
4
  from functools import wraps
@@ -18,11 +19,11 @@ def verify_token(token: str) -> dict:
18
19
  def login_required(f):
19
20
  @wraps(f)
20
21
  def decorated(*args, **kwargs):
21
- # Only enforce authentication if the admin has configured an API key.
22
- if settings.PIPELINE_API_KEY != "disabled":
22
+ # Read directly from os.environ to support test patching
23
+ api_key = os.environ.get("PIPELINE_API_KEY", "disabled")
24
+ if api_key != "disabled":
23
25
  key = request.headers.get("X-API-Key")
24
- if key != settings.PIPELINE_API_KEY:
26
+ if key != api_key:
25
27
  return jsonify({"error": "API key required"}), 401
26
- # Without an API key, all requests are permitted (default for local use).
27
28
  return f(*args, **kwargs)
28
29
  return decorated
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devsecops-radar
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: Unified CI/CD Security Dashboard — Pipeline Sentinel
5
5
  Author-email: Mehrdoost <70381337+Mehrdoost@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devsecops-radar"
7
- version = "0.3.6"
7
+ version = "0.3.7"
8
8
  description = "Unified CI/CD Security Dashboard — Pipeline Sentinel"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes