1 package NDWeb::Auth::User;
6 use base qw/Catalyst::Authentication::User/;
7 use base qw/Class::Accessor::Fast/;
10 __PACKAGE__->mk_accessors(qw//);
11 __PACKAGE__->mk_ro_accessors(qw/username id css planet _roles/);
29 my ($self, $authinfo, $c) = @_;
33 if (exists $authinfo->{id}){
34 $self->{id} = $dbh->selectrow_array(q{
35 SELECT uid FROM users WHERE lower(username) = lower(?)
36 },undef,$authinfo->{id});
37 }elsif (exists $authinfo->{uid}){
38 $self->{id} = $authinfo->{uid};
45 ($self->{planet},$self->{username},$self->{css}) = $dbh->selectrow_array(q{
46 SELECT planet,username,css FROM users WHERE uid = ?
47 },undef,$self->{id}) or die $dbh->errstr;
52 sub supported_features {
68 ## shortcut if we have already retrieved them
69 if (ref $self->_roles eq 'ARRAY') {
70 return(@{$self->_roles});
72 my $dbh = $self->{c}->model;
74 my $query = $dbh->prepare(q{SELECT role FROM group_roles
75 WHERE gid IN (SELECT gid FROM groupmembers WHERE uid = $1)
76 }) or die $dbh->errstr;
79 $query->execute($self->id);
80 while (my $group = $query->fetchrow_hashref){
81 push @roles,$group->{role};
83 $self->{_roles} = \@roles;
85 return @{$self->_roles};
98 my ($self, $frozenuser, $c) = @_;
100 return $self->load($frozenuser, $c);
104 my ( $self, $password ) = @_;
105 my $query = $self->{c}->model->prepare(q{
106 SELECT uid FROM users WHERE uid = ? AND password = md5(?)
108 $query->execute($self->id,$password);
109 if ($query->rows == 1){
121 Michael Andreen (harv@ruin.nu)