The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Login plugin
package Login::Dispatcher;

on 'login'    => 'login';
on 'logout'   => 'logout';
on 'signup'   => 'a_moment';

after 'logout' => run {...clear_cookie...};
before 'login' => run {...check_for_already_logged_in...};

# RequiredAuth plugin
package RequiredAuth::Dispatcher;

before '*' => [
    plugin Login,
    run { ...check for auth, otherwise 401...  }
],

on 'auth_required' => run {...}

# Dummy application
package Dummy::Dispatcher;

## implicit from config.yml:
##    plugins:
##       - RequireAuth:
##           prefix: /blah
##           args: vals
##       - Login:
##           prefix: /blah
##           args: vals
# trigger RequireAuth;

after plugins 'Login::*' => [
    on "logout" => show '/my/logout',
]

before plugins '*' => [
    on "logout" => show '/my/logout',
]

on 'logout' => [
    show '/my/logout',
    plugin Login,
]

after 'login' => [
]
after PUT 'login' => [
]

after plugin Login => (
before plugin Login => (
    on "logout" => show '/my/logout',
);


on 'logout' => [
    before_plugin Login,
        show '/my/logout',
]