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;