_helper->layout->setLayout('layout');
$this->_urlHelper = $this->_helper->getHelper('url');
$this->_authService = new App_Service_Auth();
$this->_genericModel = new Application_Model_Generic();
$this->_restModel = new Application_Model_Rest();
$this->_configs = new App_Service_ConfigManager();
$this->_translate = Zend_Form::getDefaultTranslator();
$this->_ipManager = new App_Service_IpManager();
$this->_rsaCryptor = new App_Service_RsaCryptor();
$this->_VariabiliSito = new App_Service_VariabiliSito();
$this->_datiAziendali = new App_Service_JsonConfiguration('dati_aziendali');
$this->_parametriSito = new App_Service_JsonConfiguration("parametri_sito");
$this->_TITLE = "home";
$this->_DESCRIPTION = "";
$this->_KEYWORDS = "";
$this->_TITLE = $this->_parametriSito->get('base_title');
$this->_DESCRIPTION = "";
$this->_KEYWORDS = $this->_parametriSito->get('base_keywords');
$BASE_COOKIE_STRING = strtolower(Zend_Registry::get('ENVIROMENTS')->get('site_short_id')) . '_';
$this->_COOKIE_EXPIRE_TIME = time() + (86400 * 30);
$this->_COOKIE_SITE_CREDENTIALS = $BASE_COOKIE_STRING . "CREDENTIALS";
}
public function preDispatch()
{
$action = $this->getRequest()->getActionName();
if ($this->_configs->get('interrutore_sito') == 'off' && $action != 'login' && $action != 'authenticate' && $action != 'offline' && !$this->_ipManager->allowedIp()) {
$this->_helper->redirector('offline', 'index', 'default');
}
if (Zend_Registry::get('Zend_Locale') == 'it') {
$this->view->lang = 'it';
} else {
$this->view->lang = 'en';
}
$this->view->action = $action;
$this->view->controller = $this->getRequest()->getControllerName();
$this->view->enableTestSdk = $this->_ipManager->controllaAbilitazioneTestSdk();
}
public function postDispatch()
{
$this->view->title = $this->_TITLE;
$this->view->keywords = $this->_KEYWORDS;
$this->view->description = $this->_DESCRIPTION;
$this->view->menuitem = $this->_MENUITEM;
$this->view->pagename = $this->_PAGENAME;
$this->view->subtitle = $this->_SUBTITLE;
$this->view->parametriSito = $this->_parametriSito->getAllParams();
$this->view->datiAziendali = $this->_datiAziendali->getAllParams();
}
public function offlineAction()
{
$this->_DESCRIPTION .= "Il Sito è in manutenzuione";
if ($this->_configs->get('interrutore_sito') == 'off') {
$this->_helper->getHelper('layout')->disableLayout();
} else {
$this->_helper->redirector('index', 'index');
}
}
public function loginAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$this->view->eventLoader = 'login';
$this->view->formData = $this->recuperaCredenziali();
if (isset($this->_authService->getAuth()->getIdentity()->username))
$this->_helper->redirector('index', $this->_authService->getAuth()->getIdentity()->role);
}
public function authenticateAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$this->view->eventLoader = 'login';
$this->view->formData = $this->recuperaCredenziali();
if (!$this->getRequest()->isPost()) {
return $this->_helper->redirector('index');
}
$form = new Application_Form_Default_Index_Auth_Login();
if (!$form->isValid($this->getRequest()->getPost())) {
$this->view->error = 'I campi sono richiesti';
$this->render('login');
return false;
}
if (false === $this->_authService->authenticate($form->getValues())) {
$this->view->error = 'Le credenziali non sono valide!';
$this->render('login');
return false;
}
//memorizzo le credenziali se necessario
$data = $form->getValues();
if ($data['ricorda_password'] == 'on') {
try {
$data['password'] = $this->_rsaCryptor->cripta($data['password']);
setcookie($this->_COOKIE_SITE_CREDENTIALS, Zend_Json::encode($data), $this->_COOKIE_EXPIRE_TIME, "/");
} catch (Exception $e) {
}
} else {
setcookie($this->_COOKIE_SITE_CREDENTIALS, "", $this->_COOKIE_EXPIRE_TIME, "/");
}
//Accesso andato a buon fine
//Generazione del Token temporaneo per l'accesso
$user = $this->_authService->getIdentity();
if ($user->role !== 'admin') {
if ($user->token != null) {
$token = $user->token; //Esistente uso quello già presente
} else {
do { //se non esiste ne genero uno nuovo e controllo che sia univoco
$token = hash('sha1', $user->username . date('YmdHis') . mt_rand(5, 10));
if ($this->_genericModel->getByColumnName('Users', 'token', $token)) {
$exist = true;
} else {
$exist = false;
}
$user->token = $token;
} while ($exist);
}
$this->_genericModel->update('Users', $user->id, array('UltimoLogin' => date('Y-m-d H:i:s'), 'token' => $token));
} else {
$this->_genericModel->update('Users', $user->id, array('UltimoLogin' => date('Y-m-d H:i:s')));
}
$this->_genericModel->insert('Accesslog', array('ip' => $_SERVER['REMOTE_ADDR'], 'tipo' => $this->_authService->getIdentity()->role));
return $this->_helper->redirector('index', 'index', $this->_authService->getIdentity()->role);
}
public function indexAction()
{
// $this->_helper->getHelper('layout')->disableLayout();
/*if (isset($this->_authService->getAuth()->getIdentity()->username))
$this->_helper->redirector('index', $this->_authService->getAuth()->getIdentity()->role);
else
$this->_helper->redirector('login', 'index', 'default');*/
}
/**
* =====================================================================================================================
* ========= ELENCO PAGINE STATIC ACTION ===============================================
* =====================================================================================================================
*/
public function assistenzaAction()
{
}
public function caratteristicheAction()
{
}
public function acquistaAction()
{
}
public function downloadsoftwareAction()
{
}
public function copyrightAction()
{
}
public function privacyAction()
{
$this->redirect("https://www.iubenda.com/privacy-policy/70038880");
}
public function cookiepolicyAction()
{
$this->redirect("https://www.iubenda.com/privacy-policy/70038880/cookie-policy");
}
/**
* =====================================================================================================================
* ========= ACTION SPECIALI ===========================================================
* =====================================================================================================================
*/
public function resetpasswordAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$rcode = $this->getParam('rcode', null);
$this->view->hideForm = false;
$this->view->rcode = $rcode;
if (!$rcode && $this->getRequest()->isPost()) {
$email = $this->_getParam('Email', null);
if (!$email) {
$this->view->errorMessage = "Inserire un email corretta!";
return;
}
$users = $this->_genericModel->getByColumnName('Users', 'Email', $email);
if (!$users || !$users['stato'] || $users['role'] === 'admin') {
$this->view->warningMessage = "Nessuna corrispondenza per l'email inserita.";
$this->view->hideForm = true;
return;
}
if ($users['NumeroResetPw'] > 5) {
$this->view->warningMessage = "Hai effettuato troppe richieste per il reseet password, attendi 48 ore o contatta l'amministrazione su xxxx";
$this->view->hideForm = true;
return;
}
//Genero rcode e incremento il numero di richieste già effettuate per il limite max
$numeroReset = ($users['NumeroResetPw']) ? $users['NumeroResetPw'] : 0;
$numeroReset += 1;
$rcode = md5($users['PartitaIva'] . date('YmdHis'));
$this->_genericModel->update('Users', $users['id'], array('DataRichiestaResetPw' => date('Y-m-d H:i:s'), 'rcode' => $rcode, 'NumeroResetPw' => $numeroReset));
$users['rcode'] = $rcode;
//Invio email di recupero
$this->inviaEmailDiRecuperoPassword($users);
$this->view->successMessage = "Ti è stata inviata una email per effettuare il reset della password, consulta la tua casella di posta e segui le istruzioni.";
$this->view->hideForm = true;
return;
}
// FINE RICHIESTA
// INIZIO RESET PASSWORD
if ($rcode) {
//Controllo del codice rcode
$utente = $this->_genericModel->getByColumnName('Users', 'rcode', $rcode);
if (!$utente) {
$this->view->warningMessage = "La richiesta è scaduta, effettuare una nuova richiesta!";
$this->view->rcode = false;
return;
}
if ($this->getRequest()->isPost()) {
$form = new Application_Form_Default_Index_Auth_ResetPw();
if (!$form->isValid($this->getAllParams())) {
$this->view->errorMessage = "Ci sono errori di compilazione, controllare i campi!";
$this->view->errorForm = $form->getMessages();
$this->view->formData = $form->getValues();
return;
}
$data = $form->getValues();
$nuovaPassword = md5(Zend_Registry::get('ENVIROMENTS')->get('password_salt') . $data['password']);
//Inserimento nuova password nel db
$this->_genericModel->update('Users', $utente['id'], array('password' => $nuovaPassword, 'rcode' => null, 'NumeroResetPw' => 0));
$this->view->successMessage = 'La password è stata reimpostata correttamente, effettua un nuovo login cliccando qui.';
$this->view->hideForm = true;
return;
}
}
}
public function sendcontactAction()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
if ($this->getRequest()->isXmlHttpRequest()) {
$form = new Application_Form_Index_Contact_Add();
if (!$form->isValid($this->getAllParams())) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => $form->getMessages(),
)));
}
try {
$emailTemplate = $this->_genericModel->getByColumnName('EmailTemplate', 'Codice', $this->_configs->get('email_contatto_template'));
if (!$emailTemplate) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => "Email template non trovato o non assegnato",
)));
}
$this->_helper->Email->sendEmailByTemplate($this->_configs->get('email_primo_contatto'), $emailTemplate, $form->getValues());
//Incremento il contatore contatti email
$numContatti = $this->_VariabiliSito->get('I_Numero_Contatti_Email');
$this->_VariabiliSito->set('I_Numero_Contatti_Email', ++$numContatti);
$response['success'] = true;
} catch (Zend_Exception $e) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => "si è verificato un errore durante l'invio del messaggio",
)));
}
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode($response));
} else {
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('success' => false, 'errore' => 'Operazione non consentita')));
}
}
public function sitemapAction()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');
echo '';
echo '';
/*echo '';
echo 'https://sfdasdas.com/';
echo 'monthly';
echo '';*/
echo '';
}
/**
* =====================================================================================================================
* ========= FUNZIONI PRIVATE DEL CONTROLLER ===========================================
* =====================================================================================================================
*/
private function recuperaCredenziali()
{
//Recupero eventuali credenziali memorizzate
if (isset($_COOKIE[$this->_COOKIE_SITE_CREDENTIALS])) {
$credentials = Zend_Json::decode($_COOKIE[$this->_COOKIE_SITE_CREDENTIALS]);
if ($credentials['ricorda_password'] == 'on') {
try {
$credentials['password'] = $this->_rsaCryptor->decripta($credentials['password']);
} catch (Exception $e) {
$credentials = array('ricorda_password' => 'off');
}
return $credentials;
}
}
return array('ricorda_password' => 'on');
}
private function inviaEmailDiRecuperoPassword($user)
{
//Invio email per conferma
$emailTemplate = $this->_genericModel->getByColumnName('EmailTemplate', 'Codice', 'EMAIL_RECUPERO_PASSWORD');
if (!$emailTemplate) {
throw new Exception("Errore invio email richiesta recupero password");
}
$params = $user;
$params['link'] = $this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost()
. $this->_urlHelper->url(array('rcode' => $params['rcode']), 'resetpassword', true);
$this->_helper->Email->sendEmailByTemplate($params['Email'], $emailTemplate, $params);
}
}