- new()
-
$db = HTTPD::RealmManager->new(-realm => $realm_def,
-writable => 1,
-mode => 0644,
-server => 'ncsa');
The new() class method creates a new connection to the
database indicated by the indicated HTTPD::RealmDef object. Ordinarily
it will be more convenient to use the open() method (below) or
HTTPD::RealmDef::connect(). Only the -realm argument is
mandatory. The others are optional and will default to reasonable
values.
If successful, the function result is an HTTPD::RealmManager
object, which you can treat as a handle to the database.
Arguments:
-realm Realm definition. See HTTPD::Realm(3).
-writable If true, open database for writing.
-mode Override file creation mode.
-server Override server type.
- open()
-
$db = HTTPD::RealmManager->open(-realm => 'subscribers',
-config_file => '/home/httpd/conf/realms.conf',
-writable => 1,
-mode => 0644,
-server => 'ncsa');
The open() class method creates a new connection to the
database given the indicated configuration file and realm name.
Internally it first creates an HTTPD::Realm object, then queries it for
the named realm, passing this result to new(). This is probably
the easiest way to create a new connection.
Only the -realm and -config_file arguments are mandatory. The
others are optional and will default to reasonable values.
If successful, the function result is an HTTPD::RealmManager
object, which you can treat as a handle to the database.
Arguments:
-config_file Path to realm configuration file. See HTTPD::Realm(3).
-realm Realm name.
-writable If true, open database for writing.
-config An alias for -config_file.
-mode Override file creation mode.
-server Override server type.
- close()
-
$db->close()
When you are done with the database you should close()
it. This will commit changes and tidy up.
- users()
-
@users = $db->users();
Return all users known to this database as a (potentially very
long) list.
- groups()
-
@groups = $db->groups()
Return all groups known to this database as a (potentially
very long) list.
- group()
-
@groups = $db->group(-user=>'username');
$boolean = $db->group(-user=>'username',-group=>'groupname');
This method returns information about the groups that a user
belongs to. Called with the name of the user only, it returns a list of
all the groups the user is a member of. Called with both a user and a
group name, it returns a boolean value indicating whether the user
belongs to the group.
Arguments:
-user Name of the user
-group Name of the group
-name An alias for -user
-grp An alias for -group
You can also call this method with the positional parameters
(user,group), as in:
@groups = $db->group('username');
- match_group()
-
$boolean = $db->match_group(-user=>'username',-group=>'groupname');
This method is identical to the group() function,
except that it requires a group name to be provided.
- passwd()
-
$password = $db->passwd(-user=>'username');
$boolean = $db->passwd(-user=>'username',-password=>'password');
Called with a user name this method returns his
encrypted password. Called with a user name and an
unencrypted password, this routine returns a boolean indicating
whether this password matches the stored password.
Arguments:
-user Name of the user
-password Password to check against (optional)
-name Alias for -user
-passwd Alias for -password
You can also call this routine using positional arguments,
where the first argument is the user name and the second is the password
to try:
print "You're OK" if $db->password('Fred','Open sesame');
- password()
-
$password = $db->password(-user=>'username');
$boolean = $db->password(-user=>'username',-password=>'password');
An alias for passwd(), just to make things
interesting.
- match_passwd()
-
$boolean = $db->match_passwd(-user=>'username',-password=>'password');
This method is identical to the two-argument form of
passwd(), except that it requires a trial password to be
provided.
- match()
-
$boolean = $db->match(-user=>'username',-password=>'password');
This method is an alias for match_passwd(), just to
make things interesting.
- get_fields()
-
$fields = $db->get_fields(-user=>'username',
-fields=>\@list_of_fields);
The user database can contain additional information about the
user in the form of name/value pairs. This method provides access to
these "additional fields."
get_fields() accepts a user name and optionally a list
of the fields to retrieve. If no field list is provided, it will
retrieve all fields defined in the security realm configuration file
(see HTTPD::Realm (3)). In practice, it is rarely necessary to limit the
fields that are retrieved unless you are accessing a SQL database table
containing an unusually large number of fields.
Arguments:
-user Name of user
-fields List reference to fields to retrieve (optional)
-name Alias for -user
-field Alias for -fields
The return value is a hash reference. You can retrieve the
actual values like this:
$fields = $db->get_fields(-user=>'fred');
print $fields->{'Full_Name'};
- set_passwd()
-
$resultcode = $db->set_passwd(-user=>'username',
-password=>'password',
-fields=>\%extra_fields);
set_passwd() sets the user's password and/or additional
field information. If the user does not already exist in the database,
he is created. The method requires the username and one or more of the
new password and a hash reference to additional user fields. If either
the password or the additional fields are absent, they will be
unchanged.
When setting field values, the old and new values are merged.
To delete a previous field value, you must explicitly set it to undef in
the hash reference. Otherwise the previous value will be retained.
A result code of true indicates a successful update. The
method will fail unless the database is opened for writing.
Arguments:
-user Name of the user to update
-password New password
-fields Hash ref to the fields to update
-name Alias for -user
-passwd Alias for -password
-gcos Alias for -fields
- set_password()
-
$resultcode = $db->set_password(-user=>'username',
-password=>'password',
-fields=>\%extra_fields);
This is an alias for set_passwd(), just to make life
interesting.
- set_fields()
-
$resultcode = $db->set_fields(-user=>'username',
-fields=>\%extra_fields);
set_fields() allows you to adjust the extra field
information about the designated user. Its functionality is identical to
set_passwd(), but the name is a little more appropriate. This
method requires a user name and a hash reference containing new field
values.
When setting field values, the old and new values are merged.
To delete a previous field value, you must explicitly set it to undef in
the hash reference. Otherwise the previous value will be retained.
Arguments:
-user Name of the user to update
-fields Hash ref to the fields to update
-name Alias for -user
-gcos Alias for -fields
A true result code indicates that the database was
successfully updated. The database must be writable for this method to
succeed.
- set_group()
-
$resultcode = $db->set_group(-user=>'username',
-group=>\@list_of_groups);
This method allows you to set the list of groups that a user
belongs to without changing any other information about him or her. It
expects a user name and a list reference pointing to the groups to
assign the user to. The user will be removed from any groups he
previously participated in.
Arguments:
-user Name of the user to update
-group List of groups to assign user to
-name Alias for -user
-grp Alias for -group
A true result code indicates that the database was
successfully updated. The database must be writable for this method to
succeed.
- delete_user()
-
$resultcode = $db->delete_user(-user=>'username');
Delete the user and all his associated information from the
database. If there are any empty groups after this deletion, they are
removed as well. This operation is irreversible.
Arguments:
-user Name of the user to remove
-name Alias for -user
A true result code indicates that the database was
successfully updated. The database must be writable for this method to
succeed.
You may also call this method with a single positional
argument:
$resultcode = $db->delete_user('username');
- delete_group()
-
$resultcode = $db->delete_group(-group=>'groupname');
Delete the group from the database. Users who participate in
the deleted group are not deleted. However, they may find
themselves orphaned (not participating in any groups).
Arguments:
-group Name of the user to remove
-grp Alias for -group
A true result code indicates that the database was
successfully updated. The database must be writable for this method to
succeed.
You may also call this method with a single positional
argument:
$resultcode = $db->delete_group('groupname');
- errstr()
-
$error = $db->errstr();
This method returns a string describing the last error
encountered by RealmManager.pm. It is not reset by successful function
calls, so its contents are only valid after a method returns a false
result code.