[geeklog-cvs] geeklog-2/lib/A_and_A/server/commands AABaseCommand.class.php,NONE,1.1 authenticate.class.php,NONE,1.1 changepassword.class.php,NONE,1.1 changepasswordbyadmin.class.php,NONE,1.1 getusergroups.class.php,NONE,1.1 getuserprivileges.class.php,NONE,1.1 listappgroups.class.php,NONE,1.1 listappprivileges.class.php,NONE,1.1 resetpassword.class.php,NONE,1.1 setuserprivileges.class.php,NONE,1.1

geeklog-cvs-admin at lists.geeklog.net geeklog-cvs-admin at lists.geeklog.net
Fri Jul 11 16:29:40 EDT 2003


Update of /usr/cvs/geeklog/geeklog-2/lib/A_and_A/server/commands
In directory internal.geeklog.net:/tmp/cvs-serv29048/commands

Added Files:
	AABaseCommand.class.php authenticate.class.php 
	changepassword.class.php changepasswordbyadmin.class.php 
	getusergroups.class.php getuserprivileges.class.php 
	listappgroups.class.php listappprivileges.class.php 
	resetpassword.class.php setuserprivileges.class.php 
Log Message:
These directories/files have been moved here from the gl2 public_html directory in order to make it obvious where the A&A framework is so that individual classes can find other required classes for inclusion.  I've moved index.php to sample.index.php because that page will need to be moved to the gl2 webtree and not access from this directory.


--- NEW FILE: AABaseCommand.class.php ---
<?php


/**
* PEAR XML Tree builder
*/
require_once('/usr/local/lib/php/XML/Tree.php');

/**
* A&A Constants
*/ 
//require_once(dirname(__FILE__) . '/../../common/AAConstants.php');
require_once('/home/tony/geeklog2_main/lib/A_and_A/common/AAConstants.php');

/**
* This is the base command object.  All other command will inherit from
* this class
*
* @access public
* @author Tony Bibbs <tony at tonybibbs.com>
* @package net.geeklog.enterprise.aa.server.command
*
*/
class AABaseCommand {
    /**
    * @access private
    */
    var $_paramIndex = array();

    /**
    * @access private
    */
    var $_paramVals = array();

    /**
    * Constructor.
    *
    * @access public
    * @param string $cmndName Name of this command (pass from command factory)
    *
    */
    function AABaseCommand($cmdName)
    {
        if (!empty($cmdName)) {
            $this->_cmdName = $cmdName;
        }
    }

    /**
    * Builds XML response when an error has occured executing the command
    * for the given application
    *
    * @access public
    * @param object $exception exception object 
    * @param string $appId Application ID
    * @param string $method Method that caused the error
    * @return string XML response
    *
    */
    function getExceptionResponse($exception,$appId,$method)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $tmpNode = &$root->addChild(RESULT_TAG, $exception->message, array('value'=>$exception->exception,'method'=>"$method",'AppId'=>"$appId"));         

        return $tree->get();
    }

    /**
    * Returns XML response for given application ID.  This is used in a non-exception
    * state.
    *
    * @access public
    * @param string $appId Application ID
    * @return string XML response
    *
    */
    function getXML($appId)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $tmpNode = &$root->addChild(RESULT_TAG, '', array('value'=>'0','method'=>$this->getMethod(),'AppId'=>$appId));
    
        return $tree->get();
    }

    /**
    * Returns the method this command handles.  This can be done here
    * in the base command because the command factory will know what 
    * command is being called
    *
    * @return   string  Command name
    *
    */
    function getMethod()
    {
        return $this->_cmdName;
    }

    function getParam($paramName)
    {
        $XMLKeys = array_keys($this->_paramIndex);
        if ($paramName == PRIVILEGE_LIST_TAG) {
            if (in_array(strtoupper(PRIVILEGE_TAG), array_keys($this->_paramIndex))) {
                $privIndexes = $this->_paramIndex[strtoupper(PRIVILEGE_TAG)];
                require_once(dirname(__FILE__) . '/../../common/AAPrivilege.class.php');
                $curPriv = new AAPrivilege();
                foreach ($privIndexes as $singleIndex) { 
                    $curPriv->setPrivilegeCode($this->_paramVals[$singleIndex]['attributes']['VALUE']);
                    $curPriv->setPrivilegeDesc($this->_paramVals[$singleIndex]['value']);
                    $privArray[] = $curPriv;
                }
                return $privArray;
            } else {
                trigger_error('no privileges found');
            }
        }
        return $this->_paramVals[$this->_paramIndex[strtoupper($paramName)][0]]['attributes']['VALUE'];
    }

    /**
    * Gets the parsed XML in the form of two arrays, one for indexes,
    * the other for values for those indexes
    *
    * @param    string[]    $index      Array of element names from XML and index into the
    *                                   values array
    * @param    string[]    $vals       Values of XML elements
    *
    */
    function setParameters($index, $vals)
    {
        $this->_paramIndex = $index;
        $this->_paramVals = $vals;
    }
}

