]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole.pm
Added user() attribute and get_user() stub.
[maypole.git] / lib / Maypole.pm
index c31798d62ada1b0555a8cb338babed145df71232..087f2b9daae744671f8cf3af72cd4886531edab8 100644 (file)
@@ -38,7 +38,7 @@ The canonical example used in the Maypole documentation is the beer database:
     $config->uri_base("http://localhost/beerdb");
     $config->template_root("/path/to/templates");
     $config->rows_per_page(10);
-    $config->display_tables([qw[beer brewery pub style]]);
+    $config->display_tables([qw/beer brewery pub style/]);
 
     # table relationships
     $config->relationships([
@@ -76,8 +76,8 @@ application. This is the C<BeerDB> package used as an example in the manual.
 
 This needs to first use L<Maypole::Application> which will make your package
 inherit from the appropriate platform driver such as C<Apache::MVC> or
-C<CGI::Maypole>. Then, the driver calls C<setup>.  This sets up the model classes and
-configures your application. The default model class for Maypole uses
+C<CGI::Maypole>. Then, the driver calls C<setup>. This sets up the model classes
+and configures your application. The default model class for Maypole uses
 L<Class::DBI> to map a database to classes, but this can be changed by altering
 configuration (B<before> calling setup.)
 
@@ -199,7 +199,7 @@ __PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
 __PACKAGE__->mk_accessors(
     qw( params query objects model_class template_args output path
         args action template error document_encoding content_type table
-        headers_in headers_out stash session)
+        headers_in headers_out stash session user)
 );
 
 __PACKAGE__->config( Maypole::Config->new() );
@@ -210,7 +210,7 @@ __PACKAGE__->init_done(0);
 
 As a framework, Maypole provides a number of B<hooks> - methods that are
 intended to be overridden. Some of these methods come with useful default
-behaviour, others do nothing by default. Likely hooks include:
+behaviour, others do nothing by default. Hooks include:
 
     Class methods
     -------------
@@ -431,11 +431,13 @@ sub handler : method
     $self->get_request($req);
     $self->parse_location;
     
-    # hook useful for declining static requests e.g. images
+    # hook useful for declining static requests e.g. images, or perhaps for 
+    # sanitizing request parameters
     my $status = $self->start_request_hook;
     return $status unless $status == Maypole::Constants::OK();
     
     $self->session($self->get_session);
+    $self->user($self->get_user);
     
     $status = $self->handler_guts;
     
@@ -690,12 +692,30 @@ sub is_model_applicable
 
 =item get_session
 
+Called immediately after C<start_request_hook()>.
+
+This method should return a session, which will be stored in the request's
+C<session> attribute.
+
 The default method is empty. 
 
 =cut
 
 sub get_session { }
 
+=item get_user
+
+Called immediately after C<get_session>.
+
+This method should return a user, which will be stored in the request's C<user>
+attribute.
+
+The default method is empty.
+
+=cut
+
+sub get_user {}
+
 =item call_authenticate
 
 This method first checks if the relevant model class
@@ -1199,7 +1219,7 @@ calls during processing of a request. This is a brief summary:
            |                        |                  |
            |-----+ init             |                  |
            ||<---+                  |                  |
-           ||                       |     new          |     view_object: e.g
+           ||                       |     new          |     view_object: e.g.
            ||---------------------------------------------> Maypole::View::TT
            |                        |                  |          |
            |                        |                  |          |
@@ -1229,6 +1249,9 @@ calls during processing of a request. This is a brief summary:
             |         ||-----+ get_session         |       |         |
             |         |||<---+                     |       |         |
             |         ||                           |       |         |
+            |         ||-----+ get_user            |       |         |
+            |         |||<---+                     |       |         |
+            |         ||                           |       |         |
             |         ||-----+ handler_guts        |       |         |
             |         |||<---+                     |       |         |
             |         |||     class_of($table)     |       |         |
@@ -1244,14 +1267,14 @@ calls during processing of a request. This is a brief summary:
             |         |||                          |       |         |
             |         |||-----+ additional_data    |       |         |
             |         ||||<---+                    |       |         |
-            |         |||             process      |       |   fetch_objects
-            |         |||--------------------------------->||-----+  |
+            |         |||             process      |       |         |
+            |         |||--------------------------------->||  fetch_objects
+            |         |||                          |       ||-----+  |
             |         |||                          |       |||<---+  |
             |         |||                          |       ||        |
             |         |||                          |       ||   $action
             |         |||                          |       ||-----+  |
-            |         |||                          |       |||<---+  |
-            |         |||                          |       |         |
+            |         |||                          |       |||<---+  |            
             |         |||         process          |       |         |
             |         |||------------------------------------------->|| template
             |         |||                          |       |         ||-----+