Mojolicious-Plugin-ContextAuth

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/ContextAuth/DB.pm  view on Meta::CPAN

sub user_from_session ($self, $session_id) {
    $self->error('');

    if ( !$session_id ) {
        $self->error( "Need session id" );
        return;
    }

    my $user_id = $self->dbh->db->select(
        corbac_user_sessions => [ qw/user_id/ ],
        {
            session_id      => $session_id,
            session_started => { '>' => time - $self->session_expires },
        },
    );

    my $hash = $user_id->hash;

    if ( !$hash ) {
        $self->error('No session found');
        return;
    }

    my $user = Mojolicious::Plugin::ContextAuth::DB::User->new( dbh => $self->dbh );

    return $user->load(
        $hash->{user_id},
    );
}

sub add ($self, $object, %params) {
    $self->error('');

    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    my $result = $obj->add( %params );
    if ( !$result ) {
        $self->error( $obj->error );
        return;
    }

    return $result;
}

sub delete ($self, $object, $id) {
    $self->error('');
    
    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    my $result = $obj->delete( $id );
    if ( !$result ) {
        $self->error( $obj->error );
        return;
    }

    return $result;
}

sub update ($self, $object, $id, %params) {
    $self->error('');

    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    my $found = $obj->load( $id );
    if ( !$found ) {
        $self->error( $obj->error );
        return;
    }

    my $result = $found->update( %params );
    if ( !$result ) {
        $self->error( $found->error );
        return;
    }

    return $result;
}

sub get ($self, $object, $id) {
    $self->error('');

    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    return $obj->load(
        $id,
    );
}

sub search ($self, $object, %params) {
    $self->error('');

    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    my @rows = $obj->search( %params );
    $self->error( $obj->error );
    
    return @rows;
}

sub object ($self, $object) {
    $self->error('');

    my $class = 'Mojolicious::Plugin::ContextAuth::DB::' . camelize( lc $object );
    my $obj   = $class->new( dbh => $self->dbh );

    return $obj;
}

sub clear_sessions ($self) {
    $self->dbh->db->delete(
        'corbac_user_sessions' => {
            session_started => { '<' => time - $self->session_expires },
    });
}

1;



( run in 0.525 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )