[Dancer-users] multiple layouts and login

David Precious davidp at preshweb.co.uk
Wed Aug 4 11:31:44 CEST 2010


On Wednesday 04 August 2010 04:00:37 P Kishor wrote:
> Hi,
> 
> Is it possible to use different layouts for different parts of the
> application, perhaps, for different routes? Right now, it seems, only
> one layout per application is possible via the layout setting in the
> config file.

When calling template, you can optionally specify the layout to use via the 
third param, e.g.:

  template 'page.tt' => { foo => 'bar'}, { layout => 'otherlayout.tt' };

You could probably also manage it by updating the layout setting from a before 
handler, if you want it controlled in one place:

before sub {
    given (request->path) {
        when (m{^/area1}) { layout 'area1.tt'; }
        when (m{^/area2}) { layout 'area2.tt'; }
        default           { layout 'main.tt';  }
    }
}

> Also, I am looking for a tutorial (cookbook recipe, perhaps) on how to
> create an authentication mechanism, one that would let me specify a
> bunch of routes that should be available only after login, redirecting
> the user to a login page.

The cookbook itself contains such an example:

http://search.cpan.org/dist/Dancer/lib/Dancer/Cookbook.pod#Sessions_and_logging_in

Basically, use a before handler to check whether the user is logged in yet; if 
not, and they're requesting a page other than the login page, send them to the 
login page instead.

At some point I'd like to write a few Dancer::Plugin::Auth modules to make 
this even easier; for instance, I could write one which uses PAM to 
authenticate real system users, so you could just 'use 
Dancer::Plugin::Auth::PAM', and anyone with a real user account on the machine 
hosting the app could log in easily.  Similarly, D::P::Auth::IMAP and 
D::P::Auth::LDAP could be useful too.


Cheers

Dave P

-- 
David Precious <davidp at preshweb.co.uk>
http://blog.preshweb.co.uk/    www.preshweb.co.uk/twitter
www.preshweb.co.uk/linkedin    www.preshweb.co.uk/facebook
www.preshweb.co.uk/identica    www.lyricsbadger.co.uk

  "Programming is like sex. One mistake and you have to support 
  it for the rest of your life". (Michael Sinz)


More information about the Dancer-users mailing list