Start getting rid of login-logout. Home page shows books.
This commit is contained in:
parent
501736f901
commit
4c6d5bf321
21
lib/MyApp.pm
21
lib/MyApp.pm
|
@ -85,27 +85,12 @@ sub startup ($self) {
|
|||
# Home gets an explicit name, else its name is an empty string. A
|
||||
# route's default name seems to come from '/path' with the leading
|
||||
# '/' removed.
|
||||
$r->get('/')->to('home#index')->name('home');
|
||||
$r->get('/<page_number:num>')->to('book#books', page_number => 1)->name('home');
|
||||
$r->get('/<page_number:num>')->to('book#books')->name('books');
|
||||
$r->get('/about')->to('home#about');
|
||||
$r->get('/auth')->to('auth#index');
|
||||
$r->post('/login')->to('auth#login');
|
||||
$r->get('/logout')->to('auth#logout');
|
||||
$r->get('/books/<page_number:num>')->to('book#books')->name('books');
|
||||
$r->get('/authors/<page_number:num>')->to('book#authors')->name('authors');
|
||||
$r->get('/author/<id:num>/<page_number:num>')->to('book#author')->name('author');
|
||||
$r->post('/preferences')->to('auth#preferences')->name('preferences');
|
||||
|
||||
# Put a route under athentication.
|
||||
my $auth = $r->under(
|
||||
'/' => sub ($c) {
|
||||
return 1 if ($c->logname);
|
||||
$c->flash('naughty' => 1);
|
||||
$c->session('post_login' => $c->current_route);
|
||||
$c->redirect_to('auth');
|
||||
return undef;
|
||||
}
|
||||
);
|
||||
$auth->get('/account')->to('auth#account')->name('account');
|
||||
$r->post('/set_rpp')->to('book#set_rpp')->name('set_rpp');
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
package MyApp::Controller::Auth;
|
||||
use Mojo::Base 'Mojolicious::Controller', -signatures;
|
||||
use List::Util qw( min max );
|
||||
|
||||
sub index ($self) {
|
||||
my $msg = $self->flash('err');
|
||||
$self->render(name_msg => $msg);
|
||||
}
|
||||
|
||||
sub login ($self) {
|
||||
my $logname = $self->param('logname');
|
||||
if ($logname =~ m/^[[:alpha:]]+$/) {
|
||||
$self->session(logname => $logname);
|
||||
my $post_login = $self->session('post_login');
|
||||
$self->session('post_login' => undef);
|
||||
$self->redirect_to($post_login || 'home');
|
||||
} else {
|
||||
$self->flash(err => "Try again!");
|
||||
$self->flash(attempted_name => $logname);
|
||||
$self->redirect_to('auth');
|
||||
}
|
||||
}
|
||||
|
||||
sub logout ($self) {
|
||||
# "Delete whole session by setting an expiration date in the past"
|
||||
# - from Mojolicious::Controller.
|
||||
$self->session(expiration => 1);
|
||||
$self->redirect_to('home');
|
||||
}
|
||||
|
||||
sub preferences ($self) {
|
||||
my $rpp = $self->accept_posint($self->param('rows_per_page'));
|
||||
if ((!defined $rpp) || $rpp < 1 || $rpp > $self->max_rpp) {
|
||||
$self->redirect_to('not_found');
|
||||
return
|
||||
}
|
||||
$self->session(rows_per_page => $rpp);
|
||||
$self->flash(
|
||||
confirmation => sprintf("Updated rows per page to %s.", $self->rpp)
|
||||
);
|
||||
$self->redirect_to($self->param('target_url'));
|
||||
}
|
||||
|
||||
1;
|
|
@ -83,4 +83,17 @@ sub author ($self) {
|
|||
);
|
||||
}
|
||||
|
||||
sub set_rpp ($self) {
|
||||
my $rpp = $self->accept_posint($self->param('rows_per_page'));
|
||||
if ((!defined $rpp) || $rpp < 1 || $rpp > $self->max_rpp) {
|
||||
$self->redirect_to('not_found');
|
||||
return
|
||||
}
|
||||
$self->session(rows_per_page => $rpp);
|
||||
$self->flash(
|
||||
confirmation => sprintf("Updated rows per page to %s.", $self->rpp)
|
||||
);
|
||||
$self->redirect_to($self->param('target_url'));
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
% layout 'default';
|
||||
% title 'Account';
|
||||
<h1><%= logname %>'s account on MyApp</h1>
|
||||
|
||||
%= form_for preferences => begin
|
||||
%= label_for rows_per_page => 'Rows per page'
|
||||
<%= number_field rows_per_page => $c->rpp,
|
||||
min => 1, max => max_rpp, maxlength => 4, size => 4 %>
|
||||
%= submit_button "Update"
|
||||
% end
|
||||
<p/>
|
||||
%= flash('confirmation')
|
|
@ -1,14 +0,0 @@
|
|||
% layout 'default';
|
||||
% title 'Auth';
|
||||
<h1>Auth page</h1>
|
||||
|
||||
<%= "Login to reach " . session('post_login') . " page." if flash('naughty') %>
|
||||
<%= $name_msg %>
|
||||
<p/>
|
||||
<div>
|
||||
%= form_for login => begin
|
||||
%= label_for logname => 'Name (only letters, please)'
|
||||
%= text_field logname => flash('attempted_name')
|
||||
%= submit_button "Login"
|
||||
% end
|
||||
</div>
|
|
@ -19,7 +19,7 @@
|
|||
<%= link_to("Login" => 'auth') %>
|
||||
<% } %>
|
||||
|
||||
%= form_for preferences => begin
|
||||
%= form_for set_rpp => begin
|
||||
<%= hidden_field target_url => url_with('current') %>
|
||||
%= label_for rows_per_page => 'Rows per page'
|
||||
<%= number_field rows_per_page => $c->rpp,
|
||||
|
|
Loading…
Reference in New Issue