Skip to content

Commit 2723036

Browse files
authored
Add Permissions-Policy header settings and corresponding tests (#14156)
1 parent cab92de commit 2723036

3 files changed

Lines changed: 32 additions & 0 deletions

File tree

dojo/settings/settings.dist.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,25 @@ def generate_url(scheme, double_slashes, user, password, host, port, path, param
817817
SESSION_EXPIRE_AT_BROWSER_CLOSE = env("DD_SESSION_EXPIRE_AT_BROWSER_CLOSE")
818818
SESSION_EXPIRE_WARNING = env("DD_SESSION_EXPIRE_WARNING")
819819
SESSION_COOKIE_AGE = env("DD_SESSION_COOKIE_AGE")
820+
# Permission-Policy header settings
821+
# See docs at https://pypi.org/project/django-permissions-policy/
822+
PERMISSIONS_POLICY = {
823+
"accelerometer": [],
824+
"ambient-light-sensor": [],
825+
"autoplay": [],
826+
"camera": [],
827+
"display-capture": [],
828+
"encrypted-media": [],
829+
"fullscreen": [],
830+
"geolocation": [],
831+
"gyroscope": [],
832+
"interest-cohort": [],
833+
"magnetometer": [],
834+
"microphone": [],
835+
"midi": [],
836+
"payment": [],
837+
"usb": [],
838+
}
820839

821840
# ------------------------------------------------------------------------------
822841
# DEFECTDOJO SPECIFIC
@@ -966,6 +985,7 @@ def generate_url(scheme, double_slashes, user, password, host, port, path, param
966985
"django.contrib.sessions.middleware.SessionMiddleware",
967986
"django.middleware.csrf.CsrfViewMiddleware",
968987
"django.middleware.security.SecurityMiddleware",
988+
"django_permissions_policy.PermissionsPolicyMiddleware",
969989
"django.contrib.auth.middleware.AuthenticationMiddleware",
970990
"django.contrib.messages.middleware.MessageMiddleware",
971991
"django.middleware.clickjacking.XFrameOptionsMiddleware",

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ django-crispy-forms==2.5
1616
django_extensions==4.1
1717
django-slack==5.19.0
1818
django-watson==1.6.3
19+
django-permissions-policy==4.28.0
1920
django-prometheus==2.4.1
2021
Django==5.2.9
2122
django-single-session==0.2.0
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from django.test import TestCase
2+
from django.urls import reverse
3+
4+
5+
class EmptyPermissionsPolicyTests(TestCase):
6+
def test_empty_policy_still_sets_header(self):
7+
response = self.client.get(reverse("login"))
8+
self.assertIn("Permissions-Policy", response.headers)
9+
# Header may be empty or minimal, but must exist
10+
self.assertIsNotNone(response["Permissions-Policy"])
11+
self.assertGreaterEqual(len(response["Permissions-Policy"]), 2)

0 commit comments

Comments
 (0)