public function authenticate() { $container = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer'); $session = \Innomatic\Desktop\Controller\DesktopFrontController::instance('\\Innomatic\\Desktop\\Controller\\DesktopFrontController')->session; if (isset(\Innomatic\Wui\Wui::instance('\\Innomatic\\Wui\\Wui')->parameters['wui']['login'])) { $loginDispatcher = new \Innomatic\Wui\Dispatch\WuiDispatcher('login'); $loginDispatcher->addEvent('logout', '\\Innomatic\\Desktop\\Auth\\tenant_login_logout'); $loginDispatcher->addEvent('login', '\\Innomatic\\Desktop\\Auth\\tenant_login_login'); $loginDispatcher->Dispatch(); } if ($container->getConfig()->value('SecurityOnlyHttpsDomainAccessAllowed') == '1') { if (!isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] != 'on') { self::doAuth(true, 'only_https_allowed'); } } // Check if the session is valid if (!\Innomatic\Desktop\Controller\DesktopFrontController::instance('\\Innomatic\\Desktop\\Controller\\DesktopFrontController')->session->isValid('INNOMATIC_AUTH_USER')) { self::doAuth(); } $domainsquery = $container->getDataAccess()->execute('SELECT id FROM domains WHERE domainid=' . $container->getDataAccess()->formatText(\Innomatic\Domain\User\User::extractDomainID($session->get('INNOMATIC_AUTH_USER')))); if ($domainsquery->getNumberRows() == 0) { self::doAuth(); } else { $domainsquery->free(); $container->startDomain(\Innomatic\Domain\User\User::extractDomainID($session->get('INNOMATIC_AUTH_USER')), $session->get('INNOMATIC_AUTH_USER')); } // Check if the user still exists $user = new \Domain\User\User($container->getCurrentDomain()->domaindata['id'], \Domain\User\User::getUserIdByUsername($session->get('INNOMATIC_AUTH_USER'))); if (!$user->exists()) { // User no more exists; remove the session key and redo auth \Innomatic\Desktop\Controller\DesktopFrontController::instance('\\Innomatic\\Desktop\\Controller\\DesktopFrontController')->session->remove('INNOMATIC_AUTH_USER'); $container->stopDomain(); self::doAuth(); } // Check if the user is enabled if (!$user->isEnabled()) { $container->stopDomain(); self::doAuth(true, 'userdisabled'); } if ($session->isValid('domain_login_attempts')) { $session->remove('domain_login_attempts'); } // Check if the domain is enabled // if ($container->getCurrentDomain()->domaindata['domainactive'] != $container->getDataAccess()->fmttrue) { self::doAuth(true, 'domaindisabled'); } return true; }