Force SSL (HTTPS) Component, Finalization Help

2008-07-01 Thread Daniel E.

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 cake-php@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Force SSL (HTTPS) Component, Finalization Help

2008-07-01 Thread Daniel E.

~/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