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;
 }