X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole.pm;h=e80490141760cfc16844b28e6943cc17d5d8f212;hb=5c199c0e9cd05a00bfc04d9688982979a41f3ee8;hp=6cecb930166c2e323ea60a8c459b39c97bc723ba;hpb=2ad3790d146c6ebc8d690f312a6d525e0146d092;p=maypole.git diff --git a/lib/Maypole.pm b/lib/Maypole.pm index 6cecb93..e804901 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -4,7 +4,7 @@ use attributes (); use UNIVERSAL::require; use strict; use warnings; -our $VERSION = "1.5"; +our $VERSION = "1.8"; __PACKAGE__->mk_classdata($_) for qw( config init_done view_object ); __PACKAGE__->mk_accessors ( qw( ar params query objects model_class args action template )); @@ -63,23 +63,25 @@ sub handler { sub handler_guts { my $r = shift; $r->model_class($r->config->{model}->class_of($r, $r->{table})); - my $status = $r->is_applicable; - if ($status == OK) { - $status = $r->call_authenticate; - if ($r->debug and $status != OK and $status != DECLINED) { - $r->view_object->error($r, - "Got unexpected status $status from calling authentication"); - } - return $status unless $status == OK; - $r->additional_data(); - - $r->model_class->process($r); - } else { - # Otherwise, it's just a plain template. + my $applicable = $r->is_applicable; + unless ($applicable == OK) { + # It's just a plain template delete $r->{model_class}; - $r->{path} =~ s{/}{}; # De-absolutify + $r->{path} =~ s{/$}{}; # De-absolutify $r->template($r->{path}); } + # We authenticate every request, needed for proper session management + my $status = $r->call_authenticate; + if ($r->debug and $status != OK and $status != DECLINED) { + $r->view_object->error($r, + "Got unexpected status $status from calling authentication"); + } + return $status unless $status == OK; + # We run additional_data for every request + $r->additional_data; + if ($applicable == OK) { + $r->model_class->process($r); + } if (!$r->{output}) { # You might want to do it yourself return $r->view_object->process($r); } else { return OK; } @@ -111,8 +113,11 @@ sub is_applicable { sub call_authenticate { my $self = shift; - return $self->model_class->authenticate($self) if - $self->model_class->can("authenticate"); + # Check if we have a model class + if ($self->{model_class}) { + return $self->model_class->authenticate($self) if + $self->model_class->can("authenticate"); + } return $self->authenticate($self); # Interface consistency is a Good Thing } @@ -268,10 +273,18 @@ http://maypole.simon-cozens.org/ L, L. +=head1 MAINTAINER + +Sebastian Riedel, c + =head1 AUTHOR Simon Cozens, C +=head1 THANK YOU + +Jesse Scheidlower, Jody Belka, Markus Ramberg, Mickael Joanne, Simon Flack and all the others who've helped. + =head1 LICENSE You may distribute this code under the same terms as Perl itself. @@ -279,4 +292,3 @@ You may distribute this code under the same terms as Perl itself. =cut 1; -