Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
49 / 49 |
| abstract_auth | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
21 | |
100.00% |
49 / 49 |
| enable | |
100.00% |
1 / 1 |
4 | |
100.00% |
13 / 13 |
|||
| _isConnected | |
100.00% |
1 / 1 |
13 | |
100.00% |
21 / 21 |
|||
| _connect | |
100.00% |
1 / 1 |
3 | |
100.00% |
11 / 11 |
|||
| _disconnect | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| <?php | |
| /* | |
| This file is part of Mkframework. | |
| Mkframework is free software: you can redistribute it and/or modify | |
| it under the terms of the GNU Lesser General Public License as published by | |
| the Free Software Foundation, either version 3 of the License. | |
| Mkframework is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public License | |
| along with Mkframework. If not, see <http://www.gnu.org/licenses/>. | |
| */ | |
| /** | |
| *classe abstract_auth | |
| * @author Mika | |
| * @link http://mkf.mkdevs.com/ | |
| */ | |
| abstract class abstract_auth{ | |
| private $_bConnected=false; | |
| public function enable(){ | |
| _root::startSession(); | |
| $sModuleToLoad=_root::getRequest()->getModule(); | |
| if(preg_match('/::/',_root::getConfigVar('auth.module'))){ | |
| $tModuleAction=preg_split('/::/',_root::getConfigVar('auth.module')); | |
| $sAuthModule=$tModuleAction[0]; | |
| }else{ | |
| $sAuthModule=_root::getConfigVar('auth.module'); | |
| } | |
| $tExcludeModule=explode(',',_root::getConfigVar('auth.module.disabled.list').','); | |
| $tExcludeModule[]=$sAuthModule; | |
| if( !_root::getAuth()->isConnected() and in_array($sModuleToLoad,$tExcludeModule)==false ){ | |
| _root::redirect(_root::getConfigVar('auth.module')); | |
| } | |
| } | |
| /** | |
| * @access public | |
| * indique si l'utilisateur est connecte | |
| * @return bool | |
| */ | |
| public function _isConnected(){ | |
| if( !isset($_SESSION['ip']) or $_SESSION['ip']!=sha1($_SERVER['REMOTE_ADDR']) | |
| or !isset($_SESSION['userAgent']) or $_SESSION['userAgent']!=sha1($_SERVER['HTTP_USER_AGENT']) ){ | |
| return false; | |
| }else if( | |
| (int)_root::getConfigVar('auth.session.timeout.enabled')==1 | |
| and (!isset($_SESSION['timeout']) or ((int)$_SESSION['timeout']-time() ) < 0)){ | |
| //on regenere un nouvel id de session | |
| session_regenerate_id(true); | |
| return false; | |
| }else if( | |
| _root::getConfigVar('security.xsrf.checkReferer.enabled') ==1 | |
| and isset($_SERVER['HTTP_REFERER'])){ | |
| if(isset($_SERVER['HTTPS']) ){ | |
| $sPattern='https://'.$_SERVER['SERVER_NAME']; | |
| }else{ | |
| $sPattern='http://'.$_SERVER['SERVER_NAME']; | |
| } | |
| $urllen=strlen($sPattern); | |
| if( substr($_SERVER['HTTP_REFERER'],0,$urllen)!=$sPattern ){ | |
| return false; | |
| } | |
| } | |
| if((int)_root::getConfigVar('auth.session.timeout.enabled')==1){ | |
| $_SESSION['timeout']=(time()+(int)_root::getConfigVar('auth.session.timeout.lifetime') ); | |
| } | |
| return true; | |
| } | |
| /** | |
| * @access public | |
| */ | |
| public function _connect(){ | |
| //on regenere un nouvel id de session | |
| session_regenerate_id(true); | |
| $this->_bConnected=true; | |
| $_SESSION['ip']=sha1($_SERVER['REMOTE_ADDR']); | |
| if(isset($_SERVER['HTTP_USER_AGENT'])){ | |
| $_SESSION['userAgent']=sha1($_SERVER['HTTP_USER_AGENT']); | |
| }else { | |
| $_SESSION['userAgent']=sha1('noUserAgent'); | |
| } | |
| if((int)_root::getConfigVar('auth.session.timeout.enabled')==1){ | |
| $_SESSION['timeout']=(time()+(int)_root::getConfigVar('auth.session.timeout.lifetime') ); | |
| } | |
| } | |
| /** | |
| * @access public | |
| */ | |
| public function _disconnect(){ | |
| $_SESSION=array(); | |
| //on regenere un nouvel id de session | |
| session_regenerate_id(true); | |
| $this->_bConnected=false; | |
| } | |
| } |