Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

133 righe
4.8 KiB

<?php
/**
* Description of Application
*
* @author Gigi
*/
class Application extends DataClass {
const SUCCESS = 1; // controlli ok
const ACCESS_ERR = -1; // errore di accesso (lato WEB => response con messaggio e codice errore in json)
const ACCESS_WS_ERR = -2; // errore di accesso (lato WS => response con exit(0))
private $account = null;
private $con = null;
private $conSpid = null;
public $lastEsito = 0;
public $lastMessageError = '';
public function __construct() {
return $this->_initApp();
}
public function getAccount(){
return $this->account;
}
public function getCon(){
return $this->con;
}
public function getConSpid(){
return $this->conSpid;
}
/* CHECK IP ACCESS */
private function _checkIP() {
$response = false;
if (ENABLE_CHECK_IP) {
if (!Utils::access_IP_control() && !Utils::checkCurrentPage('index')) {
if (Utils::checkCurrentPage('_webservice')) {
$this->lastEsito = self::ACCESS_ERR;
$this->lastMessageError = 'Accesso scaduto: si prega di aggiornare la pagina ed effettuare il login al sistema.';
} else {
Utils::RedirectTo(BASE_HTTP . "logout.php");
exit(0);
}
} else {
$response = true;
}
} else {
$response = true;
}
return $response;
}
/* SET DB CONNECTION */
private function _checkConnectionDB() {
global $con, $conSpid;
if (!isset($con)) {
$connessione = new Database(DBMS, DB_SERVER, array('DB_USER' => DB_USER, 'DB_PASS' => DB_PASS));
$this->con = $connessione->db;
} else {
$this->con = $con;
}
if (!isset($conSpid)) {
$connessioneSpid = new Database(DBMS, DB_SERVER, array('DB_USER' => DB_USER_SPID, 'DB_PASS' => DB_PASS_SPID));
$this->conSpid = $connessioneSpid->db;
} else {
$this->conSpid = $conSpid;
}
}
private function _checkModuleAction(){
global $moduliActionAccessNoControll;
$response = false;
if (isset($_REQUEST["module"]) && isset($_REQUEST["action"])){
$module = $_REQUEST["module"];
$action = $_REQUEST["action"];
if (isset($moduliActionAccessNoControll[$module]) && in_array($action, $moduliActionAccessNoControll[$module])){
$response = true;
}
}
return $response;
}
private function _initApp() {
global $pageAccessNoControll;
if ($this->_checkIP()) {
session_start([
'cookie_lifetime' => COOKIE_LIFETIME,
]);
if (isset($_SESSION['ID']) && intval($_SESSION['ID']) > 0) {
if (isset($_SESSION['LoggedAccount'])) {
$this->lastEsito = self::SUCCESS;
$this->account = Account::initAccountFromSessione(json_decode($_SESSION['LoggedAccount'], true));
} else {
$this->lastEsito = self::SUCCESS;
$this->account = new Account(intval($_SESSION['ID']));
}
/* CONTROLLO SE NEL PERIODO DI ACCESSO HO I REQUISITI PER ACCEDERE AL SISTEMA */
if (Utils::checkCurrentPage('_webservice')) {
if (!in_array($currentPageAccess, $pageAccessNoControll) && !$this->account->checkAuthApiFase()) {
$this->lastEsito = self::ACCESS_WS_ERR;
}
} else if (!Utils::checkCurrentPage('info')) {
$this->lastEsito = self::SUCCESS;
$this->account->checkAuthPageFase();
}
} else {
$this->lastEsito = self::SUCCESS;
$this->account = new Account();
$currentPageAccess = Utils::getCurrentPageCalled();
if (Utils::checkCurrentPage('_webservice') && (!in_array($currentPageAccess, $pageAccessNoControll) || !$this->_checkModuleAction())) {
$this->lastEsito = self::ACCESS_ERR;
$this->lastMessageError = 'Accesso scaduto: si prega di aggiornare la pagina ed effettuare il login al sistema.';
} else if (!in_array($currentPageAccess, $pageAccessNoControll) || Utils::isPrivatePageCalled()) {
Utils::RedirectTo(BASE_HTTP . "index.php");
exit(0);
}
}
}
if ($this->lastEsito == self::SUCCESS){
$this->_checkConnectionDB();
}
}
}
?>