[#56] Support API call to /login

This commit is contained in:
Oliver Gorwits
2014-02-08 20:35:24 +00:00
parent 0286b046f2
commit 44e35fd316
3 changed files with 17 additions and 7 deletions

View File

@@ -6,6 +6,7 @@
* [#74] Device Name / DNS mismatches report
* [#71] Node search by date (but not time)
* [#73] NetBIOS Poller - nbtstat and nbtwalk
* [#56] Support API call to /login
[ENHANCEMENTS]

View File

@@ -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,23 +45,31 @@ 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},
});
if (request->is_ajax) {
status('unauthorized');
}
else {
vars->{login_failed}++;
forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' };
}
}
};
# we override the default login_handler, so logout has to be handled as well

View File

@@ -28,9 +28,9 @@ safe_password_store: true
# ```````````````````````````````````````````````````````
#domain_suffix: '.example.com'
# uncomment and set to true to globally disable authentication/login,
# and also create a user called "guest".
# ```````````````````````````````````````````````````````````````````
# uncomment and set to true to globally disable authentication/loginr.
# create a user called "guest" if you want to assign port/admin rights.
# `````````````````````````````````````````````````````````````````````
#no_auth: false
# SNMP community string(s)