[Jifty-commit] r1228 - in jifty/trunk: lib/Jifty

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Jun 8 18:31:35 EDT 2006


Author: jesse
Date: Thu Jun  8 18:31:33 2006
New Revision: 1228

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/Web.pm

Log:
 r12415 at pinglin:  jesse | 2006-06-08 18:29:05 -0400
 * Cache the current_user in Jifty::Web


Modified: jifty/trunk/lib/Jifty/Web.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web.pm	(original)
+++ jifty/trunk/lib/Jifty/Web.pm	Thu Jun  8 18:31:33 2006
@@ -21,7 +21,7 @@
 use vars qw/$SERIAL/;
 
 __PACKAGE__->mk_accessors(
-    qw(next_page request response session temporary_current_user)
+    qw(next_page request response session temporary_current_user _current_user)
 );
 
 __PACKAGE__->mk_classdata($_)
@@ -160,21 +160,36 @@
 sub current_user {
     my $self = shift;
     if (@_) {
-        my $user = shift;
-        $self->session->set('user_id'  => $user ? $user->id : undef);
-        $self->session->set('user_ref' => $user ? ref $user->user_object : undef);
+        my $currentuser_obj = shift;
+        $self->session->set(
+            'user_id' => $currentuser_obj ? $currentuser_obj->id : undef );
+        $self->session->set( 'user_ref' => $currentuser_obj
+            ? ref $currentuser_obj->user_object
+            : undef );
+        $self->_current_user( $currentuser_obj || undef );
     }
-    if (defined $self->temporary_current_user) {
+
+    if ( defined $self->temporary_current_user ) {
         return $self->temporary_current_user;
-    } elsif (my $id = $self->session->get('user_id')) {
-        my $object = (Jifty->config->framework('ApplicationClass')."::CurrentUser")->new();
-        my $user = $self->session->get('user_ref')->new( current_user => $object );
+    } elsif ( defined $self->_current_user ) {
+        return $self->_current_user;
+
+    } elsif ( my $id = $self->session->get('user_id') ) {
+        my $object = (
+            Jifty->config->framework('ApplicationClass') . "::CurrentUser" )
+            ->new();
+        my $user
+            = $self->session->get('user_ref')->new( current_user => $object );
         $user->load_by_cols( id => $id );
         $object->user_object($user);
+        $self->_current_user($object);
         return $object;
     } else {
-        my $object = (Jifty->config->framework('ApplicationClass')."::CurrentUser")->new();
+        my $object = (
+            Jifty->config->framework('ApplicationClass') . "::CurrentUser" )
+            ->new();
         $object->is_superuser(1) if Jifty->config->framework('AdminMode');
+        $self->_current_user($object);
         return ($object);
     }
 }


More information about the Jifty-commit mailing list