User Authentication With patUser (part 2) - All For One, And One For All (
Page 5 of 13 )
patUser also allows you to organize users
into named collections or groups. You might remember, from the discussion of the
patUser database schema in the previous segment of this article, that there are
two tables designed specifically for this task, the "groups" table (which
maintains a list of available groups) and the "usergroups" table (which
maintains a list of which users belong to which group).
Here's the
schema for the "groups" tables:
#
# Table structure for table 'groups'
#
CREATE TABLE groups (
gid int(11) NOT NULL auto_increment,
name varchar(50),
UNIQUE gid (gid)
);
Let's now add a couple of groups to the system,
INSERT INTO groups (gid, name) VALUES (1, 'Accounts');
INSERT INTO groups (gid, name) VALUES (2, 'Administration'); INSERT INTO
groups (gid, name) VALUES (3, 'Operations');
and verify that they have been added correctly via an SQL query:
mysql> SELECT * FROM groups;
+-----+----------------+
| gid | name |
+-----+----------------+
| 1 | Accounts |
| 2 | Administration |
| 3 | Operations |
+-----+----------------+
3 rows in set (0.04 sec)
Obviously, we can perform the same task using patUser's getGroups()
function, which works in much the same way as the getUsers() function discussed
on the previous page. The following code listing demonstrates:
<?php
// include classes
include("../include/patDbc.php");
include("../include/patUser.php");
// initialize database layer
$db = new patMySqlDbc("localhost", "db211", "us111", "secret");
// initialize patUser
$u = new patUser(true);
// connect patUser to database
$u->setAuthDbc($db);
// set tables
$u->setAuthTable("users");
$u->setGroupTable("groups");
// get group list
$list = $u->getGroups(array("gid", "name"));
// uncomment this to see data structure
// print_r($list);
// print as list
echo "<h2>Groups</h2>";
echo "<ul>";
foreach ($list as $l)
{
echo "<li>" . $l['name'] . " (" . $l['gid'] . ")";
}
echo "</ul>";
?>
Here's the output:

Note the
introduction of a new method in the script above, setGroupTable(). This method,
together with the setGroupFields()method, allows you to configure patUser to use
a different set of tables than its default by remapping the default table and
column references to custom values.