blob: 36471c54c23c29766a26c7eb2ed689f42e8b8105 [file] [log] [blame]
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +01001<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Twig\Sandbox;
13
14/**
15 * Interface that all security policy classes must implements.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19interface SecurityPolicyInterface
20{
21 /**
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010022 * @param string[] $tags
23 * @param string[] $filters
24 * @param string[] $functions
25 *
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +010026 * @throws SecurityError
27 */
28 public function checkSecurity($tags, $filters, $functions): void;
29
30 /**
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010031 * @param object $obj
32 * @param string $method
33 *
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +010034 * @throws SecurityNotAllowedMethodError
35 */
36 public function checkMethodAllowed($obj, $method): void;
37
38 /**
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010039 * @param object $obj
40 * @param string $property
41 *
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +010042 * @throws SecurityNotAllowedPropertyError
43 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010044 public function checkPropertyAllowed($obj, $property): void;
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +010045}