diff --git a/src/Socialbox/Managers/SessionManager.php b/src/Socialbox/Managers/SessionManager.php index 3cd7d4d..7f2870e 100644 --- a/src/Socialbox/Managers/SessionManager.php +++ b/src/Socialbox/Managers/SessionManager.php @@ -54,13 +54,14 @@ // TODO: Update this to support `host` peers if($peer->isExternal()) { + Logger::getLogger()->debug('Creating a session for an external peer'); $flags[] = SessionFlags::AUTHENTICATION_REQUIRED; $flags[] = SessionFlags::VER_AUTHENTICATION; } else if($peer->isEnabled()) { + Logger::getLogger()->debug('Creating a session for an enabled peer'); $flags[] = SessionFlags::AUTHENTICATION_REQUIRED; - if(PasswordManager::usesPassword($peer->getUuid())) { $flags[] = SessionFlags::VER_PASSWORD; @@ -73,6 +74,7 @@ } else { + Logger::getLogger()->debug('Creating a session for a disabled peer'); $flags[] = SessionFlags::REGISTRATION_REQUIRED; if(Configuration::getRegistrationConfiguration()->isDisplayNameRequired()) diff --git a/src/Socialbox/Objects/Database/PeerDatabaseRecord.php b/src/Socialbox/Objects/Database/PeerDatabaseRecord.php index 97c61fa..f10acd8 100644 --- a/src/Socialbox/Objects/Database/PeerDatabaseRecord.php +++ b/src/Socialbox/Objects/Database/PeerDatabaseRecord.php @@ -6,6 +6,7 @@ use InvalidArgumentException; use Socialbox\Classes\Configuration; use Socialbox\Enums\Flags\PeerFlags; + use Socialbox\Enums\ReservedUsernames; use Socialbox\Interfaces\SerializableInterface; use Socialbox\Objects\Standard\InformationFieldState; use Socialbox\Objects\Standard\Peer; @@ -32,7 +33,15 @@ { $this->uuid = $data['uuid']; $this->username = $data['username']; - $this->server = $data['server']; + + if($data['server'] === ReservedUsernames::HOST->value) + { + $this->server = Configuration::getInstanceConfiguration()->getDomain(); + } + else + { + $this->server = $data['server']; + } if($data['flags']) { @@ -55,7 +64,14 @@ } elseif(is_string($data['created'])) { - $this->created = new DateTime($data['created']); + try + { + $this->created = new DateTime($data['created']); + } + catch (\DateMalformedStringException $e) + { + throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); + } } else { @@ -72,7 +88,14 @@ } elseif(is_string($data['updated'])) { - $this->updated = new DateTime($data['updated']); + try + { + $this->updated = new DateTime($data['updated']); + } + catch (\DateMalformedStringException $e) + { + throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); + } } else { @@ -192,7 +215,7 @@ */ public function isExternal(): bool { - return $this->username === 'host' || $this->server !== Configuration::getInstanceConfiguration()->getDomain(); + return $this->username === ReservedUsernames::HOST->value || $this->server !== Configuration::getInstanceConfiguration()->getDomain(); } /** diff --git a/src/Socialbox/Socialbox.php b/src/Socialbox/Socialbox.php index ada8e05..23772ee 100644 --- a/src/Socialbox/Socialbox.php +++ b/src/Socialbox/Socialbox.php @@ -251,15 +251,11 @@ // If-clause for handling the host peer, host peers are always enabled unless the fist clause is true // in which case the host was blocked by this server. - if($clientRequest->getIdentifyAs()->getUsername() === ReservedUsernames::HOST->value) + if($clientRequest->getIdentifyAs()->getUsername() === ReservedUsernames::HOST->value && $registeredPeer === null) { - // If the host is not registered, register it - if($registeredPeer === null) - { - $peerUuid = RegisteredPeerManager::createPeer(PeerAddress::fromAddress($clientRequest->getHeader(StandardHeaders::IDENTIFY_AS))); - RegisteredPeerManager::enablePeer($peerUuid); - $registeredPeer = RegisteredPeerManager::getPeer($peerUuid); - } + $peerUuid = RegisteredPeerManager::createPeer($clientRequest->getIdentifyAs()); + RegisteredPeerManager::enablePeer($peerUuid); + $registeredPeer = RegisteredPeerManager::getPeer($peerUuid); } if($registeredPeer === null) @@ -272,7 +268,7 @@ } // Register the peer if it is not already registered - $peerUuid = RegisteredPeerManager::createPeer(PeerAddress::fromAddress($clientRequest->getHeader(StandardHeaders::IDENTIFY_AS))); + $peerUuid = RegisteredPeerManager::createPeer($clientRequest->getIdentifyAs()); // Retrieve the peer object $registeredPeer = RegisteredPeerManager::getPeer($peerUuid); }