Hatena::Groupcatalyst

masaki@catalyst RSSフィード

Fork me on GitHub
 | 

2007-12-03

Authentication 0.10002 / Store::DBIx::Class 0.10 で auto_create_user するパッチ

| 19:06 |  Authentication 0.10002 / Store::DBIx::Class 0.10 で auto_create_user するパッチ - masaki@catalyst を含むブックマーク はてなブックマーク -  Authentication 0.10002 / Store::DBIx::Class 0.10 で auto_create_user するパッチ - masaki@catalyst  Authentication 0.10002 / Store::DBIx::Class 0.10 で auto_create_user するパッチ - masaki@catalyst のブックマークコメント

書いてたけど Authentication 0.10003 Realm でサポートされるみたいだから,もう必要ないかな.一応放流.

Store::DBIx::Class::User の load() で対応させた.

--- lib/Catalyst/Plugin/Authentication/Store/DBIx/Class/User.pm.orig	2007-07-08 11:50:43.000000000 +0900
+++ lib/Catalyst/Plugin/Authentication/Store/DBIx/Class/User.pm	2007-11-12 15:33:12.000000000 +0900
@@ -54,20 +54,15 @@
 sub load {
     my ($self, $authinfo, $c) = @_;
     
-    my $dbix_class_config = 0;
-    
-    if (exists($authinfo->{'dbix_class'})) {
-        $authinfo = $authinfo->{'dbix_class'};
-        $dbix_class_config = 1;
-    }
+    my $dbix_class_config = $authinfo->{'dbix_class'} || {};
     
     ## User can provide an arrayref containing the arguments to search on the user class.
     ## or even provide a prepared resultset, allowing maximum flexibility for user retreival.
     ## these options are only available when using the dbix_class authinfo hash. 
-    if ($dbix_class_config && exists($authinfo->{'resultset'})) {
-        $self->_user($authinfo->{'resultset'}->first);
-    } elsif ($dbix_class_config && exists($authinfo->{'searchargs'})) {
-        $self->_user($self->resultset->search(@{$authinfo->{'searchargs'}})->first);    
+    if ($dbix_class_config->{'resultset'}) {
+        $self->_user($dbix_class_config->{'resultset'}->first);
+    } elsif ($dbix_class_config->{'searchargs'}) {
+        $self->_user($self->resultset->search(@{$dbix_class_config->{'searchargs'}})->first);    
     } else {
         ## merge the ignore fields array into a hash - so we can do an easy check while building the query
         my %ignorefields = map { $_ => 1} @{$self->config->{'ignore_fields_in_find'}};                                    
@@ -82,8 +77,16 @@
         $self->_user($self->resultset->search($searchargs)->first);
     }
 
+    my $id = $authinfo->{$self->config->{'id_field'}};
     if ($self->get_object) {
+        if ($self->config->{'auto_update_user'}) {
+            $self->get_object->auto_update($id, $authinfo, $c);
+        }
         return $self;
+    } elsif ($self->config->{'auto_create_user'}) {
+        my $rs = $dbix_class_config->{'resultset'} || $self->resultset;
+        $rs->auto_create($id, $authinfo, $c);
+        return $self->load($authinfo, $c);
     } else {
         return undef;
     }

Catalyst::Plugin::Authentication 0.10003 release

| 16:31 | Catalyst::Plugin::Authentication 0.10003 release - masaki@catalyst を含むブックマーク はてなブックマーク - Catalyst::Plugin::Authentication 0.10003 release - masaki@catalyst Catalyst::Plugin::Authentication 0.10003 release - masaki@catalyst のブックマークコメント

http://search.cpan.org/~jayk/Catalyst-Plugin-Authentication-0.10003/

今度は内部の名前空間が変わってる.Catalyst::Authentication::User::Hash とか,::Plugin が抜けた.

新しく Realm 用のクラスが出来て,そこで auto_create_user/auto_update_user 対応してるようだ.

トラックバック - http://catalyst.g.hatena.ne.jp/ikasam_a/20071203
 |