[#56] Support API call to /login
This commit is contained in:
@@ -33,6 +33,7 @@ get qr{^/(?:login(?:/denied)?)?} => sub {
|
||||
|
||||
# override default login_handler so we can log access in the database
|
||||
post '/login' => sub {
|
||||
my $mode = (request->is_ajax ? 'API' : 'Web');
|
||||
my ($success, $realm) = authenticate_user(
|
||||
params->{username}, params->{password}
|
||||
);
|
||||
@@ -44,22 +45,30 @@ post '/login' => sub {
|
||||
schema('netdisco')->resultset('UserLog')->create({
|
||||
username => session('logged_in_user'),
|
||||
userip => request->remote_address,
|
||||
event => "Login",
|
||||
event => "Login ($mode)",
|
||||
details => params->{return_url},
|
||||
});
|
||||
|
||||
return if request->is_ajax;
|
||||
redirect params->{return_url} || uri_for('/');
|
||||
}
|
||||
else {
|
||||
session->destroy;
|
||||
|
||||
schema('netdisco')->resultset('UserLog')->create({
|
||||
username => params->{username},
|
||||
userip => request->remote_address,
|
||||
event => "Login Failure",
|
||||
event => "Login Failure ($mode)",
|
||||
details => params->{return_url},
|
||||
});
|
||||
|
||||
vars->{login_failed}++;
|
||||
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
|
||||
if (request->is_ajax) {
|
||||
status('unauthorized');
|
||||
}
|
||||
else {
|
||||
vars->{login_failed}++;
|
||||
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user