Docs for Text::Tradition::User
[scpubgit/stemmatology.git] / lib / Text / Tradition / UserStore.pm
CommitLineData
2006bd3f 1package Text::Tradition::UserStore;
2
3use strict;
4use warnings;
5
6use Moose;
7use KiokuX::User::Util qw(crypt_password);
8
d1ba091f 9extends 'KiokuX::Model';
10
2006bd3f 11use Text::Tradition::User;
2006bd3f 12
ef02228c 13has MIN_PASS_LEN => ( is => 'ro', isa => 'Num', default => sub { 8 } );
14
d1ba091f 15# has 'directory' => (
16# is => 'rw',
17# isa => 'KiokuX::Model',
18# handles => []
19# );
2006bd3f 20
ef02228c 21## To die or not to die, on error, this is the question.
2006bd3f 22sub add_user {
ef02228c 23 my ($self, $userinfo) = @_;
24 my $username = $userinfo->{username};
25 my $password = $userinfo->{password};
26
27 return unless $username && $self->validate_password($password);
2006bd3f 28
29 my $user = Text::Tradition::User->new(
30 id => $username,
31 password => crypt_password($password),
32 );
33
d1ba091f 34 my $scope = $self->new_scope;
35 $self->store($user->kiokudb_object_id, $user);
2006bd3f 36
37 return $user;
38}
39
40sub find_user {
d1ba091f 41 my ($self, $userinfo) = @_;
42 my $username = $userinfo->{username};
2006bd3f 43
d1ba091f 44 return $self->lookup(Text::Tradition::User->id_for_user($username));
2006bd3f 45
46}
47
ef02228c 48sub modify_user {
49 my ($self, $userinfo) = @_;
50 my $username = $userinfo->{username};
51 my $password = $userinfo->{password};
52
53 return unless $username && $self->validate_password($password);
54
55 my $user = $self->find_user({ username => $username });
56 return unless $user;
57
58 my $scope = $self->new_scope;
59 $user->password(crypt_password($password));
60
61 $self->update($user);
62
63 return $user;
64}
65
66sub delete_user {
67}
68
69
70sub validate_password {
71 my ($self, $password) = @_;
72
73 return if !$password;
74 return if length($password) < $self->MIN_PASS_LEN;
75
76 return 1;
77}
78
2006bd3f 791;