|
|
|
<?php
|
|
|
|
|
|
|
|
namespace PhpOffice\PhpSpreadsheet\Document;
|
|
|
|
|
|
|
|
use PhpOffice\PhpSpreadsheet\Shared\PasswordHasher;
|
|
|
|
|
|
|
|
class Security
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* LockRevision.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
|
|
|
private $lockRevision = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* LockStructure.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
|
|
|
private $lockStructure = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* LockWindows.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
|
|
|
private $lockWindows = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* RevisionsPassword.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
private $revisionsPassword = '';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WorkbookPassword.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
private $workbookPassword = '';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new Document Security instance.
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Is some sort of document security enabled?
|
|
|
|
*/
|
|
|
|
public function isSecurityEnabled(): bool
|
|
|
|
{
|
|
|
|
return $this->lockRevision ||
|
|
|
|
$this->lockStructure ||
|
|
|
|
$this->lockWindows;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getLockRevision(): bool
|
|
|
|
{
|
|
|
|
return $this->lockRevision;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setLockRevision(?bool $locked): self
|
|
|
|
{
|
|
|
|
if ($locked !== null) {
|
|
|
|
$this->lockRevision = $locked;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getLockStructure(): bool
|
|
|
|
{
|
|
|
|
return $this->lockStructure;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setLockStructure(?bool $locked): self
|
|
|
|
{
|
|
|
|
if ($locked !== null) {
|
|
|
|
$this->lockStructure = $locked;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getLockWindows(): bool
|
|
|
|
{
|
|
|
|
return $this->lockWindows;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setLockWindows(?bool $locked): self
|
|
|
|
{
|
|
|
|
if ($locked !== null) {
|
|
|
|
$this->lockWindows = $locked;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getRevisionsPassword(): string
|
|
|
|
{
|
|
|
|
return $this->revisionsPassword;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set RevisionsPassword.
|
|
|
|
*
|
|
|
|
* @param string $password
|
|
|
|
* @param bool $alreadyHashed If the password has already been hashed, set this to true
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function setRevisionsPassword(?string $password, bool $alreadyHashed = false)
|
|
|
|
{
|
|
|
|
if ($password !== null) {
|
|
|
|
if (!$alreadyHashed) {
|
|
|
|
$password = PasswordHasher::hashPassword($password);
|
|
|
|
}
|
|
|
|
$this->revisionsPassword = $password;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getWorkbookPassword(): string
|
|
|
|
{
|
|
|
|
return $this->workbookPassword;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set WorkbookPassword.
|
|
|
|
*
|
|
|
|
* @param string $password
|
|
|
|
* @param bool $alreadyHashed If the password has already been hashed, set this to true
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function setWorkbookPassword(?string $password, bool $alreadyHashed = false)
|
|
|
|
{
|
|
|
|
if ($password !== null) {
|
|
|
|
if (!$alreadyHashed) {
|
|
|
|
$password = PasswordHasher::hashPassword($password);
|
|
|
|
}
|
|
|
|
$this->workbookPassword = $password;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
}
|