?>

--- NEW FILE: authenticate.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs <tony AT geeklog DOT net>
* @package net.geeklog.enterprise.aa.server.command
*
*/
class authenticate extends AABaseCommand {

    /**
    * Starts authenticate calling chain
    *
    * @return   string  XML response string
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user = &$user->authenticate($this->getParam(APPLICATION_ID_TAG), $this->getParam(USER_NAME_TAG), $this->getParam(PASSWORD_TAG));
        if (get_class($user) == 'aaexception') {
            return $this->getExceptionResponse($user, $this->getParam(APPLICATION_ID_TAG), 'Authenticate');
        }
        $responseXML = $this->getXML($user);
        return $responseXML;
    }

    /**
    * Outputs the response XML
    *
    * @param    object      $user   AAServiceUser *or* AAException
    *
    */
    function getXML($user)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';

        $retval = 0;

        $tmpNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'Authenticate','appId'=>$this->getParam('AppId'),'value'=>$retval));
        $tmpNode = &$root->addChild(EMPLOYEE_ID_TAG, $user->getEmpId());
        $tmpNode = &$root->addChild(GROUP_LIST_TAG, '', array('value'=>$this->getParam(APPLICATION_ID_TAG)));
        $groups = $user->getGroups();
        
        foreach($groups as $group) {
            $groupNode = &$tmpNode->addChild(GROUP_TAG,$group->getGroupDesc(),array('id'=>$group->getGroupId(),'logical'=>$group->getGroupLogicalName(),'display'=>htmlspecialchars($group->getGroupDisplayName())));
        }
        
        $tmpNode = &$root->addChild(PRIVILEGE_LIST_TAG, '', array('value'=>$this->getParam(APPLICATION_ID_TAG)));
        $privileges = $user->getPrivileges();
        
        // Check for errors
        if (get_class($privileges) == 'aaexception') {
            return $this->getExceptionResponse($privileges,$this->getParam('AppId'),'Authenticate');
        }
        
        // Build privilege list
        foreach($privileges as $priv) {
            $privNode = &$tmpNode->addChild(PRIVILEGE_TAG,$priv->getPrivilegeDesc(),array('code'=>$priv->getPrivilegeCode()));
        }

        return $tree->get();
    }
}

?>

--- NEW FILE: changepassword.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* Change Password Command
*
* This object changes a user's password
*
* @access public
* @author Tony Bibbs <tony at tonybibbs.com>
* @package net.geeklog.enterprise.aa.server.command
*
*/
class changepassword extends AABaseCommand {

    /**
    * Changes the users's password
    *
    * This will attempt to change the users password and
    * will send an XML response back indicated success or
    * failure.
    *
    * @access public
    * @return string XML response
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(USER_NAME_TAG));
        $user->setPassword($this->getParam(OLD_PASSWORD_TAG));
        $newPassword = $this->getParam(NEW_PASSWORD_TAG);

        $retval = $user->changePassword($newPassword);
        if ($retval) {
            // Some sort of error occurred
            $responseXML =  $this->getExceptionResponse($retval, $user->getAppId(), 'ChangePassword');
            trigger_error($responseXML);
        } else {
            $responseXML = $this->getXML($this->getParam(APPLICATION_ID_TAG));
        }
        return $responseXML; 
    }
}

?>

--- NEW FILE: changepasswordbyadmin.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* Change Password Command
*
* This object changes a user's password
*
* @access public
* @author Tony Bibbs <tony at tonybibbs.com>
* @package net.geeklog.enterprise.aa.server.command
*
*/
class changepasswordbyadmin extends AABaseCommand {

