]> Frank Brehm's Git Trees - books.git/commitdiff
Speichern der Sitzungseinstellungen ermöglicht
authorFrank Brehm <frank@brehm-online.com>
Fri, 19 Dec 2008 14:30:47 +0000 (14:30 +0000)
committerFrank Brehm <frank@brehm-online.com>
Fri, 19 Dec 2008 14:30:47 +0000 (14:30 +0000)
lib/FrBr/Books/Controller/Login.pm
lib/FrBr/Books/Controller/SessionOpts.pm
lib/FrBr/Books/Db/UserAdd.pm
lib/FrBr/Books/Util/User.pm [new file with mode: 0644]

index 45f66ecae5c00619cead63315c039c921dd41319..6443c00ea819d18cd2bda43b925108b716c25586 100644 (file)
@@ -7,6 +7,7 @@ use strict;
 use warnings;
 use base 'Catalyst::Controller';
 use FrBr::Common;
+use FrBr::Books::Util::User;
 
 =head1 NAME
 
@@ -48,6 +49,7 @@ sub index : Private {
         # Attempt to log the user in
         my $rs = $c->model('Schema::Users')->search({ 'login' => $username, 'deleted' => 'n', 'enabled' => 'y' });
         if ($c->authenticate({ 'password' => $password, 'dbix_class' => {  resultset => $rs } })) {
+            restore_user_prefs($c);
             $c->response->redirect( $c->web_path('/') );
             return 1;
         } ## end if ( $c->login( $username, $password ) )
index 5474fa6c0a09b8b181ac2fb285889b21bd6daef3..750612503e494ceeabf2c9c66824a065c26c9006 100644 (file)
@@ -7,6 +7,7 @@ use strict;
 use warnings;
 use base 'Catalyst::Controller';
 use FrBr::Common;
+use FrBr::Books::Util::User;
 
 =head1 NAME
 
@@ -71,6 +72,8 @@ sub index : Private {
         $c->stash->{'list_length'} = $length;
     }
 
+    save_user_prefs($c) if $c->user_exists();
+
 }
 
 #-------------------------------------------------------
index 83aee31ac198c0bcda5dc0a74a84f2669f9239ce..9d97f839f2619a2727b0390b56a20cf4a2fe2e8a 100644 (file)
@@ -11,8 +11,9 @@ use base 'DBIx::Class';
 __PACKAGE__->load_components("Core");
 __PACKAGE__->table("user_add");
 __PACKAGE__->add_columns(
-  "user_id"      => { data_type => "INT",  default_value => undef, is_nullable => 0, size => 10 },
-  "comments"     => { data_type => "TEXT", default_value => undef, is_nullable => 0, size => 65535, },
+  "user_id"  => { data_type => "INT",  default_value => undef, is_nullable => 0, size => 10 },
+  "comments" => { data_type => "TEXT", default_value => undef, is_nullable => 0, size => 65535, },
+  "prefs"    => { data_type => "TEXT", default_value => undef, is_nullable => 0, size => 65535, },
 );
 __PACKAGE__->set_primary_key("user_id");
 
diff --git a/lib/FrBr/Books/Util/User.pm b/lib/FrBr/Books/Util/User.pm
new file mode 100644 (file)
index 0000000..82ab10b
--- /dev/null
@@ -0,0 +1,136 @@
+package FrBr::Books::Util::User;
+
+# $Id$
+# $URL$
+
+use strict;
+use warnings;
+
+use FrBr::Common;
+use YAML;
+
+# Export-Deklarationen
+
+BEGIN {
+
+    use Exporter();
+    our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
+
+    # set the version for version checking
+    $VERSION = 0.1;
+    my ($rev) = '$Revision$' =~ /(\d+)/;
+    $VERSION = sprintf( $VERSION . ".%d", $rev );
+
+    @ISA    = qw(Exporter);
+    @EXPORT = qw(
+        &save_user_prefs
+        &restore_user_prefs
+    );
+
+    #%EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
+
+    # your exported package globals go here,
+    # as well as any optionally exported functions
+    #@EXPORT_OK   = qw($Var1 %Hashit &func3);
+} ## end BEGIN
+
+our @EXPORT_OK;
+
+=head1 NAME
+
+FrBr::Books::Util::User - Modul fuer Funktionen rund um benutzer
+
+=head1 METHODS
+
+=cut
+
+#-----------------------------------------------------------------------------------
+
+=head2 save_user_prefs( $c )
+
+Sichert die Einstellungen eines angemeldeten Benutzers
+
+=cut
+
+sub save_user_prefs {
+
+    my $c = shift;
+    my $K = ( caller(0) )[3] . "(): ";
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    return undef unless $c->user_exists();
+    my $user_id = $c->user->get('user_id');
+    $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
+
+    my $prefs = {};
+
+    $prefs->{'list_length'} = $c->stash->{'list_length'};
+
+    my $dump = Dump($prefs);
+    $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->update( { 'prefs' => $dump } ) ;
+
+    return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 restore_user_prefs( $c )
+
+Holt die Einstellungen aus der Nutzertablle raus und beamt diese in die aktuelle Session
+
+=cut
+
+sub restore_user_prefs {
+
+    my $c = shift;
+    my $K = ( caller(0) )[3] . "(): ";
+    my $k = $c->stash->{'debug_level'} ? $K : '';
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    return undef unless $c->user_exists();
+    my $user_id = $c->user->get('user_id');
+    $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
+
+    my $prefs = undef;
+    my $dump  = undef;
+
+    $dump = $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->first()->prefs();
+
+    return unless $dump;
+    eval {
+        $prefs = Load($dump);
+    };
+    if ( $@ ) {
+        $c->log->warn( $k . "Fehler beim Restore der Nutzereinstellungen: " . $@ );
+        return; 
+    }
+    return unless $prefs;
+
+    if ( $prefs->{'list_length'} ) {
+        $c->stash->{'list_length'} = $prefs->{'list_length'};
+        $c->session->{'list_length'} = $prefs->{'list_length'};
+    }
+
+    return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head1 AUTHOR
+
+Frank Brehm
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__END__
+
+# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :