public function login()
{
if (\Ip\Internal\Admin\Backend::userId()) {
//user has already been logged in
\Ip\Internal\Content\Service::setManagementMode(1);
return new \Ip\Response\Redirect(ipHomeUrl());
}
// If none of the administrator exist, we create default one and log in user
$administrators = \Ip\Internal\Administrators\Model::getAll();
if (empty($administrators)) {
$adminUsername = 'admin';
$adminEmail = ipGetOptionLang('Config.websiteEmail');
$adminPassword = Model::randString(8);
$adminId = \Ip\Internal\Administrators\Service::add($adminUsername, $adminEmail, $adminPassword);
\Ip\Internal\AdminPermissionsModel::addPermission('Super admin', $adminId);
// Set variable to know that user is autogenerated
ipStorage()->set('Ip', 'adminIsAutogenerated', $adminPassword);
// Logging in new admin
$model = Model::instance();
if ($model->login($adminUsername, $adminPassword)) {
\Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminIsAutogenerated'));
$redirectUrl = ipHomeUrl();
return new \Ip\Response\Redirect($redirectUrl);
} else {
\Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminIsAutogeneratedFailed'));
// todo: handle errors
// $errors = $model->getErrors();
}
}
$content = ipView('view/login.php', array('loginForm' => FormHelper::getLoginForm()));
ipAddJs('Ip/Internal/Admin/assets/login.js');
$response = ipResponse();
$response->setLayout('Ip/Internal/Admin/view/loginLayout.php');
$response->setLayoutVariable('content', $content);
ipAddJs('assets/languageSelect.js');
$response->setLayoutVariable('languageSelectForm', FormHelper::getLanguageSelectForm());
return $response;
}