NAME
Text::Tradition::Directory - a KiokuDB interface for storing and retrieving traditions and their owners
SYNOPSIS
use Text::Tradition::Directory;
my $d = Text::Tradition::Directory->new(
'dsn' => 'dbi:SQLite:mytraditions.db',
'extra_args' => { 'create' => 1 },
);
my $tradition = Text::Tradition->new( @args );
my $stemma = $tradition->add_stemma( dotfile => $dotfile ); # if Analysis module installed
$d->save_tradition( $tradition );
foreach my $id ( $d->traditions ) {
print $d->tradition( $id )->name;
}
## Users:
my $userstore = Text::Tradition::UserStore->new(dsn => 'dbi:SQLite:foo.db');
my $newuser = $userstore->add_user({ username => 'fred',
password => 'somepassword' });
my $fetchuser = $userstore->find_user({ username => 'fred' });
if($fetchuser->check_password('somepassword')) {
## login user or .. whatever
}
my $user = $userstore->deactivate_user({ username => 'fred' });
if(!$user->active) {
## shouldnt be able to login etc
}
DESCRIPTION
Text::Tradition::Directory is an interface for storing and retrieving text traditions and all their data, including an associated stemma hypothesis and a user who has ownership rights to the tradition data. It is an instantiation of a KiokuDB::Model, storing traditions and associated stemmas by UUID.
The Text::Tradition::Directory package also includes the Text::Tradition::User class for user objects, and the Text::Tradition::Ownership role which extends the Text::Tradition class to handle user ownership.
ATTRIBUTES
MIN_PASS_LEN
Constant for the minimum password length when validating passwords, defaults to "8".
METHODS
new
Returns a Directory object.
traditionlist
Returns a hashref mapping of ID => name for all traditions in the directory.
tradition( $id )
Returns the Text::Tradition object of the given ID.
save( $tradition )
Writes the given tradition to the database, returning its ID.
delete( $tradition )
Deletes the given tradition object from the database. WARNING!! Garbage collection does not yet work. Use this sparingly.
USER DIRECTORY METHODS
add_user( $userinfo )
Takes a hashref of username
, password
.
Create a new user object, store in the KiokuDB backend, and return it.
create_user( $userinfo )
Takes a hashref that can either be suitable for add_user (see above) or be a hash of OpenID user information from Credential::OpenID.
find_user( $userinfo )
Takes a hashref of username
or email
, and possibly openIDish results from Net::OpenID::Consumer.
Fetches the user object for the given username and returns it.
modify_user( $userinfo )
Takes a hashref of username
and password
(same as add_user).
Retrieves the user, and updates it with the new information. Username changing is not currently supported.
Returns the updated user object, or undef if not found.
deactivate_user( $userinfo )
Takes a hashref of username
.
Sets the users active
flag to false (0), and sets all traditions assigned to them to non-public, updates the storage and returns the deactivated user.
Returns undef if user not found.
reactivate_user( $userinfo )
Takes a hashref of username
.
Returns the user object if already activated. Activates (sets the active flag to true (1)), updates the storage and returns the user.
Returns undef if the user is not found.
delete_user( $userinfo )
CAUTION: Deletes actual data!
Takes a hashref of username
.
Returns undef if the user doesn't exist.
Removes the user from the store and returns 1.
validate_password( $password )
Takes a password string. Returns true if it is longer than "MIN_PASS_LEN", false otherwise.
Used internally by "add_user".
user_traditionlist( $user )
Returns a tradition list (see specification above) but containing only those traditions visible to the specified user. If $user is the string 'public', returns only publicly-viewable traditions.
LICENSE
This package is free software and is provided "as is" without express or implied warranty. You can redistribute it and/or modify it under the same terms as Perl itself.
AUTHORS
Tara L Andrews <aurum@cpan.org> (initial release)
Shadowcat Systems http://www.scsys.co.uk/ (user functionality; making it all work)