return $user;
}
+sub user_exists {
+ my $c = shift;
+ return defined($c->_user);
+}
+
sub save_user_in_session {
my ( $c, $user ) = @_;
Returns the currently logged user or undef if there is none.
+=item user_exists
+
+Whether or not a user is logged in right now.
+
+The reason this method exists is that C<<$c->user>> may needlessly load the
+user from the auth store.
+
+If you're just going to say
+
+ if ( $c->user_user ) {
+ # foo
+ } else {
+ $c->forward("login");
+ }
+
+it should be more efficient than C<<$c->user>> when a user is marked in the session
+but C<<$c->user>> hasn't been called yet.
+
=item logout
Delete the currently logged in user from C<user> and the session.
BEGIN {
eval { require Catalyst::Plugin::Session; require Catalyst::Plugin::Session::State::Cookie };
plan skip_all => "This test needs Catalyst::Plugin::Session and Catalyst::Plugin::Session::State::Cookie installed" if $@;
- plan tests => 12;
+ plan tests => 14;
}
{
my ( $self, $c ) = @_;
ok(!$c->sessionid, "no session id yet");
+ ok(!$c->user_exists, "no user exists");
ok(!$c->user, "no user yet");
ok($c->login( "foo", "s3cr3t" ), "can login with clear");
is( $c->user, $users->{foo}, "user object is in proper place");
my ( $self, $c ) = @_;
ok( $c->sessionid, "session ID was restored" );
+ ok( $c->user_exists, "user exists" );
ok( $c->user, "a user was also restored");
is_deeply( $c->user, $users->{foo}, "restored user is the right one (deep test - store might change identity)" );