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 )