* @return array
*/
public static function getImpliedPermissionsFor(string $permission): array {
+ if (in_array($permission[0], ['@', '*'], TRUE)) {
+ // Special permissions like '*always deny*' - see DynamicFKAuthorizationTest.
+ // Also '@afform - see AfformUsageTest.
+ return [];
+ }
$implied = Civi::cache('metadata')->get('implied_permissions', []);
if (isset($implied[$permission])) {
return $implied[$permission];
}
- $implied[$permission] = [];
- foreach (self::basicPermissions(FALSE, TRUE) as $key => $details) {
+ $implied[$permission] = ['all CiviCRM permissions and ACLs'];
+ foreach (self::getImpliedAdminPermissions() as $key => $details) {
if (in_array($permission, $details['implied_permissions'] ?? [], TRUE)) {
$implied[$permission][] = $key;
}
namespace Civi\API\Subscriber;
use Civi\API\Kernel;
+use Civi\API\Provider\StaticProvider;
use Symfony\Component\EventDispatcher\EventDispatcher;
/**
*/
public $kernel;
- protected function setUp() {
+ protected function setUp(): void {
parent::setUp();
\CRM_Core_DAO_AllCoreTables::init(TRUE);
\CRM_Core_DAO_AllCoreTables::registerEntityType('FakeFile', 'CRM_Fake_DAO_FakeFile', 'fake_file');
- $fileProvider = new \Civi\API\Provider\StaticProvider(
+ $fileProvider = new StaticProvider(
3,
'FakeFile',
['id', 'entity_table', 'entity_id'],
);
\CRM_Core_DAO_AllCoreTables::registerEntityType('Widget', 'CRM_Fake_DAO_Widget', 'fake_widget');
- $widgetProvider = new \Civi\API\Provider\StaticProvider(3, 'Widget',
+ $widgetProvider = new StaticProvider(3, 'Widget',
['id', 'title'],
[],
[
);
\CRM_Core_DAO_AllCoreTables::registerEntityType('Forbidden', 'CRM_Fake_DAO_Forbidden', 'fake_forbidden');
- $forbiddenProvider = new \Civi\API\Provider\StaticProvider(
+ $forbiddenProvider = new StaticProvider(
3,
'Forbidden',
['id', 'label'],
else null
end as entity_table,
case %1
- when " . self::FILE_WIDGET_ID . " then " . self::WIDGET_ID . "
- when " . self::FILE_FORBIDDEN_ID . " then " . self::FORBIDDEN_ID . "
+ when " . self::FILE_WIDGET_ID . ' then ' . self::WIDGET_ID . '
+ when ' . self::FILE_FORBIDDEN_ID . ' then ' . self::FORBIDDEN_ID . '
else null
end as entity_id
- ",
+ ',
// Get a list of custom fields (field_name,table_name,extends)
- "select",
+ 'select',
['fake_widget', 'fake_forbidden']
));
}
- protected function tearDown() {
+ protected function tearDown(): void {
parent::tearDown();
\CRM_Core_DAO_AllCoreTables::init(TRUE);
}
}
/**
- * @param $entity
- * @param $action
+ * @param string $entity
+ * @param int $action
* @param array $params
- * @param $expectedError
+ * @param array $expectedError
* @dataProvider badDataProvider
*/
public function testBad($entity, $action, $params, $expectedError) {