NAME
CatalystX::Controller::Auth - A config-driven Catalyst authentication controller base class.
VERSION
Version 0.11
SYNOPSIS
This is a Catalyst controller for handling logging in/out and forgotten/changing/resetting passwords.
This controller was essentially born out of HTML::FormHandlerX::Form::Login (which it obviously uses), though that form does not want to become dependant on Catalyst.
See CatalystX::SimpleLogin for an alternative (the plan is for both to merge).
Extend it for your own authentication controller, then modify your config as required.
package MyApp::Controller::Auth;
use Moose;
use namespace::autoclean;
BEGIN { extends 'CatalystX::Controller::Auth'; }
__PACKAGE__->meta->make_immutable;
1;
Configure it as you like ...
<Controller::Auth>
form_handler HTML::FormHandlerX::Form::Login
view TT
model DB::User
login_id_field email
login_id_db_field email
login_template auth/login.tt
change_password_template auth/change-password.tt
forgot_password_template auth/forgot-password.tt
reset_password_template auth/reset-password.tt
forgot_password_email_view Email::Template
forgot_password_email_from "Password Reset" <nobody@example.com>
forgot_password_email_subject Password Reset
forgot_password_email_template_plain reset-password-plain.tt
login_required_message "You need to login."
already_logged_in_message "You are already logged in."
login_successful_message "Logged in!"
logout_successful_message "You have been logged out successfully."
login_failed_message "Bad username or password."
password_changed_message "Password changed."
password_reset_message "Password reset successfully."
forgot_password_id_unknown "Email address not registered."
token_salt 'tgve546vy6yv%^$fghY56VH54& H54&%$uy^5 Y^53U&$u v5ev'
action_after_login /admin/index
action_after_change_password /admin/index
</Controller::Auth>
Override actions as necessary (hopefully not too much, otherwise I have not built this right).
All feedback and patches are always welcome.
CHAINS
base ( mid-point: / )
The controller currently bases off /base
, ie...
sub base :Chained('/base') :PathPart('') :CaptureArgs(0)
Override the base of the chain if you wish to chain off some other mid-point in your own app.
sub base :Chained('/my_base') :PathPart('users') :CaptureArgs(0)
{
my ( $self, $c ) = @_;
$self->next::method( $c );
}
authenticated ( mid-point: / )
Chain off this action to make sure people are logged in.
sub authenticated :Chained('base') :PathPart('') :CaptureArgs(0)
login ( end-point: /login )
Login, redirect if already logged in.
sub login :Chained('base') :PathPart :Args(0)
logout ( end-point: /logout )
Logs out, and redirects back to /login.
sub logout :Chained('base') :PathPart :Args(0)
forgot_password ( end-point: /forgot-password/ )
Send a forgotten password token to reset it.
sub forgot_password :Chained('base') :PathPart('forgot-password') :Args(0)
_send_password_reset_email
Uses Catalyst::View::Email::Template
by default.
reset_password ( end-point: /reset-password/ )
Reset password using a token sent in an email.
sub reset_password :Chained('base') :PathPart('reset-password') :Args(0)
get ( mid-point: /auth/*/ )
Gets a user and puts them in the stash.
sub get :Chained('base') :PathPart('auth') :CaptureArgs(1)
change_password ( end-point: /auth/*/change-password/ )
Change your password.
sub change_password :Chained('get') :PathPart('change-password') :Args(0)
TODO
Damn more tests!
AUTHOR
Rob Brown, <rob at intelcompute.com>
BUGS
Please report any bugs or feature requests to bug-catalystx-controller-auth at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-Controller-Auth. I will be notified, and then you will automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc CatalystX::Controller::Auth
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=CatalystX-Controller-Auth
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
t0m: Tomas Doran <bobtfish@bobtfish.net>
LICENSE AND COPYRIGHT
Copyright 2012 Rob Brown.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.