Skip to content

Instantly share code, notes, and snippets.

@yko
Created January 4, 2011 10:11
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 yko/764609 to your computer and use it in GitHub Desktop.
Save yko/764609 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use Mojolicious::Lite;
app->secret("Ololo!!!!2323");
get '/' => 'index';
get '/login' => sub {
my $c = shift;
return unless my $redirect = $c->flash('redirect');
$c->flash(redirect => $redirect);
} => 'login' ;
post '/login' => sub {
my $c = shift;
my $redirect = $c->flash('redirect') || '/';
if (!$c->param('user') or $c->param('user') ne 'foo') {
$c->flash(redirect => $redirect);
return $c->redirect_to('login');
}
$c->session(user => 1);
$c->redirect_to($redirect);
};
under sub {
my $c = shift;
unless ($c->session('user')) {
$c->flash(redirect => $c->req->url->to_abs->path);
$c->redirect_to('/login');
return;
}
return 1;
};
get '/secure' => 'secure';
app->start;
__DATA__
@@ login.html.ep
Please login:
<%= form_for '/login' => (method => 'POST') => begin %>
<%= input_tag 'user' %>
<%= submit_button %>
<% end %>
@@ index.html.ep
<%= link_to 'secure area' => '/secure' %>
@@ secure.html.ep
Wow! Reached secure area!
@@ layouts/default.html.ep
<!doctype html><html>
<head><title>Welcome!</title></head>
<body><%== content %></body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment