diff --git a/phpBB/includes/request/interface.php b/phpBB/includes/request/interface.php index 983a05d6c4..c0b8768b24 100644 --- a/phpBB/includes/request/interface.php +++ b/phpBB/includes/request/interface.php @@ -121,6 +121,13 @@ interface phpbb_request_interface */ public function is_ajax(); + /** + * Checks if the current request is happening over HTTPS. + * + * @return bool True if the request is secure. + */ + public function is_secure(); + /** * Returns all variable names for a given super global * diff --git a/phpBB/includes/request/request.php b/phpBB/includes/request/request.php index 466397480b..8659ee8998 100644 --- a/phpBB/includes/request/request.php +++ b/phpBB/includes/request/request.php @@ -326,6 +326,16 @@ class phpbb_request implements phpbb_request_interface return $this->header('X-Requested-With') == 'XMLHttpRequest'; } + /** + * Checks if the current request is happening over HTTPS. + * + * @return bool True if the request is secure. + */ + public function is_secure() + { + return $this->server('HTTPS') == 'on'; + } + /** * Returns all variable names for a given super global * diff --git a/tests/mock/request.php b/tests/mock/request.php index 86b8695e32..18aa2e724c 100644 --- a/tests/mock/request.php +++ b/tests/mock/request.php @@ -57,6 +57,11 @@ class phpbb_mock_request implements phpbb_request_interface return false; } + public function is_secure() + { + return false; + } + public function variable_names($super_global = phpbb_request_interface::REQUEST) { return array_keys($this->data[$super_global]); diff --git a/tests/request/request_test.php b/tests/request/request_test.php index 24c9ae5112..2e56841601 100644 --- a/tests/request/request_test.php +++ b/tests/request/request_test.php @@ -117,6 +117,17 @@ class phpbb_request_test extends phpbb_test_case $this->assertTrue($this->request->is_ajax()); } + public function test_is_secure() + { + $this->assertFalse($this->request->is_secure()); + + $this->request->enable_super_globals(); + $_SERVER['HTTPS'] = 'on'; + $this->request = new phpbb_request($this->type_cast_helper); + + $this->assertTrue($this->request->is_secure()); + } + public function test_variable_names() { $expected = array('test', 'unset');