Created
January 13, 2018 12:58
-
-
Save anonymous/91d14f49f19d411c1bb0e2bcfba4dc7f to your computer and use it in GitHub Desktop.
├── lib │ ├── MyApp │ │ ├── Controller │ │ │ └── Login.pm │ │ ├── Model │ │ │ └── Users.pm │ │ └── View │ │ └── Login.pm │ └── MyApp.pm ├── script │ └── my_app ├── t │ └── login.t
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package MyApp::Controller::Login; | |
use Mojo::Base 'Mojolicious::Controller'; | |
#All Mojolicious::Controller controllers are plain old Perl classes and get instantiated on demand. | |
#Templates are our views, and usually bound to controllers, so they need to be moved into the appropriate directories. | |
sub index { | |
my $self = shift; | |
my $user = $self->param('user') || ''; | |
my $pass = $self->param('pass') || ''; | |
return $self->render(text => $self->views->index($user)) unless $self->users->check($user, $pass); | |
$self->session(user => $user); | |
$self->flash(message => 'Thanks for logging in.'); | |
$self->redirect_to('protected'); | |
} | |
sub protected { | |
my $self = shift; | |
$self->render(text => $self->views->protected($self->session('user'),$self->flash('message'),$self->url_for('logout') )); | |
} | |
sub logged_in { | |
my $self = shift; | |
return 1 if $self->session('user'); | |
$self->redirect_to('index'); | |
return undef; | |
} | |
sub logout { | |
my $self = shift; | |
$self->session(expires => 1); | |
$self->redirect_to('index'); | |
} | |
1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
├── lib | |
│ ├── MyApp | |
│ │ ├── Controller | |
│ │ │ └── Login.pm | |
│ │ ├── Model | |
│ │ │ └── Users.pm | |
│ │ └── View | |
│ │ └── Login.pm | |
│ └── MyApp.pm | |
├── script | |
│ └── my_app | |
├── t | |
│ └── login.t |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package MyApp::View::Login; | |
sub new { | |
my ($class) = @_; | |
my $self={}; | |
bless $self,$class; | |
return $self; | |
} | |
sub index { | |
my ($self,$user) = @_; | |
my $msg=($user)?'<b>Wrong name or password, please try again.</b><br>':''; | |
my $body=<<"____END"; | |
<form action="/" method="post"><br> | |
$msg | |
Name: | |
<br> | |
<input name="user" type="text"> | |
<br> | |
Password: | |
<br> | |
<input name="pass" type="password"> | |
<br> | |
<input value="Login" type="submit"> | |
</form> | |
____END | |
return $self->defaultLayout($body); | |
} | |
sub protected { | |
my ($self,$user,$message,$url) = @_; | |
my $msg=($message)?"<b>$message</b><br>":""; | |
my $body=<<"____END"; | |
$msg | |
Welcome $user.<br> | |
<a href="$url">logout</a> | |
____END | |
return $self->defaultLayout($body); | |
} | |
sub defaultLayout { | |
my ($self,$content) = @_; | |
my $html=<<"____END"; | |
<!DOCTYPE html> | |
<html> | |
<head><title>Login Manager</title></head> | |
<body> | |
$content | |
</body> | |
</html> | |
____END | |
return $html; | |
} | |
1; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment