. * * 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\Logins; use Espo\Core\Api\Request; use Espo\Core\Authentication\Helper\UserFinder; use Espo\Core\Authentication\Login; use Espo\Core\Authentication\Login\Data; use Espo\Core\Authentication\Result; use Espo\Core\Authentication\Result\FailReason; class ApiKey implements Login { public const NAME = 'ApiKey'; private UserFinder $userFinder; public function __construct(UserFinder $userFinder) { $this->userFinder = $userFinder; } public function login(Data $data, Request $request): Result { $apiKey = $request->getHeader('X-Api-Key'); if (!$apiKey) { return Result::fail(FailReason::WRONG_CREDENTIALS); } $user = $this->userFinder->findApiApiKey($apiKey); if (!$user) { return Result::fail(FailReason::WRONG_CREDENTIALS); } return Result::success($user); } }