Ark

 view release on metacpan or  search on metacpan

lib/Ark/Plugin/Session/State/URI.pm  view on Meta::CPAN

            $self->log(
                warn => q[Disabled uri_session because the user agent is detected as non mobile]
            );
            $self->uri_session_disabled(1);
            return;
        }
    }

    unless ($self->uri_remove_marker) {
        if (my $sid = $req->param( $self->uri_query )) {
            $self->log( debug => q[Found sessionid "%s" in uri], $sid );

            if ($self->uri_verify_ua) {
                my $session = $self->get_session_data($sid);
                if ($session) {
                    if (($session->{__ua} || '') ne $req->user_agent) {
                        $self->log( debug => q[But user_agent is mismatch, ignore this sessionid] );
                        return;
                    }
                }
            }

            return $self->uri_session_id($sid);
        }
    }

    return;
};

around set_session_id => sub {
    my $next = shift;
    my ($self, $sid) = @_;

    unless ($self->uri_session_disabled) {
        $self->uri_session_id($sid);
    }

    $next->(@_);
};

around remove_session_id => sub {
    my $next = shift;
    my ($self, $sid) = @_;

    unless ($self->uri_session_disabled) {
        $self->session_id(undef);
        $self->uri_remove_marker(1);
        $self->uri_session_id(undef);
    }

    $next->(@_);
};

around finalize_session => sub {
    my $next = shift;
    my ($self, $res) = @_;

    unless ($self->uri_session_disabled) {
        if ($self->uri_verify_ua) {
            # store ua
            if ($self->session_updated) {
                $self->set( __ua => $self->context->request->user_agent );
            }
        }
    }

    $next->(@_);
};

sub BUILD {
    my ($self) = @_;
    
    my $context_class = $self->app->context_class;
    my $role = 'Ark::Plugin::Session::State::URI::ExtendContext';

    return if $context_class->meta->does_role($role);

    $self->ensure_class_loaded($role);
    $role->meta->apply( $context_class->meta );
}

1;



( run in 0.584 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )