From d07df8a7964e08d1af9e7bd762f2ac07035d9856 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Wed, 18 Nov 2009 14:19:43 -0500 Subject: Added Authorization plugin Added LDAPAuthorization plugin --- plugins/Authorization/AuthorizationPlugin.php | 112 ++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 plugins/Authorization/AuthorizationPlugin.php (limited to 'plugins/Authorization/AuthorizationPlugin.php') diff --git a/plugins/Authorization/AuthorizationPlugin.php b/plugins/Authorization/AuthorizationPlugin.php new file mode 100644 index 000000000..be39aedd2 --- /dev/null +++ b/plugins/Authorization/AuthorizationPlugin.php @@ -0,0 +1,112 @@ +. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Superclass for plugins that do authorization + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +abstract class AuthorizationPlugin extends Plugin +{ + //is this plugin authoritative for authorization? + public $authoritative = false; + + //------------Auth plugin should implement some (or all) of these methods------------\\ + + /** + * Is a user allowed to log in? + * @param user + * @return boolean true if the user is allowed to login, false if explicitly not allowed to login, null if we don't explicitly allow or deny login + */ + function loginAllowed($user) { + return null; + } + + /** + * Does a profile grant the user a named role? + * @param profile + * @return boolean true if the profile has the role, false if not + */ + function hasRole($profile, $name) { + return false; + } + + //------------Below are the methods that connect StatusNet to the implementing Auth plugin------------\\ + function onInitializePlugin(){ + + } + + function onStartSetUser(&$user) { + $loginAllowed = $this->loginAllowed($user); + if($loginAllowed === true){ + if($this->authoritative) { + return false; + }else{ + return; + } + }else if($loginAllowed === false){ + $user = null; + return false; + }else{ + if($this->authoritative) { + $user = null; + return false; + }else{ + return; + } + } + } + + function onStartSetApiUser(&$user) { + return onStartSetUser(&$user); + } + + function onStartHasRole($profile, $name, &$has_role) { + if($this->hasRole($profile, $name)){ + $has_role = true; + return false; + }else{ + if($this->authoritative) { + $has_role = false; + return false; + }else{ + return; + } + } + } +} + -- cgit v1.2.3-54-g00ecf From a215ce6ed6d3a0eb9bb29db5ebe103e28f2ff95e Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Wed, 18 Nov 2009 15:53:07 -0500 Subject: correct login checking logic --- plugins/Authorization/AuthorizationPlugin.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'plugins/Authorization/AuthorizationPlugin.php') diff --git a/plugins/Authorization/AuthorizationPlugin.php b/plugins/Authorization/AuthorizationPlugin.php index be39aedd2..6f21c9310 100644 --- a/plugins/Authorization/AuthorizationPlugin.php +++ b/plugins/Authorization/AuthorizationPlugin.php @@ -73,11 +73,7 @@ abstract class AuthorizationPlugin extends Plugin function onStartSetUser(&$user) { $loginAllowed = $this->loginAllowed($user); if($loginAllowed === true){ - if($this->authoritative) { - return false; - }else{ - return; - } + return; }else if($loginAllowed === false){ $user = null; return false; -- cgit v1.2.3-54-g00ecf From a882d093bc99d1162dac29c161253dc037c314b9 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Wed, 18 Nov 2009 16:12:55 -0500 Subject: Blasted missing a $this! --- plugins/Authorization/AuthorizationPlugin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins/Authorization/AuthorizationPlugin.php') diff --git a/plugins/Authorization/AuthorizationPlugin.php b/plugins/Authorization/AuthorizationPlugin.php index 6f21c9310..e4e046d08 100644 --- a/plugins/Authorization/AuthorizationPlugin.php +++ b/plugins/Authorization/AuthorizationPlugin.php @@ -88,7 +88,7 @@ abstract class AuthorizationPlugin extends Plugin } function onStartSetApiUser(&$user) { - return onStartSetUser(&$user); + return $this->onStartSetUser(&$user); } function onStartHasRole($profile, $name, &$has_role) { -- cgit v1.2.3-54-g00ecf