ForgeAuthPlugin() ; $this->name = "authhttpd"; $this->text = _("HTTPD authentication"); $this->pkg_desc = _("This plugin contains an HTTPD authentication mechanism for FusionForge. It allows Apache authentication to be reused for FusionForge, for instance where Kerberos is used."); $this->_addHook('display_auth_form'); $this->_addHook("check_auth_session"); $this->_addHook("fetch_authenticated_user"); $this->_addHook("close_auth_session"); $this->saved_login = ''; $this->saved_user = NULL; $this->declareConfigVars(); } private static $init = false; /** * Display a form to input credentials * @param unknown_type $params * @return boolean */ function displayAuthForm(&$params) { if (!$this->isRequired() && !$this->isSufficient()) { return true; } $return_to = $params['return_to']; $result = ''; $result .= '

'; $result .= _('Cookies must be enabled past this point.'); $result .= '

'; $result .= '

' ; $params['html_snippets'][$this->name] = $result; $params['transparent_redirect_urls'][$this->name] = util_make_url('/plugins/authhttpd/post-login.php?return_to='.htmlspecialchars(stripslashes($return_to))); } /** * Is there a valid session? * @param unknown_type $params */ function checkAuthSession(&$params) { $this->saved_user = NULL; $user = NULL; if (isset($GLOBALS['REMOTE_USER'])) { $username = $GLOBALS['REMOTE_USER']; } else { $username = NULL; } if ($username) { $user = user_get_object_by_name($username); } // TODO : shouldn't this part be factorized as it seems quite common for many plugins ? if ($user) { if ($this->isSufficient()) { $this->saved_user = $user; $params['results'][$this->name] = FORGE_AUTH_AUTHORITATIVE_ACCEPT; } else { $params['results'][$this->name] = FORGE_AUTH_NOT_AUTHORITATIVE; } } else { if ($this->isRequired()) { $params['results'][$this->name] = FORGE_AUTH_AUTHORITATIVE_REJECT; } else { $params['results'][$this->name] = FORGE_AUTH_NOT_AUTHORITATIVE; } } } /** * What GFUser is logged in? * @param unknown_type $params */ function fetchAuthUser(&$params) { if ($this->saved_user && $this->isSufficient()) { $params['results'] = $this->saved_user; } } function closeAuthSession($params) { // No way to close an HTTPD session from the server, unfortunately return true; } } // Local Variables: // mode: php // c-file-style: "bsd" // End: