Files

57 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace TYPO3\CMS\Backend\Security\SudoMode\Access;
/**
* Base interface for a subject that shall be handled during the sudo mode process.
* A "subject" can be a resource, a route, a database record, anything.
* Specific implementations of this interface provide the details and behavior.
*/
interface AccessSubjectInterface extends \JsonSerializable
{
/**
* Reconstitutes a subject object from its serialized representation.
*/
public static function fromArray(array $data): static;
/**
* Provides a unique string identifier of the subject.
*/
public function getIdentity(): string;
/**
* Provides the actual subject name (e.g. a route, an aspect, a resource, ...)
*/
public function getSubject(): string;
/**
* If given, grants access to same-group sudo mode subjects.
*/
public function getGroup(): ?string;
/**
* Provides a distinct lifetime type, e.g. XS, S, M, L, XL.
*/
public function getLifetime(): AccessLifetime;
/**
* If true, the subject may only be used once and requires a new grant for the same task.
*/
public function isOnce(): bool;
}