Commit | Line | Data |
2006bd3f |
1 | package Text::Tradition::UserStore; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Moose; |
7 | use KiokuX::User::Util qw(crypt_password); |
8 | |
d1ba091f |
9 | extends 'KiokuX::Model'; |
10 | |
2006bd3f |
11 | use Text::Tradition::User; |
2006bd3f |
12 | |
ef02228c |
13 | has 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 |
22 | sub 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 | |
40 | sub 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 |
48 | sub 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 | |
66 | sub delete_user { |
67 | } |
68 | |
69 | |
70 | sub 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 |
79 | 1; |