summaryrefslogtreecommitdiff
path: root/includes/pear/Auth/Container/SMBPasswd.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/pear/Auth/Container/SMBPasswd.php')
-rw-r--r--includes/pear/Auth/Container/SMBPasswd.php182
1 files changed, 182 insertions, 0 deletions
diff --git a/includes/pear/Auth/Container/SMBPasswd.php b/includes/pear/Auth/Container/SMBPasswd.php
new file mode 100644
index 0000000..15c3e75
--- /dev/null
+++ b/includes/pear/Auth/Container/SMBPasswd.php
@@ -0,0 +1,182 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
+
+/**
+ * Storage driver for use against Samba password files
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.01 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_01.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Authentication
+ * @package Auth
+ * @author Michael Bretterklieber <michael@bretterklieber.com>
+ * @author Adam Ashley <aashley@php.net>
+ * @copyright 2001-2006 The PHP Group
+ * @license http://www.php.net/license/3_01.txt PHP License 3.01
+ * @version CVS: $Id: SMBPasswd.php 237449 2007-06-12 03:11:27Z aashley $
+ * @link http://pear.php.net/package/Auth
+ * @since File available since Release 1.2.3
+ */
+
+/**
+ * Include PEAR File_SMBPasswd
+ */
+require_once "File/SMBPasswd.php";
+/**
+ * Include Auth_Container Base file
+ */
+require_once "Auth/Container.php";
+/**
+ * Include PEAR class for error handling
+ */
+require_once "PEAR.php";
+
+/**
+ * Storage driver for fetching login data from an SAMBA smbpasswd file.
+ *
+ * This storage container can handle SAMBA smbpasswd files.
+ *
+ * Example:
+ * $a = new Auth("SMBPasswd", '/usr/local/private/smbpasswd');
+ * $a->start();
+ * if ($a->getAuth()) {
+ * printf ("AUTH OK<br>\n");
+ * $a->logout();
+ * }
+ *
+ * @category Authentication
+ * @package Auth
+ * @author Michael Bretterklieber <michael@bretterklieber.com>
+ * @author Adam Ashley <aashley@php.net>
+ * @package Auth
+ * @copyright 2001-2006 The PHP Group
+ * @license http://www.php.net/license/3_01.txt PHP License 3.01
+ * @version Release: @package_version@ File: $Revision: 237449 $
+ * @link http://pear.php.net/package/Auth
+ * @since Class available since Release 1.2.3
+ */
+class Auth_Container_SMBPasswd extends Auth_Container
+{
+
+ // {{{ properties
+
+ /**
+ * File_SMBPasswd object
+ * @var object
+ */
+ var $pwfile;
+
+ // }}}
+
+ // {{{ Auth_Container_SMBPasswd() [constructor]
+
+ /**
+ * Constructor of the container class
+ *
+ * @param $filename string filename for a passwd type file
+ * @return object Returns an error object if something went wrong
+ */
+ function Auth_Container_SMBPasswd($filename)
+ {
+ $this->pwfile = new File_SMBPasswd($filename,0);
+
+ if (!$this->pwfile->load()) {
+ PEAR::raiseError("Error while reading file contents.", 41, PEAR_ERROR_DIE);
+ return;
+ }
+
+ }
+
+ // }}}
+ // {{{ fetchData()
+
+ /**
+ * Get user information from pwfile
+ *
+ * @param string Username
+ * @param string Password
+ * @return boolean
+ */
+ function fetchData($username, $password)
+ {
+ $this->log('Auth_Container_SMBPasswd::fetchData() called.', AUTH_LOG_DEBUG);
+ return $this->pwfile->verifyAccount($username, $password);
+ }
+
+ // }}}
+ // {{{ listUsers()
+
+ function listUsers()
+ {
+ $this->log('Auth_Container_SMBPasswd::fetchData() called.', AUTH_LOG_DEBUG);
+ return $this->pwfile->getAccounts();
+ }
+
+ // }}}
+ // {{{ addUser()
+
+ /**
+ * Add a new user to the storage container
+ *
+ * @param string Username
+ * @param string Password
+ * @param array Additional information
+ *
+ * @return boolean
+ */
+ function addUser($username, $password, $additional = '')
+ {
+ $this->log('Auth_Container_SMBPasswd::addUser() called.', AUTH_LOG_DEBUG);
+ $res = $this->pwfile->addUser($user, $additional['userid'], $pass);
+ if ($res === true) {
+ return $this->pwfile->save();
+ }
+ return $res;
+ }
+
+ // }}}
+ // {{{ removeUser()
+
+ /**
+ * Remove user from the storage container
+ *
+ * @param string Username
+ */
+ function removeUser($username)
+ {
+ $this->log('Auth_Container_SMBPasswd::removeUser() called.', AUTH_LOG_DEBUG);
+ $res = $this->pwfile->delUser($username);
+ if ($res === true) {
+ return $this->pwfile->save();
+ }
+ return $res;
+ }
+
+ // }}}
+ // {{{ changePassword()
+
+ /**
+ * Change password for user in the storage container
+ *
+ * @param string Username
+ * @param string The new password
+ */
+ function changePassword($username, $password)
+ {
+ $this->log('Auth_Container_SMBPasswd::changePassword() called.', AUTH_LOG_DEBUG);
+ $res = $this->pwfile->modUser($username, '', $password);
+ if ($res === true) {
+ return $this->pwfile->save();
+ }
+ return $res;
+ }
+
+ // }}}
+
+}
+?>