Adding backwards compatibility for DBIC style session variables
Jay Kuri [Sun, 2 Mar 2008 23:03:20 +0000 (23:03 +0000)]
lib/Catalyst/Authentication/Store/DBIx/Class/User.pm

index 8810514..239b022 100644 (file)
@@ -137,6 +137,10 @@ sub for_session {
     my $self = shift;
     
     #return $self->get($self->config->{'id_field'});
+    
+    #my $frozenuser = $self->_user->result_source->schema->freeze( $self->_user );
+    #return $frozenuser;
+    
     my %userdata = $self->_user->get_columns();
     return \%userdata;
 }
@@ -144,14 +148,30 @@ sub for_session {
 sub from_session {
     my ($self, $frozenuser, $c) = @_;
     
-    ## if use_userdata_from_session is defined in the config, we fill in the user data from the session.
-    if (exists($self->config->{'use_userdata_from_session'}) && $self->config->{'use_userdata_from_session'} != 0) {
+    #my $obj = $self->resultset->result_source->schema->thaw( $frozenuser );
+    #$self->_user($obj);
+    
+    #if (!exists($self->config->{'use_userdata_from_session'}) || $self->config->{'use_userdata_from_session'} == 0) {
+#        $self->_user->discard_changes();
+#    }
+#    
+#    return $self;
+#    
+## if use_userdata_from_session is defined in the config, we fill in the user data from the session.
+    if (exists($self->config->{'use_userdata_from_session'}) && $self->config->{'use_userdata_from_session'} != 0)
+    {
         my $obj = $self->resultset->new_result({ %$frozenuser });
         $obj->in_storage(1);
         $self->_user($obj);
         return $self;
     } else {
-        return $self->load( { $self->config->{'id_field'} => $frozenuser->{$self->config->{'id_field'}} }, $c);
+        my $id;
+        if (ref($frozenuser) eq 'HASH') {
+            $id = $frozenuser->{$self->config->{'id_field'}};
+        } else {
+            $id = $frozenuser;
+        }
+        return $self->load( { $self->config->{'id_field'} => $id }, $c);
     }
 }