Initial admin_users script, with more tests and additions to userstore for modifying...
[scpubgit/stemmatology.git] / lib / Text / Tradition / UserStore.pm
index 4475986..dbcba48 100644 (file)
@@ -10,14 +10,21 @@ extends 'KiokuX::Model';
 
 use Text::Tradition::User;
 
+has MIN_PASS_LEN => ( is => 'ro', isa => 'Num', default => sub { 8 } );
+
 # has 'directory' => ( 
 #     is => 'rw', 
 #     isa => 'KiokuX::Model',
 #     handles => []
 #     );
 
+## To die or not to die, on error, this is the question.
 sub add_user {
-    my ($self, $username, $password) = @_;
+    my ($self, $userinfo) = @_;
+    my $username = $userinfo->{username};
+    my $password = $userinfo->{password};
+
+    return unless $username && $self->validate_password($password);
 
     my $user = Text::Tradition::User->new(
         id => $username,
@@ -38,4 +45,35 @@ sub find_user {
     
 }
 
+sub modify_user {
+    my ($self, $userinfo) = @_;
+    my $username = $userinfo->{username};
+    my $password = $userinfo->{password};
+
+    return unless $username && $self->validate_password($password);
+
+    my $user = $self->find_user({ username => $username });
+    return unless $user;
+
+    my $scope = $self->new_scope;
+    $user->password(crypt_password($password));
+
+    $self->update($user);
+
+    return $user;
+}
+
+sub delete_user {
+}
+
+
+sub validate_password {
+    my ($self, $password) = @_;
+
+    return if !$password;
+    return if length($password) < $self->MIN_PASS_LEN;
+
+    return 1;
+}
+
 1;