    /**
    * Changes a users's password on behalf of an admin
    *
    * This will attempt to change the users password and
    * will send an XML response back indicated success or
    * failure.
    *
    * @access public
    * @return string XML response
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $userName = $this->getParam(USER_NAME_TAG);
        $newPassword = $this->getParam(NEW_PASSWORD_TAG);

        $retval = $user->changePasswordByAdmin($userName, $newPassword);
        if ($retval) {
            // Some sort of error occurred
            $responseXML =  $this->getExceptionResponse($retval, $user->getAppId(), 'ChangePasswordByAdmin');
        } else {
            $responseXML = $this->getXML($this->getParam(APPLICATION_ID_TAG));
        }
        return $responseXML; 
    }
}

?>

--- NEW FILE: getusergroups.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs
* @package net.geeklog.enterprise.aa.server.command
*
*/
class getusergroups extends AABaseCommand {

    /**
    * Starts authenticate calling chain
    *
    * @return   string  XML response string
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $userName = $this->getParam(USER_NAME_TAG);
        $groupArray = $user->getUserGroups($userName);
        $responseXML = $this->getXML($groupArray, $user->getAppId());
        return $responseXML;
    }

    /**
    * Outputs the response XML
    *
    * @param    object      $user   AAServiceUser *or* AAException
    *
    */
    function getXML($groupArray, $appId)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';
        $retval = 0;
        $tmpNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'GetUserGroups','appId'=>$appId,'value'=>$retval));
        $tmpNode = &$root->addChild(GROUP_LIST_TAG, '', array('appId'=>$this->getParam(APPLICATION_ID_TAG)));
        foreach($groupArray as $group) {
            $groupNode = &$tmpNode->addChild(GROUP_TAG,$priv->getGroupDesc(),array('id'=>$group->getGroupId(),'logical'=>$group->getGroupLogicalName(),'display'=>$group->getGroupDisplayName()));
        }

        return $tree->get();
    }
}

?>

--- NEW FILE: getuserprivileges.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs
* @package net.geeklog.enterprise.aa.server.command
*
*/
class getuserprivileges extends AABaseCommand {

    /**
    * Starts authenticate calling chain
    *
    * @return   string  XML response string
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $userName = $this->getParam(USER_NAME_TAG);
        $privArray = $user->getUserPrivileges($userName);
        $responseXML = $this->getXML($privArray, $user->getAppId());
        return $responseXML;
    }

    /**
    * Outputs the response XML
    *
    * @param    object      $user   AAServiceUser *or* AAException
    *
    */
    function getXML($privArray, $appId)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';
        $retval = 0;
        $tmpNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'GetUserPrivileges','appId'=>$appId,'value'=>$retval));
        $tmpNode = &$root->addChild(PRIVILEGE_LIST_TAG, '', array('appId'=>$this->getParam(APPLICATION_ID_TAG)));
        foreach($privArray as $priv) {
            $privNode = &$tmpNode->addChild(PRIVILEGE_TAG,$priv->getPrivilegeDesc(),array('code'=>$priv->getPrivilegeCode()));
        }

        return $tree->get();
    }
}

?>

--- NEW FILE: listappgroups.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs
* @package net.geeklog.enterprise.aa.server.command
*
*/
class listappgroups extends AABaseCommand {

    /**
    * Starts listappgroups calling chain
    *
    * @return   string  XML response string
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_ID_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $groupArray = $user->listAppGroups();
        if (get_class($groupArray) == 'aaexception') {
            return $this->getExceptionResponse($groupArray, $this->getParam(APPLICATION_ID_TAG), 'ListAppPrivileges');
        }
        $responseXML = $this->getXML($groupArray, $user->getAppId());
        return $responseXML;
    }

    /**
    * Outputs the response XML
    *
    * @param    object      $user   AAServiceUser *or* AAException
    *
    */
    function getXML($groupArray, $appId)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';
        $retval = 0;
        $resultNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'ListAppGroups','appId'=>$appId,'value'=>$retval));
        $groupListNode = &$root->addChild(GROUP_LIST_TAG, '', array('value'=>$this->getParam(APPLICATION_ID_TAG)));        
        foreach ($groupArray as $curGroup) {
            $groupNode = &$groupListNode->addChild(GROUP_TAG,$curGroup->getGroupDesc(),array('id'=>$curGroup->getGroupId(),'logical'=>$curGroup->getGroupLogicalName(),'display'=>htmlspecialchars($curGroup->getGroupDisplayName())));
            $groupPrivArray = $curGroup->getGroupPrivileges();
            $privListNode = &$groupNode->addChild(PRIVILEGE_LIST_TAG, '', array('value'=>$this->getParam(APPLICATION_ID_TAG)));
            foreach ($groupPrivArray as $curPriv) {
                $privNode = &$privListNode->addChild(PRIVILEGE_TAG,$curPriv->getPrivilegeDesc(),array('code'=>$curPriv->getPrivilegeCode()));
            }
        }

        return $tree->get();
    }
}

