~/app/controllers/components/s_s_l.php:
<?php
class SSLComponent extends Object{
var $_aryParams = array();
var $reset = true;
function initialize(&$controller){
$this->_config('objController', $controller);
$this->_config('controller',
$controller->params['controller']);
$this->_config('action',
$controller->params['action']);
$this->_config('host', $_SERVER['SERVER_NAME']);
$this->_config('cakeUrl',
$controller->params['url']['url']);
$this->_config('forceSSL', array());
if(strlen(trim($this->_getConfig('cakeUrl'))) > 0 && $this-
>_getConfig('cakeUrl') <> '/'){
$this->_config('cakeUrl','/'.$this->_getConfig('cakeUrl'));
}
$this->_config('path', $this->_getConfig('cakeUrl'));
$this->_config('redirectPath',
'://'.$this->_getConfig('host').$this-
>_getConfig('path'));
}
function shutdown(&$controller){
unset($this->_aryParams);
}
function _config($strParam,$objValue,$bolGet=false){
if(!$bolGet){
$this->_aryParams[$strParam] = $objValue;
}else{
return $this->_aryParams[$strParam];
}
}
function _getConfig($strParam){
return $this->_config($strParam,null,true);
}
function force($arySSL=null,$strAction=null){
if(is_array($arySSL)){
foreach($arySSL as $strSSL){
if(count(split('\.',$strSSL,2)) <> 2){
$strSSL .= '.*';
}
list($strController,$strAction) =
split('\.',$strSSL,2);
$this->_config('forceSSL',array_merge($this-
>_getConfig('forceSSL'),array(array('controller'=>
$strController,'action'=>$strAction))));
}
}elseif($arySSL <> null){
if($strAction == null){
$strAction = '*';
}
$this->_config('forceSSL',array_merge($this-
>_getConfig('forceSSL'),array(array('controller'=>$arySSL,'action'=>
$strAction))));
}
}
function check(){
$this->_config('bolReset',$this->reset);
$bolForced = false;
foreach($this->_getConfig('forceSSL') as $arySSL){
if($arySSL['controller'] ==
$this->_getConfig('controller') &&
$arySSL['action'] == $this->_getConfig('action')){
$bolForced = true;
}elseif($arySSL['controller'] ==
$this->_getConfig('controller') &&
$arySSL['action'] == '*'){
$bolForced = true;
}
}
$objController = $this->_getConfig('objController');
if(!env('HTTPS') && $bolForced){
$objController->redirect('https'.$this-
>_getConfig('redirectPath'));
}elseif($this->_getConfig('bolReset')){
if(!$bolForced && env('HTTPS')){
$objController->redirect('http'.$this-
>_getConfig('redirectPath'));
}
}
}
}
?>
On Jun 30, 11:21 pm, "Daniel E." <[EMAIL PROTECTED]> wrote:
> Hello All,
>
> I managed to get my component working but would like to call cake's
> native 'redirect' instead of "header('location...", if it is
> possible... Does anyone know how this can be done?
>
> ~/app/app_controller.php:
> <?php
> ...
> function beforeRender(){
> /*
> * $this->SSL->reset=false;//requests continue in https if
> false,
> default = true
> * $this->SSL->force('controller','action');
> * $this->SSL->force('controller');//all actions forced.
> * $array =
> array('controller.actionA','controller2.actionB','controller3');
> * $this->SSL->force($array);
> */
> $this->SSL->force('users');
> $this->SSL->force('messages','add');
> $this->SSL->check();}
>
> ...
> ?>
>
> ~/app/controllers/components/s_s_l.php:
> <?php
> class SSLComponent extends Object{
> var $_aryParams = array();
> var $reset = true;
> function initialize(&$controller){
> $this->_config('controller',
> $controller->params['controller']);
> $this->_config('action', $controller->params['action']);
> $this->_config('host', $_SERVER['SERVER_NAME']);
> $this->_config('cakeUrl',
> $controller->params['url']['url']);
> $this->_config('forceSSL', array());
> if(strlen(trim($this->_getConfig('cakeUrl'))) > 0 &&
> $this->_getConfig('cakeUrl') <> '/'){
>
>
> $this->_config('cakeUrl','/'.$this->_getConfig('cakeUrl'));
> }
> $this->_config('path',$this->_getConfig('cakeUrl'));
> }
> function startup(&$controller){
>
> $this->_config('resetPath','://'.$this->_getConfig('host').$this->_getConfig('path'));
>
> }
> function shutdown(&$controller){
> unset($this->_aryParams);
> }
> function _config($strParam,$objValue,$bolGet=false){
> if(!$bolGet){
> $this->_aryParams[$strParam] = $objValue;
> }else{
> return $this->_aryParams[$strParam];
> }
> }
> function _getConfig($strParam){
> return $this->_config($strParam,null,true);
> }
> function force($arySSL=null,$strAction=null){
> if(is_array($arySSL)){
> foreach($arySSL as $strSSL){
> if(count(split('\.',$strSSL,2)) <> 2){
> $strSSL .= '.*';
> }
> list($strController,$strAction) =
> split('\.',$strSSL,2);
>
> $this->_config('forceSSL',array_merge($this->_getConfig('forceSSL'),array(array('controller'=>
>
> $strController,'action'=>$strAction))));
> }
> }elseif($arySSL <> null){
> if($strAction == null){
> $strAction = '*';
> }
>
> $this->_config('forceSSL',array_merge($this->_getConfig('forceSSL'),array(array('controller'=>$arySSL,'action'=>
>
> $strAction))));
> }
> }
> function check(){
> $this->_config('bolReset', $this->reset);
> $bolForced = false;
> foreach($this->_getConfig('forceSSL') as $arySSL){
> if($arySSL['controller'] ==
> $this->_getConfig('controller') &&
> $arySSL['action'] == $this->_getConfig('action')){
> $bolForced = true;
> }elseif($arySSL['controller'] ==
> $this->_getConfig('controller') &&
> $arySSL['action'] == '*'){
> $bolForced = true;
> }
> }
> if(!env('HTTPS') && $bolForced){
>
> header('location:'.'https'.$this->_getConfig('resetPath'));
> }elseif($this->_getConfig('bolReset')){
> if(!$bolForced && env('HTTPS')){
>
> header('location:'.'http'.$this->_getConfig('resetPath'));
> }
> }
> }}
>
> ?>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---