. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\OAuthServer\Record; use Espo\Core\Acl; use Espo\Core\Exceptions\Conflict; use Espo\Core\Exceptions\Forbidden; use Espo\ORM\EntityManager; use Espo\Tools\OAuthServer\Entities\AccessToken; use Espo\Tools\OAuthServer\Entities\AuthorizationCode; use Espo\Tools\OAuthServer\Entities\RefreshToken; class TokenService { public function __construct( private Acl $acl, private EntityManager $entityManager, ) {} /** * @throws Forbidden * @throws Conflict */ public function revoke(AccessToken|RefreshToken|AuthorizationCode $token): void { if (!$this->acl->checkEntityEdit($token)) { throw new Forbidden("No edit access."); } if (!$token->isActive()) { throw new Conflict("Token is not active."); } $token->setRevoked(); $this->entityManager->saveEntity($token); } }