. * * 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 $ipAddress = null; private bool $createSecret = false; private ?int $passwordVersion = null; private function __construct() {} /** * A user ID. */ public function getUserId(): string { return $this->userId; } /** * A portal ID. */ public function getPortalId(): ?string { return $this->portalId; } /** * An ID address. */ public function getIpAddress(): ?string { return $this->ipAddress; } /** * A password version. * * @since 10.0.0 */ public function getPasswordVersion(): ?int { return $this->passwordVersion; } /** * To create a secret. */ public function toCreateSecret(): bool { return $this->createSecret; } /** * @param array{ * userId: string, * portalId?: ?string, * passwordVersion?: ?int, * 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->ipAddress = $data['ipAddress'] ?? null; $obj->createSecret = $data['createSecret'] ?? false; $obj->passwordVersion = $data['passwordVersion'] ?? null; return $obj; } }