?>
--- NEW FILE: listappprivileges.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs
* @package net.geeklog.enterprise.aa.server.command
*
*/
class listappprivileges extends AABaseCommand {

    /**
    * Starts authenticate calling chain
    *
    * @return   string  XML response string
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $privArray = $user->listAppPrivileges();
        if (get_class($privArray) == 'aaexception') {
            return $this->getExceptionResponse($privArray, $this->getParam(APPLICATION_ID_TAG), 'ListAppPrivileges');
        }
        $responseXML = $this->getXML($privArray, $user->getAppId());
        return $responseXML;
    }

    /**
    * Outputs the response XML
    *
    * @param    object      $user   AAServiceUser *or* AAException
    *
    */
    function getXML($privArray, $appId)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';
        $retval = 0;
        $tmpNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'ListAppPrivileges','appId'=>$appId,'value'=>$retval));
        $tmpNode = &$root->addChild(PRIVILEGE_LIST_TAG, '', array('appId'=>$this->getParam(APPLICATION_ID_TAG)));
        foreach($privArray as $priv) {
            $privNode = &$tmpNode->addChild(PRIVILEGE_TAG,$priv->getPrivilegeDesc(),array('code'=>$priv->getPrivilegeCode()));
        }

        return $tree->get();
    }
}

?>

--- NEW FILE: resetpassword.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* Reset Password Command
*
* This object initiates a password reset 
*
* @access public
* @author Tony Bibbs <tony at tonybibbs.com>
* @package net.geeklog.enterprise.aa.server.command
*
*/
class resetpassword extends AABaseCommand {

    /**
    * Changes the users's password
    *
    * This will attempt to change the users password and
    * will send an XML response back indicated success or
    * failure.
    *
    * @access public
    * @return string XML response
    *
    */
    function &processRequest()
    {
        $user = new AAServiceUser();
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $userName = $this->getParam(USER_NAME_TAG);

        $newPassword = $user->resetPassword($userName);
        if (get_class($newPassword) == 'aaexception') {
            // Some sort of error occurred
            $responseXML =  $this->getExceptionResponse($newPassword, $user->getAppId(), 'ResetPassword');
            trigger_error($responseXML);
        } else {
            $responseXML = $this->getXML($this->getParam(APPLICATION_ID_TAG), $newPassword);
        }
        return $responseXML; 
    }
    
    function getXML($appId, $newPassword)
    {
        $tree = new XML_Tree;
        $root = &$tree->addRoot(AA_SERVICE_TAG);
        $message = '';

        $retval = 0;

        $tmpNode = &$root->addChild(RESULT_TAG, $message, array('method'=>'ResetPassword','appId'=>$this->getParam('AppId'),'value'=>$retval));
        $tmpNode = &$root->addChild(NEW_PASSWORD_TAG, $newPassword, '');
        
        return $tree->get();
    }
}

?>

--- NEW FILE: setuserprivileges.class.php ---
<?php

require_once(dirname(__FILE__) . '/../AAServiceUser.class.php');

/**
* @author Tony Bibbs
* @package net.geeklog.enterprise.aa.server.command
*
*/
class setuserprivileges extends AABaseCommand {

    /**
    * Starts authenticate calling chain
    *
    * @return   string  XML response string
    *
    */
    function processRequest()
    {
        $user = new AAServiceUser();
        $user->setAppId($this->getParam(APPLICATION_ID_TAG));
        $user->setUserName($this->getParam(ADMIN_USER_NAME_TAG));
        $user->setPassword($this->getParam(ADMIN_PASSWORD_TAG));
        $userName = $this->getParam(USER_NAME_TAG);

        // Get all the privileges, from XML into array
        $privileges = $this->getParam(PRIVILEGE_LIST_TAG);

        $retval = $user->setUserPrivileges($userName, $privileges);

        if ($retval) {
            // error occurred
            $responseXML = $this->getExceptionResponse($retval, $user->getAppId(), $this->getMethod());
        } else {
            $responseXML = $this->getXML($appId);
        }

        return $responseXML;
    }
}

?>





More information about the geeklog-cvs mailing list