Skip to content

Instantly share code, notes, and snippets.

Created September 21, 2011 07:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/1231471 to your computer and use it in GitHub Desktop.
Save anonymous/1231471 to your computer and use it in GitHub Desktop.
use Mojolicious::Lite;
helper user => sub {
my $self = shift;
$self->stash( user => shift ) if @_;
return $self->stash( 'user' );
};
helper parse_user_info => sub {
my $self = shift;
my $userinfo = $self->req->url->to_abs->userinfo
or return;
return split /:/, $userinfo;
};
helper send_basic_auth => sub {
my $self = shift;
$self->res->code(401);
$self->res->headers->www_authenticate("Basic realm=testing");
$self->rendered;
return;
};
under sub { # make sure all users have a username
my $self = shift;
# grab the username or send a autentication prompt
my ($username) = $self->parse_user_info
or return $self->send_basic_auth;
return $self->user( $username ); # store the user for later
};
get '/' => sub {
my $self = shift;
$self->render( text => 'Hello '.$self->user );
};
# only user 'mike' has access to /private section
chain '/private' => sub { return shift->user eq 'mike'; };
# /private/salute
get 'salute' => sub { shift->render(text => 'We salute you Mike'); };
# no longer under /private
unchain;
# /bye
get '/bye' => sub { shift->render( text => 'Goodbye!' ); };
app->start;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment