ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/ebihara/prj_pnebiz/lib/include/Auth/Container/File.php @ 557

Last change on this file since 557 was 557, checked in by ebihara, 14 years ago

create prj_pnebiz

File size: 6.1 KB
Line 
1<?php
2/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
3
4/**
5 * Storage driver for use against a generic password file
6 *
7 * PHP versions 4 and 5
8 *
9 * LICENSE: This source file is subject to version 3.01 of the PHP license
10 * that is available through the world-wide-web at the following URI:
11 * http://www.php.net/license/3_01.txt.  If you did not receive a copy of
12 * the PHP License and are unable to obtain it through the web, please
13 * send a note to license@php.net so we can mail you a copy immediately.
14 *
15 * @category   Authentication
16 * @package    Auth
17 * @author     Stefan Ekman <stekman@sedata.org>
18 * @author     Martin Jansen <mj@php.net>
19 * @author     Mika Tuupola <tuupola@appelsiini.net>
20 * @author     Michael Wallner <mike@php.net>
21 * @author     Adam Ashley <aashley@php.net>
22 * @copyright  2001-2006 The PHP Group
23 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
24 * @version    CVS: $Id: File.php,v 1.20 2006/03/02 06:53:08 aashley Exp $
25 * @link       http://pear.php.net/package/Auth
26 */
27
28/**
29 * Include PEAR File_Passwd package
30 */
31require_once "File/Passwd.php";
32/**
33 * Include Auth_Container base class
34 */
35require_once "Auth/Container.php";
36/**
37 * Include PEAR package for error handling
38 */
39require_once "PEAR.php";
40
41/**
42 * Storage driver for fetching login data from an encrypted password file.
43 *
44 * This storage container can handle CVS pserver style passwd files.
45 *
46 * @category   Authentication
47 * @package    Auth
48 * @author     Stefan Ekman <stekman@sedata.org>
49 * @author     Martin Jansen <mj@php.net>
50 * @author     Mika Tuupola <tuupola@appelsiini.net>
51 * @author     Michael Wallner <mike@php.net>
52 * @author     Adam Ashley <aashley@php.net>
53 * @copyright  2001-2006 The PHP Group
54 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
55 * @version    Release: 1.3.0  File: $Revision: 1.20 $
56 * @link       http://pear.php.net/package/Auth
57 */
58class Auth_Container_File extends Auth_Container
59{
60
61    // {{{ properties
62
63    /**
64     * Path to passwd file
65     *
66     * @var string
67     */
68    var $pwfile = '';
69
70    // }}}
71    // {{{ Auth_Container_File() [constructor]
72
73    /**
74     * Constructor of the container class
75     *
76     * @param  string $filename             path to passwd file
77     * @return object Auth_Container_File   new Auth_Container_File object
78     */
79    function Auth_Container_File($filename) {
80        // Only file is a valid option here
81        if(is_array($filename)) {
82            $filename = $filename['file'];
83        }
84        $this->pwfile = $filename;
85    }
86
87    // }}}
88    // {{{ fetchData()
89
90    /**
91     * Authenticate an user
92     *
93     * @param   string  username
94     * @param   string  password
95     * @return  mixed   boolean|PEAR_Error
96     */
97    function fetchData($user, $pass)
98    {
99        return File_Passwd::staticAuth('Cvs', $this->pwfile, $user, $pass);
100    }
101
102    // }}}
103    // {{{ listUsers()
104   
105    /**
106     * List all available users
107     *
108     * @return   array
109     */
110    function listUsers()
111    {
112        $pw_obj = &$this->_load();
113        if (PEAR::isError($pw_obj)) {
114            return array();
115        }
116
117        $users  = $pw_obj->listUser();
118        if (!is_array($users)) {
119            return array();
120        }
121
122        foreach ($users as $key => $value) {
123            $retVal[] = array("username" => $key, 
124                              "password" => $value['passwd'],
125                              "cvsuser"  => $value['system']);
126        }
127
128        return $retVal;
129    }
130
131    // }}}
132    // {{{ addUser()
133
134    /**
135     * Add a new user to the storage container
136     *
137     * @param string username
138     * @param string password
139     * @param mixed  CVS username
140     *
141     * @return boolean
142     */
143    function addUser($user, $pass, $additional='')
144    {
145        $cvs = (string) (is_array($additional) && isset($additional['cvsuser'])) ? 
146               $additional['cvsuser'] : $additional;
147
148        $pw_obj = &$this->_load();
149        if (PEAR::isError($pw_obj)) {
150            return false;
151        }
152       
153        $res = $pw_obj->addUser($user, $pass, $cvs);
154        if (PEAR::isError($res)) {
155            return false;
156        }
157       
158        $res = $pw_obj->save();
159        if (PEAR::isError($res)) {
160            return false;
161        }
162       
163        return true;
164    }
165
166    // }}}
167    // {{{ removeUser()
168
169    /**
170     * Remove user from the storage container
171     *
172     * @param   string  Username
173     * @return  boolean
174     */
175    function removeUser($user)
176    {
177        $pw_obj = &$this->_load();
178        if (PEAR::isError($pw_obj)) {
179            return false;
180        }
181       
182        $res = $pw_obj->delUser($user);
183        if (PEAR::isError($res)) {
184            return false;
185        }
186       
187        $res = $pw_obj->save();
188        if (PEAR::isError($res)) {
189            return false;
190        }
191       
192        return true;
193    }
194
195    // }}}
196    // {{{ changePassword()
197
198    /**
199     * Change password for user in the storage container
200     *
201     * @param string Username
202     * @param string The new password
203     */
204    function changePassword($username, $password)
205    {
206        $pw_obj = &$this->_load();
207        if (PEAR::isError($pw_obj)) {
208            return false;
209        }
210       
211        $res = $pw_obj->changePasswd($username, $password);
212        if (PEAR::isError($res)) {
213            return false;
214        }
215       
216        $res = $pw_obj->save();
217        if (PEAR::isError($res)) {
218            return false;
219        }
220       
221        return true;
222    }
223
224    // }}}
225    // {{{ _load()
226   
227    /**
228     * Load and initialize the File_Passwd object
229     *
230     * @return  object  File_Passwd_Cvs|PEAR_Error
231     */
232    function &_load()
233    {
234        static $pw_obj;
235       
236        if (!isset($pw_obj)) {
237            $pw_obj = File_Passwd::factory('Cvs');
238            if (PEAR::isError($pw_obj)) {
239                return $pw_obj;
240            }
241           
242            $pw_obj->setFile($this->pwfile);
243           
244            $res = $pw_obj->load();
245            if (PEAR::isError($res)) {
246                return $res;
247            }
248        }
249       
250        return $pw_obj;
251    }
252
253    // }}}
254
255}
256?>
Note: See TracBrowser for help on using the repository browser.