2005-08-21 06:49:02 +00:00
< ? php
/* SVN FILE: $Id$ */
/**
2005-09-07 01:52:45 +00:00
* Access Control List factory class .
2006-01-12 02:10:47 +00:00
*
2005-09-07 01:52:45 +00:00
* Permissions system .
2005-08-21 06:49:02 +00:00
*
* PHP versions 4 and 5
*
2007-02-02 10:39:45 +00:00
* CakePHP ( tm ) : Rapid Development Framework < http :// www . cakephp . org />
* Copyright 2005 - 2007 , Cake Software Foundation , Inc .
2006-05-26 05:29:17 +00:00
* 1785 E . Sahara Avenue , Suite 490 - 204
* Las Vegas , Nevada 89104
2006-01-12 02:10:47 +00:00
*
2005-12-23 21:57:26 +00:00
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice .
2005-08-21 06:49:02 +00:00
*
2006-01-12 02:10:47 +00:00
* @ filesource
2007-02-02 10:39:45 +00:00
* @ copyright Copyright 2005 - 2007 , Cake Software Foundation , Inc .
* @ link http :// www . cakefoundation . org / projects / info / cakephp CakePHP ( tm ) Project
2006-05-26 05:29:17 +00:00
* @ package cake
* @ subpackage cake . cake . libs . controller . components
2007-02-02 10:39:45 +00:00
* @ since CakePHP ( tm ) v 0.10 . 0.1076
2006-05-26 05:29:17 +00:00
* @ version $Revision $
* @ modifiedby $LastChangedBy $
* @ lastmodified $Date $
* @ license http :// www . opensource . org / licenses / mit - license . php The MIT License
2005-08-21 06:49:02 +00:00
*/
/**
* Access Control List factory class .
2006-01-12 02:10:47 +00:00
*
2005-08-21 06:49:02 +00:00
* Looks for ACL implementation class in core config , and returns an instance of that class .
*
2006-05-26 05:29:17 +00:00
* @ package cake
* @ subpackage cake . cake . libs . controller . components
2005-08-21 06:49:02 +00:00
*/
2006-06-14 18:02:37 +00:00
class AclComponent extends Object {
var $_instance = null ;
var $controller = true ;
2005-12-22 01:07:28 +00:00
/**
2006-02-07 02:19:53 +00:00
* Constructor . Will return an instance of the correct ACL class .
2005-12-22 01:07:28 +00:00
*
*/
2006-06-14 18:02:37 +00:00
function __construct () {
$this -> getACL ();
}
2005-12-22 01:07:28 +00:00
/**
* Static function used to gain an instance of the correct ACL class .
*
* @ return MyACL
*/
2006-06-14 18:02:37 +00:00
function & getACL () {
2007-05-01 01:23:21 +00:00
if ( $this -> _instance == null ) {
2007-05-01 01:49:51 +00:00
$file = explode ( DS , ACL_FILENAME );
$file = array_pop ( $file );
uses ( 'model' . DS . $file );
2006-06-14 18:02:37 +00:00
$classname = ACL_CLASSNAME ;
$this -> _instance = new $classname ;
2007-05-15 20:01:44 +00:00
$this -> _instance -> initialize ( $this );
2006-11-24 17:27:11 +00:00
}
2006-06-14 18:02:37 +00:00
return $this -> _instance ;
}
2005-12-22 01:07:28 +00:00
/**
2006-02-07 02:19:53 +00:00
* Empty class defintion , to be overridden in subclasses .
2005-12-22 01:07:28 +00:00
*
*/
2006-06-14 18:02:37 +00:00
function _initACL () {
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL check instance .
*
2006-11-24 17:27:11 +00:00
* @ param string $aro
* @ param string $aco
* @ param string $action : default = *
2005-12-22 01:07:28 +00:00
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function check ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> check ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL allow instance .
*
2006-11-24 17:27:11 +00:00
* @ param string $aro
* @ param string $aco
* @ param string $action : default = *
2005-12-22 01:07:28 +00:00
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function allow ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> allow ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL deny instance .
*
2006-11-24 17:27:11 +00:00
* @ param string $aro
* @ param string $aco
* @ param string $action : default = *
2005-12-22 01:07:28 +00:00
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function deny ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> deny ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL inherit instance .
*
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function inherit ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> inherit ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL grant instance .
*
2006-11-24 17:27:11 +00:00
* @ param string $aro
* @ param string $aco
* @ param string $action : default = *
2005-12-22 01:07:28 +00:00
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function grant ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> grant ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL grant instance .
*
2006-11-24 17:27:11 +00:00
* @ param string $aro
* @ param string $aco
* @ param string $action : default = *
2005-12-22 01:07:28 +00:00
* @ return boolean
*/
2006-06-14 18:02:37 +00:00
function revoke ( $aro , $aco , $action = " * " ) {
return $this -> _instance -> revoke ( $aro , $aco , $action );
}
2005-12-22 01:07:28 +00:00
/**
2006-11-24 17:27:11 +00:00
* Sets the current ARO instance to object from getAro
*
* @ param string $id
* @ return boolean
*/
function setAro ( $id ) {
return $this -> Aro = $this -> _instance -> getAro ( $id );
}
/**
* Sets the current ACO instance to object from getAco
*
* @ param string $id
* @ return boolean
*/
function setAco ( $id ) {
return $this -> Aco = $this -> _instance -> getAco ( $id );
}
/**
* Pass - thru function for ACL getAro instance
* that gets an ARO object from the given id or alias
2005-12-22 01:07:28 +00:00
*
2006-11-24 17:27:11 +00:00
* @ param string $id
2005-12-22 01:07:28 +00:00
* @ return Aro
*/
2006-06-14 18:02:37 +00:00
function getAro ( $id ) {
return $this -> _instance -> getAro ( $id );
}
2005-12-22 01:07:28 +00:00
/**
* Pass - thru function for ACL getAco instance .
2006-11-24 17:27:11 +00:00
* that gets an ACO object from the given id or alias
2005-12-22 01:07:28 +00:00
*
2006-11-24 17:27:11 +00:00
* @ param string $id
2005-12-22 01:07:28 +00:00
* @ return Aco
*/
2006-06-14 18:02:37 +00:00
function getAco ( $id ) {
return $this -> _instance -> getAco ( $id );
}
2005-08-21 06:49:02 +00:00
}
2007-05-01 01:23:21 +00:00
/**
* Access Control List abstract class . Not to be instantiated .
* Subclasses of this class are used by AclComponent to perform ACL checks in Cake .
*
* @ package cake
* @ subpackage cake . cake . libs . controller . components
2007-05-20 04:44:18 +00:00
* @ abstract
2007-05-01 01:23:21 +00:00
*/
2007-05-20 04:44:18 +00:00
class AclBase extends Object {
2007-05-01 01:23:21 +00:00
/**
* This class should never be instantiated , just subclassed .
*
* @ return AclBase
*/
2007-05-21 04:24:58 +00:00
function __construct () {
2007-05-01 01:23:21 +00:00
if ( strcasecmp ( get_class ( $this ), " AclBase " ) == 0 || ! is_subclass_of ( $this , " AclBase " )) {
trigger_error ( __ ( " [acl_base] The AclBase class constructor has been called, or the class was instantiated. This class must remain abstract. Please refer to the Cake docs for ACL configuration. " , true ), E_USER_ERROR );
return NULL ;
}
}
/**
* Empty method to be overridden in subclasses
*
* @ param unknown_type $aro
* @ param unknown_type $aco
* @ param string $action
*/
function check ( $aro , $aco , $action = " * " ) {
}
2007-05-15 20:01:44 +00:00
/**
* Empty method to be overridden in subclasses
*
* @ param unknown_type $component
*/
function initialize ( & $component ) {
}
2007-05-01 01:23:21 +00:00
}
2007-05-15 20:01:44 +00:00
2006-01-12 02:10:47 +00:00
?>