From: <var...@us...> - 2009-06-25 11:56:17
|
Revision: 6959 http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6959&view=rev Author: vargenau Date: 2009-06-25 11:56:16 +0000 (Thu, 25 Jun 2009) Log Message: ----------- Gforge to Phpwiki user mapping Added Paths: ----------- trunk/lib/WikiUser/GForge.php Added: trunk/lib/WikiUser/GForge.php =================================================================== --- trunk/lib/WikiUser/GForge.php (rev 0) +++ trunk/lib/WikiUser/GForge.php 2009-06-25 11:56:16 UTC (rev 6959) @@ -0,0 +1,92 @@ +<?php //-*-php-*- +rcs_id('$Id$'); +/* Copyright (C) 2006 Alain Peyrat + * This file is part of PhpWiki. Terms and Conditions see LICENSE. (GPL2) + */ + +/** Call the gforge functions to get the username + * + */ +class _GForgePassUser extends _PassUser { + + var $_is_external = 0; + + function _GForgePassUser($UserName='',$prefs=false) { + if ($prefs) $this->_prefs = $prefs; + if (!isset($this->_prefs->_method)) + _PassUser::_PassUser($UserName); + if ($UserName) $this->_userid = $UserName; + $this->_authmethod = 'GForge'; + + // Is this double check really needed? + // It is not expensive so we keep it for now. + if ($this->userExists()) + return $this; + else + return $GLOBALS['ForbiddenUser']; + } + + function userExists() { + global $group_id; + + // Mapping (phpWiki vs GForge) performed is: + // ANON for non logged or non member + // USER for member of the project. + // ADMIN for member having admin rights + if (session_loggedin()){ + + // Get project object (if error => ANON) + $project =& group_get_object($group_id); + + if (!$project || !is_object($project)) { + $this->_level = WIKIAUTH_ANON; + return false; + } elseif ($project->isError()) { + $this->_level = WIKIAUTH_ANON; + return false; + } + + $member = false ; + $user = session_get_user(); + $perm =& $project->getPermission($user); + if (!$perm || !is_object($perm)) { + $this->_level = WIKIAUTH_ANON; + return false; + } elseif (!$perm->isError()) { + $member = $perm->isMember(); + } + + if ($member) { + $this->_userid = $user->getRealName(); + $this->_is_external = $user->getIsExternal(); + if ($perm->isAdmin()) { + $this->_level = WIKIAUTH_ADMIN; + } else { + $this->_level = WIKIAUTH_USER; + } + return $this; + } + } + $this->_level = WIKIAUTH_ANON; + return false; + } + + function checkPass($submitted_password) { + return $this->userExists() + ? ($this->isAdmin() ? WIKIAUTH_ADMIN : WIKIAUTH_USER) + : WIKIAUTH_ANON; + } + + function mayChangePass() { + return false; + } +} + +// Local Variables: +// mode: php +// tab-width: 8 +// c-basic-offset: 4 +// c-hanging-comment-ender-p: nil +// indent-tabs-mode: nil +// End: +?> Property changes on: trunk/lib/WikiUser/GForge.php ___________________________________________________________________ Added: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |