CatalystX::SimpleLogin::Manual man page on Pidora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Pidora logo
[printable version]

CatalystX::SimpleLoginUsernContributed Perl DCatalystX::SimpleLogin::Manual(3)

NAME
       CatalystX::SimpleLogin::Manual - How to use and customise
       CatalystX::SimpleLogin.

   Tutorial
       We're using a sample application here, to make the instructions a
       little easier. This assumes that you have Catalyst, Catalyst::Devel,
       Template Toolkit, and the Catalyst authentication and session plugins
       installed.

	   catalyst.pl MyApp
	   cd MyApp
	   script/myapp_create.pl view HTML TT

       Edit lib/MyApp.pm and add CatalystX::SimpleLogin,  Authenticate, and
       the Session plugins to the use Catalyst plugin list:

	   use Catalyst qw/-Debug
			   ConfigLoader
			   +CatalystX::SimpleLogin
			   Authentication
			   Session
			   Session::Store::File
			   Session::State::Cookie
			   Static::Simple/;

       Add the following config for authentication, including two sample
       users:

	   __PACKAGE__->config(
	       'Plugin::Authentication' => {
		   default => {
		       credential => {
			   class => 'Password',
			   password_field => 'password',
			   password_type => 'clear'
		       },
		       store => {
			   class => 'Minimal',
			   users => {
			       bob => {
				   password => "bobpw",
			       },
			       william => {
				   password => "billpw",
			       },
			   },
		       },
		   },
	       },
	   );

       Execute " script/myapp_server.pl " and, as part of the debug output,
       you should see:

	   [debug] Loaded Chained actions:
	   .-------------------------------------+--------------------------------------.
	   | Path Spec				 | Private				|
	   +-------------------------------------+--------------------------------------+
	   | /login				 | /login/login				|
	   | /logout				 | /login/logout			|
	   '-------------------------------------+--------------------------------------'

       Go to " localhost:3000 " and you should see the Catalyst welcome
       screen. Go to " localhost:3000/login " and you should get a login
       screen containing username and password text fields, a 'Remember'
       checkbox, and a 'Login' button. Enter 'bob' and 'bobpw'. You should be
       logged in and taken to the welcome screen. If you execute "
       localhost:3000/logout " you will be logged out, and should see this in
       the debug output (the welcome screen will stay the same).

       Now go to " lib/MyApp/Controller/Root.pm " and remove the lines saying:

	   use strict;
	   use warnings;
	   use parent 'Catalyst::Controller';

       and add the following lines:

	   use Moose;
	   use namespace::autoclean;
	   BEGIN { extends 'Catalyst::Controller::ActionRole' }

       Now add a new action to " lib/MyApp/Controller/Root.pm " and include "
       Does('NeedsLogin') " to use the Catalyst ActionRole that is part of
       SimpleLogin:

	   sub hello_user : Local Does('NeedsLogin') {
	       my ( $self, $c ) = @_;
	       $c->res->body('<h2>Hello, user!</h2>');
	   }

       Restart the server and you can see the new action. Go to
       "htp://localhost:3000/hello_user" and you'll get the 'Hello, user!'
       page. Now execute "http://localhost:3000/logout" and try
       "http://localhost:3000/hello_user" again. You will be presented with a
       login screen.

       Authorization

       CatalystX::SimpleLogin also provides /login/required and
       /login/not_required for easy chaining off of for actions which should
       only be available to authenticated users.

	   package MyApp::Controller::Secure;

	   sub setup : Chained('/login/required') PathPart('') CaptureArgs(1) {
	       my ( $self, $c, $id ) = @_;
	       # setup actions for authenticated-user-only access
	       $c->stash->{id} = $id;
	   }

	   sub something_secure : Chained('setup') PathPart Args(0) {
	       my ( $self, $c ) = @_;
	       # only authenticated users will have access to this action
	   }

	   sub open_to_all : Chained('/login/not_required') PathPart Args(0) {
	       my ( $self, $c ) = @_;
	       # this is available to everyone
	   }

       For more fine-grained control, you can use ACL checks to refine access
       control policies. This functionality is provided via
       Catalyst::ActionRole::ACL.  Please consult the ACL documentation for
       steps to setup your application.	 The ACL checks work by allowing you
       to add additional attributes on your actions which control the
       particular role(s) required or allowed.

	   package MyApp;
	   __PACKAGE__->config(
	       'Controller::Login' => {
		   actions => {
		       required => {
			   Does => ['ACL'],
			   AllowedRole => ['admin', 'poweruser'], # ANY of these
			   # RequiresRole => ['extranet'], # ALL of these
			   ACLDetachTo => 'login',
		       },
		   },
	       },
	   );

	   package MyApp::Controller::Foo;
	   BEGIN { extends 'Catalyst::Controller::ActionRole' }

	   sub do_something : Chained('/login/required')
			    : Does('ACL') RequiresRole('createinvoice') ACLDetachTo('/login') {}

       You can also add a message, which will be put into the flash key
       'error_msg'. Add the following to the hello_user action:

	 : LoginRedirectMessage('Please Login to view this Action')

       Now we'll create a Template Toolkit template that can be customized.
       Create a " root/login/login.tt " file with the following lines.

	 [% error_msg %]
	 [% render_login_form %]

       Now edit " lib/MyApp.pm " and add the config shown below to remove the
       'RenderAsTTTemplate' trait, and add 'flash_to_stash' for
       Catalyst::Plugin::Session (to allow the error message to be passed to
       the next request):

	   __PACKAGE__->config(
	       'Plugin::Session' => {
		   flash_to_stash => 1
	       },
	       'Controller::Login' => {
		   traits => ['-RenderAsTTTemplate'],
	       },
	       # Other config..
	   );

       Restart the server and try to view the hello_user page without being
       logged in.  You should be reredireced to the login page with the error
       message displayed at the top.

       You can replace " [% render_login_form %] " with your own html, and
       customize it as you please.

	   <div class="error">[% error_msg %]</div>
	   <form id="login_form" method="post" >
	   <fieldset class="main_fieldset">
	   <div><label class="label" for="username">Username:
	   </label><input type="text" name="username" id="username" value="" />
	   </div>

	   <div><label class="label" for="password">Password: </label>
	   <input type="password" name="password" id="password" value="" />
	   </div>

	   <div><label class="label" for="remember">Remember: </label>
	   <input type="checkbox" name="remember" id="remember" value="1" />
	   </div>

	   <div><input type="submit" name="submit" id="submit" value="Login" />
	   </div>
	   </fieldset></form>

       Or you can customize it using HTML::FormHandler HTML rendering
       features, and the 'login_form_args' config key.

perl v5.14.1			  2011-09-05 CatalystX::SimpleLogin::Manual(3)
[top]

List of man pages available for Pidora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net