|
Luc Didry |
25ab7e |
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
|
Luc Didry |
25ab7e |
package Lufi::Controller::Auth;
|
|
Luc Didry |
25ab7e |
use Mojo::Base 'Mojolicious::Controller';
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
25ab7e |
sub login_page {
|
|
Luc Didry |
25ab7e |
my $c = shift;
|
|
Luc Didry |
3e3e84 |
my $redirect = $c->param('redirect') // '/';
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
25ab7e |
if ($c->is_user_authenticated) {
|
|
Luc Didry |
3e3e84 |
$c->redirect_to('/');
|
|
Luc Didry |
25ab7e |
} else {
|
|
mildis |
537764 |
if ($c->config('auth_headers')) {
|
|
mildis |
537764 |
if($c->authenticate('dummy', 'dummy')) {
|
|
mildis |
537764 |
if ($redirect eq 'invite') {
|
|
mildis |
537764 |
return $c->redirect_to('invite');
|
|
mildis |
537764 |
} elsif ($redirect eq 'my_invitations') {
|
|
mildis |
537764 |
return $c->redirect_to('invite_list');
|
|
mildis |
537764 |
}
|
|
mildis |
537764 |
return $c->redirect_to('/');
|
|
mildis |
537764 |
}
|
|
mildis |
537764 |
} else {
|
|
mildis |
537764 |
$c->render(
|
|
mildis |
537764 |
template => 'login',
|
|
mildis |
537764 |
redirect => $redirect
|
|
mildis |
537764 |
);
|
|
mildis |
537764 |
}
|
|
Luc Didry |
25ab7e |
}
|
|
Luc Didry |
25ab7e |
}
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
25ab7e |
sub login {
|
|
Luc Didry |
25ab7e |
my $c = shift;
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
8b68d7 |
my $login = $c->param('login');
|
|
Luc Didry |
8b68d7 |
my $pwd = $c->param('password');
|
|
Luc Didry |
3e3e84 |
my $redirect = $c->param('redirect') // '/';
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
548f83 |
if ($c->validation->csrf_protect->has_error('csrf_token')) {
|
|
Luc Didry |
548f83 |
$c->stash(msg => $c->l('Bad CSRF token.'));
|
|
Luc Didry |
25ab7e |
$c->render(template => 'login');
|
|
Luc Didry |
548f83 |
} else {
|
|
Luc Didry |
548f83 |
if($c->authenticate($login, $pwd)) {
|
|
Luc Didry |
8b68d7 |
if ($redirect eq 'invite') {
|
|
Luc Didry |
8b68d7 |
return $c->redirect_to('invite');
|
|
Luc Didry |
8b68d7 |
} elsif ($redirect eq 'my_invitations') {
|
|
Luc Didry |
8b68d7 |
return $c->redirect_to('invite_list');
|
|
Luc Didry |
8b68d7 |
}
|
|
Luc Didry |
3e3e84 |
return $c->redirect_to('/');
|
|
Luc Didry |
548f83 |
} else {
|
|
Luc Didry |
548f83 |
$c->stash(msg => $c->l('Please, check your credentials or your right to access this service: unable to authenticate.'));
|
|
Luc Didry |
548f83 |
$c->render(template => 'login');
|
|
Luc Didry |
548f83 |
}
|
|
Luc Didry |
25ab7e |
}
|
|
Luc Didry |
25ab7e |
}
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
e41b08 |
sub log_out {
|
|
Luc Didry |
25ab7e |
my $c = shift;
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
25ab7e |
if ($c->is_user_authenticated) {
|
|
Luc Didry |
da7cb6 |
if ($c->validation->csrf_protect->has_error('csrf_token')) {
|
|
Luc Didry |
da7cb6 |
$c->stash(msg => $c->l('Bad CSRF token.'));
|
|
Luc Didry |
da7cb6 |
} else {
|
|
Luc Didry |
da7cb6 |
$c->logout;
|
|
Luc Didry |
da7cb6 |
}
|
|
Luc Didry |
25ab7e |
}
|
|
mildis |
934836 |
|
|
mildis |
934836 |
if ($c->config('logout_custom')) {
|
|
mildis |
934836 |
return $c->redirect_to($c->config('logout_custom'));
|
|
mildis |
934836 |
} else {
|
|
mildis |
934836 |
$c->render(template => 'logout');
|
|
mildis |
934836 |
}
|
|
Luc Didry |
25ab7e |
}
|
|
Luc Didry |
25ab7e |
|
|
Luc Didry |
25ab7e |
1;
|