X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fchatty;a=blobdiff_plain;f=lib%2FChatty%2FController%2FRoot.pm;fp=lib%2FChatty%2FController%2FRoot.pm;h=f3e5030b2a82b34e825482da718b92d6eecc8f2a;hp=644a861a2d074191130835ef6296a4a3b4d1d7ac;hb=9b343fd3d0f46473e2f5804ac09caeaed95e4283;hpb=20e8ae6917f72f3c381ad9d3aca656a99bd4cd7f diff --git a/lib/Chatty/Controller/Root.pm b/lib/Chatty/Controller/Root.pm index 644a861..f3e5030 100644 --- a/lib/Chatty/Controller/Root.pm +++ b/lib/Chatty/Controller/Root.pm @@ -30,6 +30,48 @@ sub index :Path :Args(0) { my ( $self, $c ) = @_; } +=head2 login + +Allow a user to login. + +=cut + +sub login :Local :Args(0) { + my ($self, $c) = @_; + if ($c->req->method eq 'POST' && exists($c->req->params->{handle})) { + eval { + if ($c->authenticate({ + username => $c->req->params->{handle}, + password => $c->req->params->{password} + })) { + $c->change_session_id; + my $user = $c->user->get('username'); + $c->flash->{message} = "Hi, $user! You are now logged in."; + $c->response->redirect($c->uri_for('/')); + } + else { + $c->flash->{error} = "Log-in failed! Try again, I guess."; + $c->response->redirect($c->uri_for('login')); + } + } + } +} + +=head2 logout + +Log the user out. + +=cut + +sub logout :Local :Args(0) { + my ($self, $c) = @_; + if ($c->user_exists) { + $c->logout; + $c->flash->{message} = "Goodbye! You have been logged out."; + } + $c->response->redirect($c->uri_for('/')); +} + =head2 default Standard 404 error page @@ -37,8 +79,8 @@ Standard 404 error page =cut sub default :Path { - my ( $self, $c ) = @_; - $c->response->body( 'Page not found' ); + my ($self, $c) = @_; + $c->response->body('Page not found.'); $c->response->status(404); }