1 package NDWeb::Auth::User;
6 use base qw/Class::Accessor::Fast Catalyst::Authentication::User/;
9 __PACKAGE__->mk_accessors(qw//);
10 __PACKAGE__->mk_ro_accessors(qw/username id css planet _roles/);
28 my ($self, $authinfo, $c) = @_;
32 if (exists $authinfo->{id}){
33 $self->{id} = $dbh->selectrow_array(q{
34 SELECT uid FROM users WHERE username = ?
35 },undef,$authinfo->{id});
36 }elsif (exists $authinfo->{uid}){
37 $self->{id} = $authinfo->{uid};
44 ($self->{planet},$self->{username},$self->{css}) = $dbh->selectrow_array(q{
45 SELECT pid,username,css FROM users WHERE uid = ?
46 },undef,$self->{id}) or die $dbh->errstr;
51 sub supported_features {
67 ## shortcut if we have already retrieved them
68 if (ref $self->_roles eq 'ARRAY') {
69 return(@{$self->_roles});
71 my $dbh = $self->{c}->model;
73 my $query = $dbh->prepare(q{SELECT role FROM group_roles
74 WHERE gid IN (SELECT gid FROM groupmembers WHERE uid = $1)
75 }) or die $dbh->errstr;
78 $query->execute($self->id);
79 while (my $group = $query->fetchrow_hashref){
80 push @roles,$group->{role};
82 $self->{_roles} = \@roles;
84 return @{$self->_roles};
97 my ($self, $frozenuser, $c) = @_;
99 return $self->load($frozenuser, $c);
103 my ( $self, $password ) = @_;
104 my $query = $self->{c}->model->prepare(q{
105 SELECT uid FROM users WHERE uid = $1 AND password = crypt($2,password)
107 $query->execute($self->id,$password);
109 if ($query->rows == 0) {
110 $query = $self->{c}->model->prepare(q{
111 UPDATE users SET password = $2
112 WHERE uid = $1 AND password = md5($2)
115 $query->execute($self->id,$password);
118 if ($query->rows == 1) {
130 Michael Andreen (harv@ruin.nu)