. * * 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\Core\Authentication\AuthToken; use RuntimeException; use SensitiveParameter; /** * An auth token data. Used for auth token creation. * * Immutable. */ class Data { private string $userId; private ?string $portalId = null; private ?string $hash = null; private ?string $ipAddress = null; private bool $createSecret = false; private function __construct() {} /** * A user ID. */ public function getUserId(): string { return $this->userId; } /** * A portal ID. */ public function getPortalId(): ?string { return $this->portalId; } /** * A hash. */ public function getHash(): ?string { return $this->hash; } /** * An ID address. */ public function getIpAddress(): ?string { return $this->ipAddress; } /** * To create a secret. */ public function toCreateSecret(): bool { return $this->createSecret; } /** * @param array{ * userId: string, * portalId?: ?string, * hash?: ?string, * ipAddress?: ?string, * createSecret?: ?bool, * } $data */ public static function create(#[SensitiveParameter] array $data): self { $obj = new self(); $userId = $data['userId'] ?? null; if (!$userId) { throw new RuntimeException("No user ID."); } $obj->userId = $userId; $obj->portalId = $data['portalId'] ?? null; $obj->hash = $data['hash'] ?? null; $obj->ipAddress = $data['ipAddress'] ?? null; $obj->createSecret = $data['createSecret'] ?? false; return $obj; } }