<?php
namespace MedBrief\MSR\Entity;
use DH\Auditor\Provider\Doctrine\Auditing\Annotation as Audit;
use Doctrine\ORM\Mapping as ORM;
use MedBrief\MSR\Repository\AccountAuthSettingsRepository;
use Ramsey\Uuid\UuidInterface;
/**
* AccountAuthSettings
*
* @ORM\Table(name="AccountAuthSettings", uniqueConstraints={@ORM\UniqueConstraint(name="tenant", columns={"tenantId"})})
*
* @ORM\Entity(repositoryClass=AccountAuthSettingsRepository::class)
*
* @Audit\Auditable
*
* @Audit\Security(view={"ROLE_ALLOWED_TO_AUDIT"})
*/
class AccountAuthSettings
{
/**
* @var Account|null
*
* @ORM\OneToOne(targetEntity="MedBrief\MSR\Entity\Account")
*
* @ORM\JoinColumns({
*
* @ORM\JoinColumn(name="account_id", referencedColumnName="id", unique=true)
* })
*/
private $account;
/**
* @var null|string
*
* @ORM\Column(name="defaultUserRole", type="string", nullable=true)
*/
private $defaultUserRole;
/**
* @var bool
*
* @ORM\Column(name="enabled", type="boolean", options={"default"=false})
*/
private $enabled = false;
/**
* @var bool
*
* @ORM\Column(name="enforced", type="boolean", options={"default"=false})
*/
private $enforced = false;
/**
* @var UuidInterface
*
* @ORM\Column(name="id", type="uuid")
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")
*/
private $id;
/**
* @var bool
*
* @ORM\Column(name="provisioningEnabled", type="boolean", options={"default"=false})
*/
private $provisioningEnabled = false;
/**
* Microsoft-specific. Determines which tenant is allowed access.
*
* @var string|null
*
* @ORM\Column(name="tenantId", type="string", nullable=true)
*/
private $tenantId;
/**
* @return bool
*/
public function isEnforced(): bool
{
return $this->enforced;
}
/**
* @param bool $enforced
*
* @return AccountAuthSettings
*/
public function setEnforced(bool $enforced): AccountAuthSettings
{
$this->enforced = $enforced;
return $this;
}
/**
* @return string[]
*/
public static function getDefaultUserRoles(): array
{
return [
'Super Administrator' => 'ROLE_ACCOUNT_ID_SUPERADMINISTRATOR',
'Administrator' => 'ROLE_ACCOUNT_ID_ADMINISTRATOR',
'Account Project Manager' => 'ROLE_ACCOUNT_ID_PROJECTMANAGER',
'User' => 'ROLE_ACCOUNT_ID_USER',
];
}
/**
* @return UuidInterface
*/
public function getId()
{
return $this->id;
}
/**
* @return bool
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* @param bool $enabled
*
* @return AccountAuthSettings
*/
public function setEnabled(bool $enabled): AccountAuthSettings
{
$this->enabled = $enabled;
return $this;
}
/**
* @return string|null
*/
public function getDefaultUserRole(): ?string
{
return $this->defaultUserRole;
}
/**
* @param string|null $defaultUserRole
*
* @return AccountAuthSettings
*/
public function setDefaultUserRole(?string $defaultUserRole): AccountAuthSettings
{
$this->defaultUserRole = $defaultUserRole;
return $this;
}
/**
* @return bool
*/
public function isProvisioningEnabled(): bool
{
return $this->provisioningEnabled;
}
/**
* @param bool $provisioningEnabled
*
* @return AccountAuthSettings
*/
public function setProvisioningEnabled(bool $provisioningEnabled): AccountAuthSettings
{
$this->provisioningEnabled = $provisioningEnabled;
return $this;
}
/**
* @return string|null
*/
public function getTenantId(): ?string
{
return $this->tenantId;
}
/**
* @param string|null $tenantId
*
* @return AccountAuthSettings
*/
public function setTenantId(?string $tenantId): AccountAuthSettings
{
$this->tenantId = $tenantId;
return $this;
}
/**
* @return Account|null
*/
public function getAccount(): ?Account
{
return $this->account;
}
/**
* @param Account|null $account
*
* @return AccountAuthSettings
*/
public function setAccount(?Account $account): AccountAuthSettings
{
$this->account = $account;
return $this;
}
/**
* Convenience method for more semantic calls
*
* @return bool
*/
public function allowsProvisioning(): bool
{
return $this->provisioningEnabled;
}
}