The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package TestApp::Model::UserAuth;
our $VERSION = '0.01';

use base qw/Catalyst::Model/;
use strict;

sub auth {
    my ( $self, $c, $user_info ) = @_;

    my $where;
    if ( exists $user_info->{id} ) {
        $where = { id => $user_info->{id} };
    }
    elsif ( exists $user_info->{username} ) {
        $where = { username => $user_info->{username} };
    }
    else { return; }

    my $user = $c->model('TestApp')->resultset('User')->search($where)->first;

    if ( exists $user_info->{status} and ref $user_info->{status} eq 'ARRAY' ) {
        unless ( grep { $_ eq $user->status } @{ $user_info->{status} } ) {
            return;
        }
    }

=pod
    
    # get user roles
    my $role_rs = $c->model('TestApp')->resultset('UserRole')->search( {
        user => $user->id
    } );
    while (my $r = $role_rs->next) {
        my $role = $c->model('TestApp')->resultset('Role')->find( {
            id => $r->roleid
        } );
#        push @{$user->{roles}}, $role->role;
    }

=cut

    return $user;
}

1;